Sequencing Jobs on a Bottleneck Machine


    {  Exmpl7.4-1_SequencingJobs.mpl  }

    {  Applications of Optimization with Xpress-MP  }

    {  Chapter 7.4,  Sequencing Jobs on a Bottleneck Machine,  Size: 48x71 Page 128 }

#define latestcomptime
!#define avgcomptime
!#define tardiness

TITLE
    SequencingJobs;

DATA
    Nj := 7;

INDEX
   job := 1..Nj;
   job2 := job;

DATA
    Rel[job] := (2,5,4,0,0,8,9);
    Dur[job] := (5,6,8,4,2,4,2);
    Due[job] := (10,21,15,10,5,15,22);

VARIABLE
    Rank[job,job2];
    Start[job];
    Comp[job];
    Late[job];
    Finish;

MODEL
#ifdef latestcomptime
    MIN LatestCompTime = Finish;
#endif

#ifdef avgcomptime
    MIN AvgCompTime = SUM(job: Comp);
#endif

#ifdef tardiness
    MIN Tardiness = SUM(job: Late);
#endif

SUBJECT TO
    OneJobPostionA[job] -> OJPA:
       SUM(job2: Rank) = 1;
    OneJobPostionB[job2] -> OJPB:
       SUM(job: Rank) = 1;

    SequenceJobs[job<>last(job)] -> SQJ:
       Start[job+1] >= Start + SUM(job2: Dur[job:=job2] * Rank);

    StartTimes[job] -> SRT:
       Start >= SUM(job2: Rel[job:=job2] * Rank);

    CompletionTime[job]:
       Comp = Start + SUM(job2: Dur[job:=job2] * Rank);

    CalcFinish[job] -> FIN:
       Finish >= Comp;

    TotalTardiness[job] -> TARD:
       Late >= Comp - SUM(job2: Due[job:=job2] * Rank);

BINARY
    Rank;

END


Back To Top | Maximal Home Page | List of Models | Previous Page | Next Page