gurobi+python 備忘録

gurobi+pythonを使っていて忘れそうなことや見つけたことをメモります

gurobiでmodelと実行可能解の受け渡し

同じ問題をなんども解くのにいちいち定式化で10分もかかってたらイライラしますね.一度作ったmodelを再利用しましょう.(lpファイル)

混合整数計画問題を解く分枝限定法では,現状一番いい実行可能解(上界)と線形緩和解(下界)の差(Gap)を縮めていきます.実行可能解が初めからわかっていれば大抵計算も早くなるはず.同じような問題なら同じようなbinary変数のパターンでも実行可能でしょうからgurobiさんに「この前の実行可能解はこれだったよ」って教えてあげましょう.(mstファイル,solファイル)

以下おためしコード

LogToConsoleを0に設定したのでmodel1については出力されていないがmodel2については出力されている.lpファイルを見て分かる通り,パラメータは引き継がれない.

solファイルを2回以上読み込むと初期値が巨大になる

gurobiでsolファイルを2回readすると,Start属性がおかしな数字になる

全て同じsolファイルを読み込んでいるが,

 

1度目:モデルm1にsol1.solを読み込み,試しに1つめの変数の初期値を出力

>> 1.0

2度目:モデルm1のコピーm2を作り,それにsol1.solを読み込み1度目と同様の出力

>> 1.0

3度目:モデルm1にもう一度sol1.solを読み込んで同様の出力

>> 1e+101

 

modelオブジェクトに2度solファイルを読み込むと,初期値がおかしくなるのか,初期値の出力がうまくできなくなるのか...

 

原因がわかりませんがsolファイルを何度も読み込むときは別のモデルを作ったほうが安心かもしれません.

 

詳しい方いらっしゃれば教えていただけると嬉しいです.

 

【171218追記】

初期値を与えてもupdateしないといけなかっただけでした.恥ず.巨大な数字は最小化問題のデフォルトの初期値だったんですね.多分.

上のプログラムの続きで

 

modelをupdateしないと初期値はデフォルトのまま.updateはやっぱり忘れがちです.気をつけないと.