【问题标题】:How to return a binary value by comparing two variables?如何通过比较两个变量返回二进制值?
【发布时间】:2016-02-21 17:30:52
【问题描述】:

我目前学习运筹学。我需要将模型制定为 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?

谢谢!

【问题讨论】:

    标签: scheduling linear-programming job-scheduling cplex lingo


    【解决方案1】:

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

    实际上这是在重复问题here 中提出的。 (抱歉:该问题已被删除)。

    【讨论】:

      猜你喜欢
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-26
      • 2018-10-18
      • 1970-01-01
      相关资源
      最近更新 更多