我有一组具有执行时间(C1,C2 ... Cn)和截止日期(D1,D2,... Dn)的作业。每个作业都会在一段时间内完成执行,即
 响应时间(R1,R2,.... Rn)。但是,有可能不是每个作业都会在截止日期之前完成执行。所以我为每个作业定义了一个名为Slack的变量,即(S1,S2,... Sn)。松弛基本上是工作期限和响应时间之间的差异,即

S1 = D1-R1
S2 = D2-R2,..依此类推

我有一组休闲裤[S1,S2,S3,... Sn]。根据任务的截止日期和完成时间(即D和R),这些松弛可以是正数或负数。

问题是我需要为每个作业(或松弛)定义权重(W),以使具有负松弛度(即R> D,错过最后期限的作业)的权重(W)比具有正松弛度和基于这些权重和松弛,我需要定义一个目标函数,该函数可用于最大化松弛。

这个问题似乎并不困难。但是,我找不到解决方案。非常感谢在这方面的一些帮助。

谢谢

最佳答案

这通常可以通过变量拆分轻松完成:

splus(i) - smin(i) = d(i) - r(i)
splus(i) ≥ 0, smin(i) ≥ 0


如果我们在目标中有一个术语可以使我们最小化:

sum(i, w1 * splus(i) + w2 * smin(i) )


这样就可以了:我们不需要添加互补条件splus(i)*smin(i)=0

09-11 08:28