我目前正在学习运筹学。我需要将模型表示为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?
谢谢!