.. -*- coding: utf-8 -*- 定数 ---- 現在は,モデル中に油田運転コストの値を直接記述しています. これを変更し,外部から任意の値を与えてみましょう.まず,定式化を以下のように変更します. ------------------------------------------------------------- .. math:: \begin{array}{ll} \bf{目的関数} \\ \hline costX \cdot x + costY \cdot y & 運転コスト/週 \\ \hline \\ \bf{定数} \\ \hline costX & 油田Xの運転コスト/日 \\ \hline costY & 油田Yの運転コスト/日 \\ \hline \end{array} ------------------------------------------------------------- :math:`costX`, :math:`costY` はそれぞれ油田 X, Y の運転コスト/日を表す定数です. PySIMPLE では,このような定数を使用した記述が可能です. ここでは,定数を用いて,運転コストを以下のように変更します.:: from pysimple import Problem, Variable ↓ :: from pysimple import Problem, Variable, Parameter :: problem += 180*x + 160*y, '全運転コスト' ↓ :: costX = Parameter(value=180, name='油田Xの運転コスト') costY = Parameter(value=160, name='油田Yの運転コスト') problem += costX*x + costY*y, '全運転コスト' まず,Parameter で定数を宣言します.モデル中で使用する定数は,使用する前に宣言する必要があります. ``value=..`` には定数の値を指定します. ``name='..'`` には定数の名前を指定しますが省略可能です. 今回のモデルでは添字がないので Parameter を用いずに記述しても構いません.:: costX = 180 costY = 160 problem += costX*x + costY*y, '全運転コスト' では,実行してみます(実行方法については `how_to_solve` を参照してください). 最適化経過の出力の後,次のような実行結果が得られます.:: 油田Xの運転日数.val=1.500000000256067 油田Yの運転日数.val=2.9999999999710107 全運転コスト.val=750.0000000414537 前回と同じ結果が得られています. Parameter を使用することで,データの変更のみで違う問題を解くことができます. では,データを変更して実行してみましょう.以下のようにデータを変更します.:: costX = Parameter(value=100, name='油田Xの運転コスト') costY = Parameter(value=170, name='油田Yの運転コスト') 実行すると,以下の結果が得られます.:: 油田Xの運転日数.val=4.99999999387777 油田Yの運転日数.val=0.6666666712283269 全運転コスト.val=613.3333334965926 また,このモデルは PySIMPLE のサンプルとして同梱されています. このサンプルを実行するには次のようにします.:: $ python -m pysimple.sample.tutorial oil2