2016-12-17 11 views
0

하나의 시스템에서 작업의 총 지연 및 발전을 최소화하기위한 다음 MathProg 모델/인스턴스는 총 575 개의 최적 솔루션 [2, 7, 3, 8, 1, 5, 4, 6]을 반환합니다. 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; 

솔루션 체크 Solution check

답변

0

은 최적의 솔루션이 제 작업의 개시가 컴퓨터에 인터럽트를 발생 6 부에 의해 지연되는 것을 의미한다.

enter image description here