0

以下用于最小化一台机器中任务的总延迟和推进的 MathProg 模型/实例正在返回最佳解决方案 [2, 7, 3, 8, 1, 5, 4, 6],总数为 575。有人可以解释我为什么不是 587 ,因为任务 4 的结束日期是 540?

set tasks;

param procTime {tasks} >= 0;
param deliveryDate {tasks} >= 0;
param BIG := 1000;

var seq {tasks, tasks} binary;
var endDate {tasks} >= 0;
var delay {tasks} >= 0;
var advance {tasks} >= 0;

minimize f: sum {i in tasks : i != 0} (delay[i] + advance[i]);

s.t. c1 {i in tasks : i != 0}: delay[i] >= endDate[i] - deliveryDate[i];

s.t. c2 {i in tasks : i != 0}: advance[i] >= deliveryDate[i] - endDate[i];

s.t. c3 {j in tasks}: sum {i in tasks : i != j} seq[i,j] = 1;

s.t. c4 {i in tasks}: sum {j in tasks : i != j} seq[i,j] = 1;

s.t. c5 {i in tasks, j in tasks : j != 0}: endDate[j] >= endDate[i] - BIG + (procTime[j] + BIG) * seq[i,j];

s.t. c6 {i in tasks: i != 0}: endDate[i] >= 0;

s.t. c7: endDate[0] = 0;

solve;

display seq;

display f;


data;

set tasks := 0 1 2 3 4 5 6 7 8;

param procTime :=
0 0
1 64
2 53
3 63
4 99
5 189
6 44
7 50
8 22;

param deliveryDate :=
0 0
1 100
2 70
3 150
4 601
5 118
6 590
7 107
8 180;

end;

解决方案检查 解决方案检查

4

1 回答 1

0

由于模型是最小化的,最优解建议第四个任务的开始延迟 6 个单位,从而在机器中产生中断。

在此处输入图像描述

于 2016-12-18T02:06:53.613 回答