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