問題タブ [scip]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scip - SCIP と python-zibopt を Windows で動作させることは可能ですか?
最近、CPLEX の代わりにいくつかのオープン ソース ソルバーを試してみたいと思っています。PICOS + zibopt が良い選択かもしれません。ただし、ウィンドウの下で python を使用して zibopt を適切に動作させる方法についての説明を見つけることしかできません。scip の Windows ライブラリ (.dll ファイル) をダウンロードし、コマンド「python setup.py install」に従って python-zibopt をインストールしようとします。「blockmemshell/memory.h no such file」というエラーが常に発生しました。VS120COMNTOOL である私のコンパイラが scip ソルバーを見つけられないためだと感じました。Windows で scip を動作させる可能性はありますか?
scip - IPOPT を使用した TSP のビルド例
非線形問題の緩和ハンドラーを開発しようとしています。TSP の例を取り上げて、それを修正したいと思います。まず、ipopt を使用して TSP 問題を構築します。
scipoptsuite 3.1.0 と Ipopt 3.11.9 をダウンロードしました。私は ipopt で scip をビルドしました。また、TSP の例をその標準の makefile からビルドしました。ただし、TSP の例の標準の makefile は、ipopt サポートを使用してビルドしません。
IPOPT をサポートする TSP サンプルをビルドするにはどうすればよいですか?
ありがとうございました
2014 年 10 月 31 日更新:
だから私は IPOPT=true を試してみました。動作しているように見えますが、実行時に問題があります。そして今、私は迷っています。
発信者名:
何をするべきだと言っているのですか:
2014 年 11 月 4 日の更新:
そのため、IPOPT を使用して TSP を構築する方法がわかりませんでした。私の目標は、IPOT を使用するプラグインを追加することでした。TSP コードから開始するよりも、クリーンなサンプル フォルダーから開始する方が簡単であることがわかりました。TSP makefile を IPOP でビルドする方法をまだ理解していません。scip makefile システムは理解しにくいものです。
IPOPT を使用するプラグインを追加する方法: 0) bison と yacc がパスにあることを確認します 1) scipoptsuite-3.1.0 で、make READLINE=false IPOPT=true ZIMPL=false VERBOSE=true を実行します 3) 出力を保存します。o ファイルの作成方法とメインの exe ファイルの作成方法に注意してください。4) これらの g++ コマンドを scip-3.1.0 の bash スクリプトに保存/変更し、開発時にこれを実行します。
これ
scip - SCIP 構文エラーの解決
Q 行列が半正定値 (PSD) ではないため、gurobi がエラーを返すという小さな問題があります。
gurobi によって生成された '.lp' を使用して、SCIP がこのモデルを解決できるかどうかを確認してみます。コンパイル済みのバイナリで「scip-3.1.0.win.x86_64.msvc.opt.spx.ld」バージョンを使用しています。残念ながら、SCIPは戻ってきます
私の質問は次のとおりです。(a) このエラーの原因とそれを克服する方法についての手がかりはありますか?
(b) たとえば、このエラーが修正された場合、SCIP はこの制約を自動的に線形化しますか? これは凸モデルですが、二次円錐ではありません。SCIP は外部近似 (またはその他の方法) でそれを緩和しますか?
(c) そうでない場合、それが gurobi の生成されたフォーマットによって制限される場合、SCIP が解決できるように私がすぐに記述できるモデリング言語をお勧めしますか?
scip - ノードの下限と上限を更新する方法
新しい scip 緩和ハンドラーを作成しようとしています。ノードごとに、その下限と上限を自分が思いついた値で更新したいと考えています。次に、scip が解決プロセスでこれらのより良い境界を自然に使用するようにします。しかし、私は奇妙な結果を得ています。
私の質問は、ブランチ アンド バウンドで現在のノードの下限と上限を更新するにはどうすればよいですか?
リレーション ハンドラ内には、次のデバッグ コードがあります。
出力は
scip ステージ 9 は SCIP_STAGE_SOLVING で、良さそうです。
「scip」のある行は、ノードに対する scip の境界です。「my b」のある中央の行は、私の新しい境界を表します。
SCIPupdateLocalLowerbound(scip, -10)
現在の下限が -1e14 であるときに呼び出しているため、その呼び出しの後、新しい下限は 10 になるはずです。ただし、下限は 1e20 に変更され、これは大きなエラーです。
SCIPupdateLocalLowerbound(scip, -10);
私はそれがSCIPgetLocalLowerbound(scip)
リターンで-10
はないと期待してい1e20
ます。私は何を間違っていますか?
また、 という関数が表示されないSCIPupdateLocalUpperbound()
ので、ノードの上限を更新するにはどうすればよいですか?
EDIT 2015/03/13 scip のその部分を説明してくれてありがとう。1 つ小さな質問が残っています。
完全を期すために、ローカル ノードの最小化問題の下限を次のように設定しています。
そして、最小化問題のグローバルな上限を次のように設定しています
SCIPprimalSetUpperbound の 2 番目のパラメーターは、
そして、scip->mem で見つけた blkmem を渡しています。これは正しいですか、それとも他のクリーンなブロック メモリを渡す必要がありますか? 重要なものを上書きしていますか?
編集 2015/03/19
目的関数を設定するときの出力がわかりません。(私にとって) 注意点として、元のマスター問題は最大化問題であり、scip の変換された問題は最小化です。の結果を見てみると
出力は次のとおりです。
したがって、このノードの最小値に対する scip の境界は -1.10142e+08 <= 100000 であり、このノードの最小値に対する私の境界は -1.37597e+08 <= 2.11197e+08 であり、この場合はさらに悪化します。
なぜ SCIPgetObjlimit = -1.97183e+08 なのですか? -100000 でないのはなぜですか? 100000 が変換された空間 (最小化) の現在の上限である場合、-100000 が元の問題の現在のグローバルな下限です。