簡體   English   中英

具有邏輯 function 和排他條件的優化問題的 MIP/MIQP 求解器

[英]MIP/MIQP Solver for an optimization problem with a logical function and exclusive conditions

我有以下問題:

Maximize: F1(I1) + F2(I2) + F3(I3)

Subject to:
   I1 in [min1, max1] U 0
   I2 in [min2, max2] U 0
   I3 in [min3, max3] U 0
   
   I1 + I2 + I3 <= Constant

   Exclusive condition: When I1 > 0 I2 must be zero and vice-versa.
   An arbitrary number of exclusive conditions may be provided.

Where:
   F1(x) = {
      0.15 x if x in [min1, min1 + 100]
      0.1  x if x in [min1 + 101, min1 + 200]
      0.05 x if x in [min1 + 201, max]
   }

   The ranges and quotients for x are arbitrary and provided as a
   part of the optimization problem.

我在排他條件和邏輯 function 上苦苦掙扎,我沒有找到任何能夠處理這種情況的求解器。

有沒有能夠處理這種優化的求解器?

PS 我有一個強烈的印象,這根本不屬於 MIP/MQP 域。

我們這里有三個概念:

  1. 半連續變量
  2. 互補約束
  3. 目標中的分段線性函數

我將在下面討論所有這些。

第一個約束:

 x ∈ [L,U] ∪ {0}

通常被描述為 x 是一個半連續變量 許多求解器對此有直接支持。 如果不是,您可以使用二進制變量 δ:

 δ⋅L ≤ x ≤ δ⋅U
 δ ∈ {0,1}

第二個約束

 x*y = 0

是一個非凸二次約束。 這有時稱為互補性約束 一些求解器可以直接處理這個問題。 我們還可以使用指標約束或二元變量。 例如,我們可以使用與以前相同的二進制變量:

 δ(i)⋅L(i) ≤ x(i) ≤ δ(i)⋅U(i)   # all x(i) are semi-continuous
 δ(1) + δ(2) ≤ 1               # x(1)*x(2) = 0 
 δ(i) ∈ {0,1}
 (Assumed:L(i) > 0 or U(i) < 0). 

最后一件事( F1(x) )只是一個分段線性 function 這可以通過多種方式實現。 一些求解器為此提供了特殊功能。 否則,最簡單的方法是使用所謂的 SOS2 集。 許多求解器都支持這些。 參見例如: https://yetanothermathprogrammingconsultant.blogspot.com/2019/02/piecewise-linear-functions-and.html 可以在以下位置找到一個很好的解釋: https://www.amazon.com/Model-Building-Mathematical-Programming-Williams/dp/1118443330

結論:稍加努力,這可以以線性方式編寫。 精確的實現很大程度上取決於所使用的建模工具或求解器。 有關更多信息,請參閱這些文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM