gplsol最有可能抱怨变量doT1 * T1和的乘积doT2 * T2。
我假设doT1anddoT2是二元变量,T1andT2是连续变量(代表任务的持续时间)。(请注意,这意味着您将不得不使用混合整数规划求解器而不是纯线性规划求解器。您可能还想尝试使用功能强大的 MIP 求解器,例如Gurobi)。
您可以通过将约束和目标重写为来构建模型
minimize T1 + T2 + (additional variables)
st T1 <= UT1*doT1
T2 <= UT2*doT2
doT1 + doT2 <= 1
doT1, doT2 binary
(plus any additional constraints)
其中UT1是任务持续时间的上限T1,UT2是任务持续时间的上限T2。如果doT1 = 0then T1 <= 0,那么任务将无法完成。如果doT1 = 1, 那么T1 <= UT1, 意味着T1允许该任务花费一些时间。对于T2.
OR 条件由约束表示doT1 + doT2 <= 1。这个约束意味着doT1和doT2不能都为 1。也就是说只能选择一个作业。请注意,该<=约束还允许您不执行任何一项任务。如果必须至少完成一项任务,则要使用约束doT1 + doT2 == 1。