2016-12-07 12 views
2

私はPythonのPuLPでIf-Then-Else-If ...条件を設定しようとしています。If-Then-ElseIf-Then混合整数のリニアプログラミング

私はとIf-Then-ElseをMIPで見ました。 しかし、私は選択肢を次の制約のセットにさらに伝播させる方法と、2つ以上の決定ブランチを処理する方法を理解しようとしています。

image shown hereに示す条件制約を検討し、説明すること:

xとyは私の決定変数です。私はシンプルされたif-then-else状況のため、 "ビッグM" 技術を使用する方法を知って

if x=0: C2>0 
elif x=1: C10>0 
elif x=2: C3>0 

if x=0 and y=0: 
    C4>0; 
    C8>0; 
    C10>0 
elif x=0 and y=1: 
    C5>0; 
    C8>0; 
    C10>0 
elif x=2 and y=0: 
    C6>0; 
    C9>0; 
    C10>0 
elif x=2 and y=1: 
    C7>0; 
    C9>0; 
    C10>0 

:として は基本的に、これは読み込みます。問題だったのであれば、たとえば、:2つの以上の支店があるなら、それはともはや乗算ませんので、

  1. Problem: 
        if (x = 1) then (A < 0) else (B < 0) 
    Solution: 
        problem += A < M1*(1-x) 
        problem += B < M2*x 
    

    私は理解していないことで、どのようにこれを変更するにはxおよび(1-x)を含む。

  2. 元の決定の下に後続の分岐があり、すべてが上の値に依存するより多くの決定がある場合。彼らは代わりに、{0,1,2}でのバイナリになるよう

    x変数を再定式:

    FIRST:

答えて

3

は本当にここに関わる三つのステップがあります。 (厳密に言えば、これは必要ありませんが、私はそれが一般化するソリューションクリーナーを行い、より簡単だと思います。)

ので、3つの新しいバイナリ変数x0x1x2を紹介し、それらを次のように制約:

x0 >= 1 - x 
x0 <= 1 - 0.5x 

x2 >= x - 1 
x2 <= 0.5 x 

x1 = x - 2x2 

So:x = 0の場合、最初の2つの制約にはx0 = 1が必要で、2番目の2つにはx2 = 0が必要で、最後にx1 = 0が必要です。同様にx = 1またはx = 2の場合も同様です。 (私のロジックを再確認する必要があります)

モデルにはオリジナルのx変数と新しいバイナリ変数が含まれます。

SECOND:

kiため、x2 = kx1 = jx0 = i場合、及びy = l 1に等しい、w_ijklを言う、{0,1}でljと呼ばれる新しいバイナリ決定変数を作成します。次の制約によって、この定義を適用する:

w_ijkl >= i*x0 + (1-i)*(1-x0) + j*x1 + (1-j)*(1-x1) + 
      k*x2 + (1-k)*(1-x2) + l*y + (1-l)*(1-y) - 3 
w_ijkl <= 0.25 * [i*x0 + (1-i)*(1-x0) + j*x1 + (1-j)*(1-x1) + 
        k*x2 + (1-k)*(1-x2) + l*y + (1-l)*(1-y)] 

第1の制約は、すべての4つの変数は、(などij、)その標的に等しいならば、w_ijkl 1に等しくなければならない、そしてそれ以外の場合は0を等しくすることができると述べています。

w_0110 >= 1-x0 + x1 + x2 + (1-y) - 3 
w_0110 <= 0.25 * [1-x0 + x1 + x2 + (1-y)] 

THIRD:

第2の制約は、すべての4つの等しいその標的場合、 w_ijklは、1等しくすることができるそれ以外の場合は、だから、0

等しくなければならないと言う、例えば、w_0110は、これらの制約を取得します

big-Mを使用して、制約をオンまたはオフにします。したがって、たとえば、x=2場合とy=0、使用C6 >= 0を必要とする:

C6 >= M * (w_0010 - 1) 

(ちなみに、一般的に、あなたはMIPに厳格な不等式制約を使用することはできません - あなたはより大 - または - を必要とします等しいかそれより小さいかの制約)。

関連する問題