0

私は、matlab の OPTI ツールボックスで SCIP ソルバーを使用して、整数制約のある二次最適化問題を解いています。次の仕様で実行しましたが、1 日実行されており、システムで既に 55 GB の RAM を使用しており、まだカウントされています。私は matlab での最適化に慣れていません。何か間違ったことをしているのですか、それともこれは通常のことですか? maxnodes と maxtime を少なくしてみましたが、その場合、「ノード制限に達しました」というエラーでプログラムが停止します。コードは次のとおりです(H、Aeqなどはコードの前半で定義されています)-

X = sym('X%d%d', [104 1]);
fun = @(X) 1/2*X'*H*X;
options = optiset('solver', 'SCIP', 'maxnodes', 20000000, 'maxtime', 100000);
Opt = opti('fun', fun, 'eq', Aeq, Beq, 'xtype', xtype, 'options', options);
[xval,fval,exitflag,info] = solve(Opt)
4

1 に答える 1

1

二次関数が凸でない場合、これは珍しいことではありません。これは、合理的に限られた時間内に今日のアルゴリズムで証明された最適性を解決することができない困難な問題に簡単につながります。これは問題のサイズに依存するだけでなく、一般的に (同様のタイプの) 小さい問題の方が簡単です。

そうは言っても、SCIP は、時間またはノードの制限を超えた場合でもアクセスできるほぼ最適なソリューションを既に見つけている可能性があります。

于 2015-08-18T10:54:30.607 に答える