数理最適化セミナーのご案内

2.8 デバッグ出力関数

 数理最適化モデルが複雑になるほど,些細な記述ミスでも発見が困難になっていきます.そのようなミスを修正するための支援関数としてshowSystem()があります.showSystem()は,目的関数・制約式を実際のモデル内容に展開して出力します.

 以下のように,showSystem()を最適化計算solve()の直前に挿入してみます.

showSystem();
solve();

 上記の位置に記述すれば,最適化計算を行うモデルの内容が出力できます.これを実行すると,showSystem()に対応した出力が以下のように得られます.

1-1 (sample.smp:26): 6*油田の運転日数[0]+油田の運転日数[1] >= 12
1-2 (sample.smp:26): 4*油田の運転日数[0]+6*油田の運転日数[1] >= 24
2-1 (sample.smp:29): 0 <= 油田の運転日数[0] <= 5
2-2 (sample.smp:29): 0 <= 油田の運転日数[1] <= 5
objective (sample.smp:23 name="全運転コスト"): 180*油田の運転日数[0]+160*油田の運転日数[1] (minimize) 

 1-1, 1-2は次のノルマ制約式に対応しています.

prod[j] >= norma[j];

 2-1, 2-2は次の日数制約式に対応しています.

0 <= x[i] <= 5;

 objectiveは,次のコスト定義式に対応しています.

cost = sum(costX[i] * x[i], i);

 このように,showSystem()を使用することによって,定数値,添字等を実際の値に置き換えた後の目的関数・制約式を確認することができます.この機能を利用すれば,意図しない記述ミスを簡単に発見することができ,効率の良いモデル記述が可能になります.


 

 

上に戻る