首页 文章

如果条件在Cplex目标函数中

提问于
浏览
0

我是Cplex的新手 . 我正在解决整数编程问题,但我的目标函数存在问题 . 问题是我有一些项目,有一个到期日期D,如果项目迟到,我的迟到惩罚b,所以它看起来像b *(cn-D) . 其中cn是项目的实际计算时间,它是决策变量 .

它必须看起来像这样 if (cn-D)>=0 then b*(cn-D)==0

我试图使用“if-then”约束,但似乎它不适用于决策变量 . 我看了类似的问题,但找不到解决方案 . 请帮我定义正确的目标函数 .

1 回答

  • 0

    对此进行建模的标准方法是:

    min sum(i, penalty(i)*Tardy(i))
    Tardy(i) >= CompletionTime(i) - DueDate(i)
    Tardy(i) >= 0
    

    Tardy 是一个非负变量,永远不会变为负数 . 其他数量是:

    • penalty :一个常数,表示与作业相关的成本是一个单位时间迟缓 .

    • CompletionTime :保存作业完成时间的变量 i

    • DueDate :作业截止日期 i 的常量 .

    以上测量总和 . 有时我们也想测量计数:迟到的工作数量 . 这是为了防止许多工作迟到 . 在最一般的情况下,目标中的总和和计数都具有不同的权重或惩罚 .

    几乎无限数量的论文显示MIP配方涉及迟到的调度模型 . 而不是重新发明轮子,可能有必要咨询其中一些,看看其他人做了什么来制定这个 .

相关问题