Research Article

A Hybrid Programming Framework for Modeling and Solving Constraint Satisfaction and Optimization Problems

Algorithm 4

The code in “LINGO” format for the model illustrative after transformation.
Model:
  Sets:
machines/1..@file(t_02_sizes.ldt)/;
resources/1..@file(t_02_sizes.ldt)/:ko;
periods/1..@file(t_02_sizes.ldt)/:op;
transformed/1..@file(t_02_sizes.ldt)/:KP,or,tr;
technology(transformed,resources,periods):X,Y;
auxiliary_1 (transformed,resources):d,d1;
auxiliary_2 (transformed,machines):wyk;
auxiliary_3 (transformed,transformed):do;
  EndSets
  Data:
or=@file(t_03_data.ldt);tr=@file(t_03_data.ldt);
wyk=@file(t_03_data.ldt);ko=@file(t_03_data.ldt);
d=@file(t_03_data1.ldt);d1=@file(t_03_data1.ldt);
do  =@file(t_03_data1.ldt);
  EndData
  SUBMODEL F_objective1:
Min=Cmax;
  ENDSUBMODEL
  SUBMODEL Constraints:
@for(transformed(z): KP(z)<=Cmax);
@for(transformed(z):@for(resources(r)d1(z,r)#EQ#1#AND#ti(z)#NE#0:
@sum(periods(t):d1(z,r)*X(z,r,t))=tr(z)*or(z))
);
@for(periods(t): @for(machines(j):
@sum(transformed(z):@sum(resources(r):wyk(z,r)*X(z,r,t)))<=1
));
@for(periods(t): @for(resources(r):
@sum(transformed(z):d(z,r)*X(z,r,t))<=ko(r)
));
@for(technology(z,r,t)t#GT#1: X(z,r,t-1)-X(z,r,t)<=Y(z,r,t-1));
@for(transformed(z): @for(resources(r):
@sum(periods(t):Y(z,r,t))<=1
));
@for(transformed(z): @for(resources(r)d1(z,r)#EQ#1#AND#ti(z)#NE#0:
KP(z)=@sum(periods(t):op(t)*Y(z,r,t));
));
@for(transformed(z1): @for(transformed(z2)do(z1,z2)#EQ#1:
KP(z2)-or(z2)*ti(z2)>=KP(z1)
));
@for(technology(z,r,t): @bin(X(z,r,t)); @bin(Y(z,r,t)));
@for(transformed(z): @gin(KP(z)));
ENDSUBMODEL
  CALC:
@SET(TERSEO,2);
@for(periods(t): op(t)=t;
MAXT=t
);
@SOLVE(Constraints, F_objective1);
  ENDCALC
End