1

私は2-D行列Aに最適化に制約を追加するには?

  A= [0 f1 0 f2] 
       [f3 f3 0 0] 
       ......... 

を持っていると私は私が記入しなければならない他の2-D行列Bを持つ最適化問題を定式化に取り組んでいます。 A_ij = 0(Aの要素)の場合はb_ij(Bの要素)を0にする必要があり、a_ijがゼロでない場合はb_ijを0より大きくa_ijより小さくする必要があります。

私はこれを私の処方でどのように表現できますか?私はこの制約/条件を追加しました:

  b_ij<=a_ij 

しかし、これはa_ijがゼロでないときb_ijがゼロと等しくないと述べている条件を満たしていません。どんな助け?

答えて

0

すべての要素が正である場合、要素比較によって要素の操作を行って、各行列の最小要素を保持:条件が応答されたかどうかを示す論理行列を作成、

あるいは
B2 = min(A,B) 

とで要素ごとに乗算マトリックスB、唯一の条件を満足する要素が他はゼロに設定され、残る:

B = B.*(A~=0) 

より小さい又はの要素に等しいBの要素を保ちますそれ以外の場合はAの値に置き換えます。

B = B.*(B<=A) + A.*(B>A)) 

このオプションを使用すると、制約を一般化できます。

a_ijの要素がゼロより大きい場合、b_ijの必要な要素は0より大きくなるように指定します。オプションmaxを使用して、Bのすべての要素が確実に陽性であるようにすることです。

B = max(1e-2,B); % exact value is yours to set. 

この手順はあなた次第であり、問​​題によって異なります。

0

あなたはaは(定数)のデータであれば、これは簡単です意味合い

a = 0 => b = 0 
a <> 0 => 0 < b <= a 

を実装したいです。 aが変数の場合は、それほど簡単ではありません。

これはaを意味

b <= a 

としてあなたは非負である意味合いの一部を実装:a>=0。また、bは非負であることを意味します。残りの意味合いa>0 => b>0は今

a <= δ * 1000 
b >= δ/1000 
δ in {0,1} 

多くのMIPソルバーのサポート指標の制約として実装することができます。それで、あなたは言うことができます:

δ = 0 -> a = 0 
δ = 1 -> b >= 0.001 
δ in {0,1} 
関連する問題