私は連続変数とバイナリ変数に問題があります。目的関数を作成したら、CPLEXが解決策を見つけることができなくなる制約を追加します。私が間違っていることを教えてください。CPLEXは等価制約付きの解を見つけることを拒否します
IloNumExpr cbin1 = cplex.prod(EB_s[a-1],binHandelSprzedaj[a-1]);
cplex.addEq(EB[a],cbin1);
"binHandelSprzedaj"はバイナリ変数の配列です。 "EB_s"と "EB"は連続cplex float変数の配列です。
"cbin1"の代わりに "EB_s [a-1]"または "binHandelSprzedaj [a-1]"のいずれかを入力するとコードが機能します。私はそれが二次制約で終わるからだと思います。しかし、CPLEXの1つの例では、「QCPex1」は「等しくない」二次制約を持つ解を提示し、コードは私が書いたものと非常によく似ています。なぜ私のコードがうまくいかないのか分かりません。これは、制約が2次であるか、2進変数と連続変数が混在しているか、または「等しい」タイプの制約のためです。
エラーメッセージは、受信:CPLEXエラー5002:目的でQは、私は最適化で大きなnoobのだ
半正定値ではありません。この問題にどう対処しますか?私はCPLEXが私のためにできるだけ多くの数学をしたら(あなたが示唆できるいくつかの魔法のコマンドかもしれない)好むだろう。最終的な形の制約はより複雑なので、単純な変数の緩和(ここではhttp://orinanobworld.blogspot.com/2010/10/binary-variables-and-quadratic-terms.html)は機能しません。次のようになり、完全に定義された問題に制約:
= B + C + D +バイナリ* Fを - (1-バイナリ)* G
- gは連続変数です。
ご協力いただければ幸いです。
ありがとう、これまでのところ:) – t4u