2.2.5. 式¶
ここでは,これまでの結果出力(油田運転日数/週,全運転コスト)に加えて,各製品の生産量/週も出力してみます.
\[\begin{split}\begin{array}{ll}
\hline
prod_j = \displaystyle\sum_{i \in OilField}{prodX_{i,j} \cdot x_i}, \forall j \in Product
& 製品jの生産量/週 \\ \hline
\end{array}\end{split}\]
この式に対応する PySIMPLE の記述は,以下のようになります.:
prod = Sum(prodX[i,j]*x[i], i)
prod.name = '製品の生産量'
PySIMPLE では式は宣言なしに扱うことができます. name 属性は自動で与えられますが,上記のようにして変更することもできます. また,index も自動で与えられます.上記の場合,i で和をとっているので prod の index は j となります.
次に生産ノルマの記述を見てみます.:
problem += Sum(prodX[i,j]*x[i], i) >= norma[j], '製品ノルマ'
左辺は先ほど定義した prod と全く同じ内容ですので,以下のように左辺を prod に置き換えることができます.
problem += prod >= norma[j], '製品ノルマ'
prod は単なる置き換えなので,上記のように添字を用いなくても構いませんが,添字を明記することもできます.:
problem += prod[j] >= norma[j], '製品ノルマ'
次に結果出力部分に以下のように prod を追加します.:
print(prod.val)
同様に添字を明記する場合は print(prod[j].val)
と記述してください.
これで,製品の生産量/週が出力されるようになりました.生産量の出力結果は,以下のようになります.:
製品の生産量[重油].val=12.000000001507413
製品の生産量[ガス].val=24.000000000850335
このモデルは PySIMPLE のサンプルとして同梱されています. このサンプルを実行するには次のようにします.:
$ python -m pysimple.sample.tutorial oil5