私はこの問題を昨日から苦労しています。私は自分の最適化モデルにproc optmodelを使用しています。私は自分の変数に条件を持っています。私は、変数A1とA2にあり、A1でもあるので、制約がSASのoptmodel変数の条件
A1 = A2 if A1<0
A1 >= A2 if A1>0
ているよう変数SASは私が私の制約で条件を置くことはできません。
var A1[C_C];
var A1[C_C];
Con test {<C1,C2> in C_C: A1[C1,C2]<0}:
A2 [C1,C2] =A1[C1,C2];
Con test {<C1,C2> in C_C: A1[C1,C2]>0}:
A2[C1,C2] <= A1[C1,C2];
と私は、この後に取得するエラーは、次のとおりです:私はこれをやっている「変数は、式の中で使用することはできません」 誰もがこのことについて考えを持っています。私はすでに多くを検索しましたが、何も見つかりませんでした。
これは、問題を非線形に(そして多少厄介な形で、微分不可能に)します。いくつかの努力を払って、バイナリ変数の追加によってこれを線形にすることは可能です。次に、混合整数計画ソルバを使用する必要があります。 –
私は2行目が 'var A2 [C_C]'だと思います。また、制約ラベル 'test'を繰り返すこともできません。 – Leo
完全な答えを出すには、もう少し文脈が必要です。 A1とA2は目的にどのように貢献するのですか?あなたはA1かA2の境界を持っていますか?たとえば、 'num a1_lb { in C_C} 'の式を書いたり、データを読み込んだりできますか?非線形性を避けるには、おそらくbigMまたはreify述部が必要です。 –
Leo