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