我目前学习运筹学。我要求将该模型表示为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-语句呢?
谢谢!
发布于 2016-02-22 06:04:47
https://stackoverflow.com/questions/35539420
复制相似问题