You are on page 1of 1

Makespan.

mod

1 /*********************************************
2 * OPL 12.6.0.0 Model
3 * Author: Rafael
4 * Creation Date: 11/09/2017 at 09:29:23
5 *********************************************/
6
7
8 int NS =...;
9 range S =1..NS;
10 int NP =...;
11 range P = 1..NP;
12 int PPS[P,S]=...;
13
14
15 int BigM[s in S] = max(p in P)PPS[p,s] - min(p in P)PPS[p,s];
16
17 dvar boolean X[P,P];
18 //dvar boolean Y[P,P];
19 dvar float+ MKSPN;
20 dvar float+ Tin[P,S];
21 dvar float+ Tx[P,S];
22 dvar float+ Tout[P,S];
23
24 minimize MKSPN;
25
26 subject to{
27
28 forall(p in P)
29 sum(k in P)X[p,k]==1;
30 forall(p in P)
31 sum(k in P)X[k,p]==1;
32
33 // forall(p1 in P, p2 in P: p2!=p1, k in P:k<NP)
34 // Y[p2,p1]>=X[p1,k]+X[p2,k+1]-1;
35
36 forall(p in P, s in S, k in P)
37 Tx[p,s]>=PPS[k,s]-BigM[s]*(1-X[p,k]);
38
39 //CORTE
40 forall(s in S)
41 sum(p in P)Tx[p,s]==sum(p in P)PPS[p,s];
42
43 forall(p in P, s in S)
44 Tout[p,s]>=Tin[p,s]+Tx[p,s];
45 forall(p in P, s in S:s<NS)
46 Tout[p,s]==Tin[p,s+1];
47
48 forall(p1 in P, p2 in P:p2==p1+1, s in S)
49 Tin[p2,s]>=Tout[p1,s];//-1000*(1-Y[p2,p1]);
50
51
52 forall(p in P)
53 MKSPN>=Tout[p,NS];
54 }
55
56
57

Página 1

You might also like