1

私は現在、オペレーションズ・リサーチを研究しています。モデルを LP モデルとして定式化する必要がありました。

目的関数は

y = ( ai * C1i + bi * C2i)
        ,where ai = max(0, xi - Ti) ; bi = max(0, Ti - xi)

これはスケジュールの問題です。xi はジョブ i の予定時刻の決定変数であり、Ti はジョブ i の最適な時刻です。早いまたは遅い時間単位ごとにペナルティ コストがかかります。C1i と C2i は単位あたりのペナルティ コストです。

ジョブ i がジョブ i の最適時刻 Ti よりも前に開始された場合、ペナルティ コストは次のようになります。

 bi * C2i.

ジョブ i がジョブ i の最適時間 Ti の後に開始された場合、ペナルティは次のようになります。

ai * C1i.

定式化中に、Lingo または Cplex で max(,) 関数を使用するのが難しいことがわかりました。実際、プログラムには max(,) 関数はありません。タスクが Ti より前に開始された場合、ai = xi- Ti は負になります。bi = Ti - xiポジティブになります。「負の場合、値が0に変わる」という変換方法が思いつきません。

以下の関数で目的を定式化することは可能ですか?

 y = ( ai * C1i*yi + bi * C2i*(1-yi))

if Ti - xi >= 0(ジョブ i の最適な時間の前に開始)、yi = 1 そうでない場合、yi =0.

しかし、LPモデルで上記のif-then文をどのように定式化できますか?

ありがとう!

4

1 に答える 1

1

質問を解析するのは少し難しいですが、あなたが求めているのは次のようなものだと思います:

ここに画像の説明を入力

実際、これは重複した質問hereで提案されました。(申し訳ありませんが、その質問は削除されました)。

于 2016-02-21T22:04:47.267 に答える