Flow-Shop Scheduling
{ Exmpl7.2-1_FlowShopScheduling.mpl }
{ Applications of Optimization with Xpress-MP }
{ Chapter 7.2, Flow-Shop Scheduling, Size: 40x81, Page 117 }
TITLE
FlowShopScheduling;
DATA
Nm := 3;
Nj := 6;
INDEX
mach := 1..Nm;
ranks := 1..Nj;
job := 1..Nj;
DATA
Dur[job,mach] := (3,6,3,5,5,7,
5,4,2,4,4,5,
5,2,4,6,3,6);
VARIABLE
Rank[job,ranks];
Empty[mach,ranks=1..Nj-1];
Wait[mach=1..Nm-1,ranks];
Start[mach,ranks];
MODEL
MIN TotalWait = SUM(mach=1..Nj-1,job: Dur * Rank[ranks:=1])
+ SUM(ranks=1..Nj-1: Empty[mach:=Nm]);
SUBJECT TO
AssPostionJob[ranks] -> POSJB:
SUM(job: Rank) = 1;
AssJobRank[job] -> JBRNK:
SUM(ranks: Rank) = 1;
EndRelations[mach<>last(mach),ranks<>last(ranks)] -> EREL:
Empty + SUM(job: Dur * Rank[ranks+1]) + Wait[ranks+1]
=
Wait + SUM(job: Dur[mach+1] * Rank) + Empty[mach+1];
CalcStrtTimes[mach,ranks] -> CSTRT:
Start
=
SUM(mach=1..mach-1,job: Dur * Rank[ranks:=1])
+ SUM(ranks=1..ranks-1,job: Dur * Rank)
+ SUM(ranks=1..ranks-1: Empty);
BOUNDS
FirstMachNoIdle[ranks<>last(ranks)]:
Empty[mach:=1] = 0;
FirstJobNoWait[mach<>last(mach)]:
Wait[ranks:=1] = 0;
BINARY
Rank;
END
Back To Top
|
Maximal Home Page
|
List of Models |
Previous Page
|
Next Page