我是Cplex的新手 . 我正在解决整数编程问题,但我的目标函数存在问题 . 问题是我有一些项目,有一个到期日期D,如果项目迟到,我的迟到惩罚b,所以它看起来像b *(cn-D) . 其中cn是项目的实际计算时间,它是决策变量 .
它必须看起来像这样 if (cn-D)>=0 then b*(cn-D)==0
if (cn-D)>=0 then b*(cn-D)==0
我试图使用“if-then”约束,但似乎它不适用于决策变量 . 我看了类似的问题,但找不到解决方案 . 请帮我定义正确的目标函数 .
对此进行建模的标准方法是:
min sum(i, penalty(i)*Tardy(i)) Tardy(i) >= CompletionTime(i) - DueDate(i) Tardy(i) >= 0
Tardy 是一个非负变量,永远不会变为负数 . 其他数量是:
Tardy
penalty :一个常数,表示与作业相关的成本是一个单位时间迟缓 .
penalty
CompletionTime :保存作业完成时间的变量 i
CompletionTime
i
DueDate :作业截止日期 i 的常量 .
DueDate
以上测量总和 . 有时我们也想测量计数:迟到的工作数量 . 这是为了防止许多工作迟到 . 在最一般的情况下,目标中的总和和计数都具有不同的权重或惩罚 .
几乎无限数量的论文显示MIP配方涉及迟到的调度模型 . 而不是重新发明轮子,可能有必要咨询其中一些,看看其他人做了什么来制定这个 .
1 回答
对此进行建模的标准方法是:
Tardy
是一个非负变量,永远不会变为负数 . 其他数量是:penalty
:一个常数,表示与作业相关的成本是一个单位时间迟缓 .CompletionTime
:保存作业完成时间的变量i
DueDate
:作业截止日期i
的常量 .以上测量总和 . 有时我们也想测量计数:迟到的工作数量 . 这是为了防止许多工作迟到 . 在最一般的情况下,目标中的总和和计数都具有不同的权重或惩罚 .
几乎无限数量的论文显示MIP配方涉及迟到的调度模型 . 而不是重新发明轮子,可能有必要咨询其中一些,看看其他人做了什么来制定这个 .