lemon-project-template-glpk
view deps/glpk/examples/cpp.mod @ 9:33de93886c88
Import GLPK 4.47
author | Alpar Juttner <alpar@cs.elte.hu> |
---|---|
date | Sun, 06 Nov 2011 20:59:10 +0100 |
parents | |
children |
line source
1 /* CPP, Critical Path Problem */
3 /* Written in GNU MathProg by Andrew Makhorin <mao@gnu.org> */
5 /* Note: Reduced costs of auxiliary variables phi[j,k] (see below)
6 can be only zero or one. The critical path is defined by the
7 constraints, whose reduced cost is one. */
9 set J;
10 /* set of jobs (activities) */
12 set P{j in J}, in J, default {};
13 /* P[j] is a subset of jobs that immediately precede job j */
15 param t{j in J}, >= 0;
16 /* duration required to perform job j */
18 var x{j in J}, >= 0;
19 /* starting time of job j */
21 s.t. phi{j in J, k in P[j]}: x[j] >= x[k] + t[k];
22 /* job j can start only after all immediately preceding jobs have been
23 completely performed */
25 var z;
26 /* project makespan */
28 s.t. fin{j in J}: z >= x[j] + t[j];
29 /* which is the maximum of the completion times of all the jobs */
31 minimize obj: z;
32 /* the objective is make z as small as possible */
34 data;
36 /* The optimal solution is 46 */
38 param : J : t :=
39 A 3 /* Excavate */
40 B 4 /* Lay foundation */
41 C 3 /* Rough plumbing */
42 D 10 /* Frame */
43 E 8 /* Finish exterior */
44 F 4 /* Install HVAC */
45 G 6 /* Rough electric */
46 H 8 /* Sheet rock */
47 I 5 /* Install cabinets */
48 J 5 /* Paint */
49 K 4 /* Final plumbing */
50 L 2 /* Final electric */
51 M 4 /* Install flooring */
52 ;
54 set P[B] := A;
55 set P[C] := B;
56 set P[D] := B;
57 set P[E] := D;
58 set P[F] := D;
59 set P[G] := D;
60 set P[H] := C E F G;
61 set P[I] := H;
62 set P[J] := H;
63 set P[K] := I;
64 set P[L] := J;
65 set P[M] := K L;
67 end;