gurobi+python 備忘録

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

tuneして求めたparamsをそのまま即座に使って最適化する

tuningツールがgurobiにはあって.

 

っていきなり話しても急ですね.

gurobiでは計算するにあたって,いろいろいじれるパラメータがあります.どんな解き方しますか~?みたいなもんです.具体的には,

model.params.~~ = ??

みたいな形で与えます.

で,そのパラメータなるものが膨大にあってわけわからんので,tuning toolというものがあり,

model.tune()

ってやってやると,そのmodelを解くのにいい感じのパラメータの組み合わせをgurobiが求めてくれる,というものでございます.

 

tuningの結果を出力するのに,model.getTuneResult()というメソッドを使います.そしてmodel.write("~~.prm")とやってやると,パラメータの組み合わせが書き込まれたprmファイルを出力してくれるわけです.

 

で,私は誤解してたんですが,このgetTuneResultメソッド,modelにパラメータを反映させる,というものなんですね.

 

これは,パラメータの組み合わせは複数あったりするんですが,そのパラメータの組み合わせのリストのうち何番目をmodelに反映させますか?というものです.

[パラメータの組み合わせ0,パラメータの組み合わせ1,・・・]

みたいなやつの何番目を選びますか?ということです.ちなみに1つめのパラメータの組み合わせが,一番よさそうだったパラメータの組み合わせになります.

というわけで

 

model.getTuneResult(0)としてやれば,一番よさげだったパラメータの組み合わせをmodelに反映させてくれるので,あとはそのままmodel.optimize()してやれば,求まったばかりほやほやのパラメータの組み合わせで計算を開始してくれるわけです.writeしてるのは,あれですね,記念みたいなもんですね.

 

ではまた.