2.2 定数
現在は,モデル中に油田運転コストの値を直接記述しています.これを変更し,外部から任意の値を与えてみましょう.まず,定式化を以下のように変更します.
目的関数 | |
運転コスト/週 | |
定数 | |
油田Xの運転コスト/日 | |
油田Yの運転コスト/日 |
,
はそれぞれ油田X, Yの運転コスト/日を表す定数です.C++SIMPLEでは,このような定数を使用した記述が可能です.
ここでは,定数を用いて,運転コストを以下のように変更します.
cost = 180 * x + 160 * y;
↓
Parameter costX(name="油田Xの運転コスト"); Parameter costY(name="油田Yの運転コスト"); cost = costX * x + costY * y;
まず,Parameter
で定数を宣言します.モデル中で使用する定数は,使用する前に宣言する必要があります.定数の値は,モデル中で定義せず外部からデータファイルで与えます.変数,目的関数の宣言と同様に,name = "..."
には,定数名を指定します.定数名は,データファイル中のデータとの対応付けに使用されます.
次にモデルに定数を与えるために,以下のデータファイルを作成します.以下のデータファイルの拡張子は.dat
となります.
"油田Xの運転コスト" = 180; "油田Yの運転コスト" = 160;
=
の左辺には,宣言時のname = "..."
で与えたパラメータ名を記述します.右辺には,定数値を記述します.セミコロン;
が定数データの区切りになります.データファイル中の"..."
内にないスペース,改行,タブは無視されます.
では,上記データファイルを入力として,実行してみます(実行方法については「3.1利用方法」を参照してください).
最適化経過の出力の後,次のような実行結果が得られます.
油田Xの運転日数=1.5 油田Yの運転日数=3 全運転コスト=750
前回と同じ結果が得られています.Parameter
とデータファイルを使用することで,データファイルの変更のみで違う問題を解くことができます.
では,データファイルを変更して実行してみましょう.以下のようにデータファイルを変更します.
"油田Xの運転コスト" = 100; "油田Yの運転コスト" = 170;
実行すると,以下の結果が得られます.
油田Xの運転日数=5 油田Yの運転日数=0.666667 全運転コスト=613.333
上に戻る