Originally posted by: Abdelkader
Hi all,
Could someone debugg the following opl code to run on ibm ilog cplex studio 12.5. it was perfectly runningon opl studio 3.7 before to migrate to ibm ilog cplex studio 12.5.
//DATA
int NbProducts=...;
int NbMachines=...;
range Products= 1..NbProducts;
range Machines= 1..NbMachines;
int NombreSeqCC[Products]= ...;
range NumSeqCC1= 1..NombreSeqCC[1];
range NumSeqCC2= 1..NombreSeqCC[2];
int NbPochesNumSeqCC1[NumSeqCC1]=...;
int NbPochesNumSeqCC2[NumSeqCC2]=...;
int NbtotalPochesCC1= sum(i in NumSeqCC1) NbPochesNumSeqCC1[i];
int NbtotalPochesCC2= sum(i in NumSeqCC2) NbPochesNumSeqCC2[i];
range NumPochesNumSeqCC1= 1..NbtotalPochesCC1;
range NumPochesNumSeqCC2= 1..NbtotalPochesCC2;
int M1= (NbtotalPochesCC1+ NbtotalPochesCC2 + 1) div 2;
int M2= (NbtotalPochesCC1 + NbtotalPochesCC2) div 2;
range m1= 1..M1;
range m2= 1..M2;
//DECISION VARIABLES
dvar boolean z1Seq1[NumPochesNumSeqCC1, m1]; //in 0..1;
dvar boolean z1Seq2[NumPochesNumSeqCC2, m1]; //in 0..1;
dvar boolean z2Seq1[NumPochesNumSeqCC1, m2]; //in 0..1;
dvar boolean z2Seq2[NumPochesNumSeqCC2, m2]; //in 0..1;
dvar float+ StartTime1[NumPochesNumSeqCC1,Machines];
dvar float+ StartTime2[NumPochesNumSeqCC2,Machines];
dvar float+ ProcessTime1[NumPochesNumSeqCC1];
dvar float+ ProcessTime2[NumPochesNumSeqCC2];
dvar float+ InterSequenceTime1[NumPochesNumSeqCC1]; //setup1
dvar float+ InterSequenceTime2[NumPochesNumSeqCC2]; //setup2
int delta1=...;
int delta2=...;
int DurationCV=...;
int Transfer1=...;
int Transfer2=...;
int DurationEtap[1..2]=...;
float MinProcessTime1[NumPochesNumSeqCC1]=...;
float MaxProcessTime1[NumPochesNumSeqCC1]=...;
float MinProcessTime2[NumPochesNumSeqCC2]=...;
float MaxProcessTime2[NumPochesNumSeqCC2]=...;
int MaxSojourn[1..2]=...;
float Max1;
float Max2;
int InitialStart1[1..2]=...;
int InitialStart2[1..2]=...;
int MinInterSequence1=...;
int MaxInterSequence1=...;
int MinInterSequence2=...;
int MaxInterSequence2=...;
int Indice1[1..NombreSeqCC[1]]=...;
int Indice2[1..NombreSeqCC[2]]=...;
//OBJECTIVE
minimize
StartTime1[NbtotalPochesCC1,3] + ProcessTime1[NbtotalPochesCC1]+ StartTime2[NbtotalPochesCC2,3]+
ProcessTime2[NbtotalPochesCC2];
//CONSTRAINTS
subject to{
Max1 = (sum(i in NumPochesNumSeqCC1) (StartTime1[i,3] - StartTime1[i,1] - DurationCV)/ NbtotalPochesCC1);
Max2 = (sum(i in NumPochesNumSeqCC2) (StartTime2[i,3] - StartTime2[i,1] - DurationCV)/ NbtotalPochesCC2);
forall(i in NumPochesNumSeqCC1)
sum(j in m1) z1Seq1[i,j] + sum(j in m2) z2Seq1[i,j] == 1; //=
forall(i in NumPochesNumSeqCC2)
sum(j in m1) z1Seq2[i,j] + sum(j in m2) z2Seq2[i,j] == 1; //=
forall(j in m1)
sum (i in NumPochesNumSeqCC1) z1Seq1[i,j]+ sum (i in NumPochesNumSeqCC2) z1Seq2[i,j]==1; //=
forall(j in m2)
sum (i in NumPochesNumSeqCC1) z2Seq1[i,j]+ sum (i in NumPochesNumSeqCC2) z2Seq2[i,j]==1; //=
forall(i in 1..NbtotalPochesCC1-1){
forall(t in 1..M1-1)
z1Seq1[i+1,t+1]<= sum(j in 1..t) z1Seq1[i,j]+ sum(j in 1..t) z2Seq1[i,j];
}
forall(i in 1..NbtotalPochesCC1-1){
forall(t in 1..M2)
z2Seq1[i+1,t]<= sum(j in 1..t)(z1Seq1[i,j]) + sum(j in 1..t)(z2Seq1[i,j])- z2Seq1[i,t];
}
forall(i in 1..NbtotalPochesCC2-1){
forall(t in 1..M1-1)
z1Seq2[i+1,t+1]<= sum(j in 1..t)(z1Seq2[i,j]) + sum(j in 1..t)(z2Seq2[i,j]);
}
forall(i in 1..NbtotalPochesCC2-1){
forall(t in 1..M2)
z2Seq2[i+1,t]<= sum(j in 1..t)(z1Seq2[i,j]) + sum(j in 1..t)(z2Seq2[i,j])- z2Seq2[i,t];
z1Seq1[1,1]+z1Seq2[1,1]==1; //=
}
forall(i in NumPochesNumSeqCC1)
StartTime1[i,1] = sum(j in m1) (delta1 + DurationCV*(j-1))*z1Seq1[i,j]+
sum(j in m2) (delta2 + DurationCV*(j-1))*z2Seq1[i,j];
forall(i in NumPochesNumSeqCC2)
StartTime2[i,1]= sum(j in m1) (delta1 + DurationCV*(j-1))*z1Seq2[i,j]+
sum(j in m2) (delta2 + DurationCV*(j-1))*z2Seq2[i,j];
forall(i in NumPochesNumSeqCC1)
StartTime1[i,2] >= StartTime1[i,1]+DurationCV+Transfer1;
forall(i in NumPochesNumSeqCC2)
StartTime2[i,2] >= StartTime2[i,1]+DurationCV+Transfer1;
forall(i in NumPochesNumSeqCC1)
StartTime1[i,3] >= StartTime1[i,2]+DurationEtap[1]+Transfer2;
forall(i in NumPochesNumSeqCC2)
StartTime2[i,3] >= StartTime2[i,2]+DurationEtap[2]+Transfer2;
forall(i in 1..NbtotalPochesCC1-1)
StartTime1[i+1,2] >= StartTime1[i,2]+DurationEtap[1];
forall(i in 1..NbtotalPochesCC2-1)
StartTime2[i+1,2] >= StartTime2[i,2]+DurationEtap[2];
forall(k in 1..NombreSeqCC[1])
forall(i in 1..NbPochesNumSeqCC1[k]-1)
StartTime1[Indice1[k] + i+1,3] = StartTime1[Indice1[k]+i,3] + ProcessTime1[Indice1[k]+i];
forall(k in 1..NombreSeqCC[2])
forall(i in 1..NbPochesNumSeqCC2[k]-1)
StartTime2[Indice2[k] +i +1,3] = StartTime2[Indice2[k] +i,3] + ProcessTime2[Indice2[k]+i];
forall(k in 1..NombreSeqCC[1]-1)
StartTime1[Indice1[k] + NbPochesNumSeqCC1[k]+1,3]==
StartTime1[Indice1[k] + NbPochesNumSeqCC1[k],3]+
ProcessTime1[Indice1[k]+NbPochesNumSeqCC1[k]]+
InterSequenceTime1[Indice1[k]+NbPochesNumSeqCC1[k]];
forall(k in 1..NombreSeqCC[2]-1)
StartTime2[Indice2[k] + NbPochesNumSeqCC2[k]+1,3]==
StartTime2[Indice2[k] + NbPochesNumSeqCC2[k],3]+
ProcessTime2[Indice2[k]+NbPochesNumSeqCC2[k]]+
InterSequenceTime2[Indice2[k]+NbPochesNumSeqCC2[k]];
forall(i in NumPochesNumSeqCC1)
MinProcessTime1[i] <= ProcessTime1[i] <= MaxProcessTime1[i];
forall(i in NumPochesNumSeqCC2)
MinProcessTime2[i] <= ProcessTime2[i] <= MaxProcessTime2[i];
forall(i in NumPochesNumSeqCC1)
StartTime1[i,3] - StartTime1[i,1] - DurationCV <= MaxSojourn[1];
forall(i in NumPochesNumSeqCC2)
StartTime2[i,3] - StartTime2[i,1] - DurationCV <= MaxSojourn[2];
InitialStart1[1] <= StartTime1[1,3] <= InitialStart1[2];
InitialStart2[1] <= StartTime2[1,3] <= InitialStart2[2];
forall(i in 2..NbtotalPochesCC1)
MinInterSequence1 <= InterSequenceTime1[i] <= MaxInterSequence1;
forall(i in 2..NbtotalPochesCC2)
MinInterSequence2 <= InterSequenceTime2[i] <= MaxInterSequence2;
};
display StartTime1;
display StartTime2;
display ProcessTime1;
display ProcessTime2;
display InterSequenceTime1;
display InterSequenceTime2;
display (StartTime1[NbtotalPochesCC1,3]+ProcessTime1[NbtotalPochesCC1]);
display (StartTime2[NbtotalPochesCC2,3]+ProcessTime2[NbtotalPochesCC2]);
display Max1;
display Max2;
display (StartTime1[1,3]-InitialStart1[1]);
------------------------------------
I got many errors when running cplex studio 12.5
THANKS IN ADVANCE.
#DecisionOptimization#OPLusingCPLEXOptimizer