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))

如果Ti - xi >= 0(在作业 i 的最佳时间之前开始),则yi = 1 否则,yi =0

但是,如何在 LP 模型中制定上述 if-then-statement?

谢谢!

4

1 回答 1

1

这个问题有点难以解析,但我认为你所追求的是:

在此处输入图像描述

实际上这是在重复的问题中提出。(对不起:该问题已被删除)。

于 2016-02-21T22:04:47.267 回答