数理最適化セミナーのご案内

2.5 式

 ここでは,これまでの結果出力(油田運転日数/週,全運転コスト)に加えて,各製品の生産量/週も出力してみます.

 

 生産量/週は一般的に以下のように記述できます.

$\displaystyle prod_j = \sum_{i \in OilField} prodX_{i,j} \cdot x_i$, $\forall j \in Product$ 製品jの生産量/週

 

 この式に対応するC++SIMPLEの記述は,以下のようになります.

Expression prod(name = "製品の生産量", index = j); // 式の宣言
prod[j] = sum(prodX[i, j] * x[i], i); // 式の定義

 まず,Expressionで式を宣言します.name, indexの指定は,変数宣言時(Variable)と同様に,nameで名前を指定し,indexで添字を指定します.prod[j] = ...で式の内容を定義します.Expressionは,任意の変数を含む式に名前を付けるためのもので,数理最適化問題の変数の数が増加することはありません.

 

 次に生産ノルマの記述を見てみます.

sum(prodX[i, j] * x[i], i) >= norma[j];

 左辺は先ほど定義したprod[j]と全く同じ内容ですので,以下のように左辺をprod[j]に置き換えることができます.

 prod[j] >= norma[j];

 次に結果出力部分に以下のようにprod[j]を追加します.

prod[j].val.print();

 これで,製品の生産量/週が出力されるようになりました.生産量の出力結果は,以下のようになります.

製品の生産量[ガス]=24
製品の生産量[重油]=12

 

 

上に戻る