{string} MTOprod = ...;
{string} MTSprod = ...;
int Nbperiods = ...;
range periods = 1..Nbperiods;
float MCi [MTOprod]= ...;
float MCj [MTSprod]= ...;
float ICi [MTOprod]= ...;
float ICj [MTSprod]= ...;
float ICMi [MTOprod]= ...;
float ICMj [MTSprod]= ...;
float RCi [MTOprod]= ...;
float RCj [MTSprod]= ...;
float MQi [MTOprod]= ...;
float MQj [MTSprod]= ...;
float hi [MTOprod]= ...;
float hj [MTSprod]= ...;
float Htmax =...;
float wi [MTOprod]= ...;
float wj [MTSprod]= ...;
float Wtmax =...;
float vi [MTOprod]= ...;
float vj [MTSprod]= ...;
float Vtmax =...;
float Dit [MTOprod][periods]= ...;
float Bjt [MTSprod][periods]= ...;
float xi [MTOprod]= ...;
float yj [MTSprod]= ...;
float Sit [MTOprod][periods]= ...;
float Sjt [MTSprod][periods]= ...;
float initialinv = ...;
float initialctin =...;
dvar int+ Mit [MTOprod][periods];
dvar int+ Mjt [MTSprod][periods];
dvar int+ IQit [MTOprod][periods];
dvar int+ IQjt [MTSprod][periods];
dvar int+ IMit [MTOprod][periods];
dvar int+ IMjt [MTSprod][periods];
dvar int+ RQit [MTOprod][periods];
dvar int+ RQjt [MTSprod][periods];
dvar int+ ctin [periods];
dvar int+ ctout [periods];
maximize
sum (t in periods, i in MTOprod, j in MTSprod) (xi[i]*Sit[i][t]+yj[j]*Sjt[j][t])-sum (t in periods, i in MTOprod)RCi[i]*RQit[i][t]-sum (t in periods, j in MTSprod)RCj[j]*RQjt[j][t]-sum (t in periods, i in MTOprod)MCi[i]*Mit[i][t]-sum (t in periods, j in MTSprod)MCj[j]*Mjt[j][t]- sum (t in periods, i in MTOprod)IQit[i][t]*ICi[i]-sum (t in periods, i in MTOprod)IMit[i][t]*ICMi[i]- sum (t in periods, j in MTSprod)IQjt[j][t]*ICj[j]- sum (t in periods, j in MTSprod)IMjt[j][t]*ICMj[j];
subject to {
//constraints:
//raw material inventory constraints:
forall (t in periods, i in MTOprod : t-1==1)
ctinv0: IMit[i][t-1]== initialinv;
//forall (t in periods, i in MTOprod : t-1>=1)
//ctinv1: IMit[i][t-1]+Mit[i][t]-MQi[i]==IMit[i][t];
forall (t in periods, j in MTSprod : t-1==1)
ctinv2: IMjt[j][t-1]== initialinv;
forall (t in periods, j in MTSprod : t-1>=1)
ctinv3: IMjt[j][t-1]+Mjt[j][t]-MQj[j]==IMjt[j][t];
//Inventory balance constraints:
//forall (t in periods, i in MTOprod : t-1==1)
// ctinv4: IQit[i][t-1]== initialinv;
//forall (t in periods, i in MTOprod : t-1>=1)
//ctinv5: RQit[i][t]+IQit[i][t-1]==IQit[i][t];
forall (t in periods, j in MTSprod : t-1==1)
ctinv6: IQjt[j][t-1]== initialinv;
forall (t in periods, j in MTSprod : t-1>=1)
ctinv7: RQjt[j][t]+IQjt[j][t-1]==IQjt[j][t];
//Demand/Order satisfaction constraint:
forall (t in periods, i in MTOprod : t-1>=1)
ctinv8:
RQit[i][t]+IQit[i][t-1]-IQit[i][t]==Dit[i][t];
// forall (t in periods, j in MTSprod : t-1>=1)
// ctinv9: RQjt[j][t]+IQjt[j][t-1]-IQjt[j][t]==Bjt[j][t];
//capacity constraints:
forall (t in periods)
ctinv10: sum (i in MTOprod) hi[i] * RQit[i][t] + sum (j in MTSprod) hj[j] * RQjt[j][t]<= Htmax;
// //storage (Raw material inventory) area capacity constraint:
//
forall (t in periods)
ctinv11: sum (i in MTOprod) IMit[i][t] * wi[i] + sum (j in MTSprod) IMjt[j][t] * wj[j]<= Wtmax;
//storage (Finished MTO, MTS products) area capacity constraint:
forall (t in periods)
ctinv12: sum (i in MTOprod) IQit[i][t] * vi[i] + sum (j in MTSprod) IQjt[j][t] * vj[j]<= Vtmax;
// Cash Constraint:
forall (t in periods : t-1>=1)
ctinv13: ctin[t]+ctin[t-1]-sum (i in MTOprod)MCi[i]-sum (j in MTSprod)MCj[j]-sum (i in MTOprod)RCi[i]-sum (j in MTSprod)RCj[j]
+sum (i in MTOprod)Sit[i][t] * xi[i] + sum (j in MTSprod)Sjt[j][t] * yj[j]>=0;
forall (t in periods : t-1==4)
ctinv14: ctin[t-1]>= initialctin;
//Non-negative constraints for all decision variables:
forall (t in periods, i in MTOprod)
ctinv15: Mit[i][t] >= 0;
forall (t in periods, i in MTOprod)
ctinv16: IQit[i][t] >= 0;
forall (t in periods, i in MTOprod)
ctinv17:IMit[i][t] >= 0;
forall (t in periods, i in MTOprod)
ctinv18:RQit[i][t] >= 0;
//
//
forall (t in periods, j in MTSprod)
ctinv19: Mjt[j][t] >= 0;
forall (t in periods, j in MTSprod)
ctinv20:IQjt[j][t] >= 0;
forall (t in periods, j in MTSprod)
ctinv21:IMjt[j][t] >= 0;
forall (t in periods, j in MTSprod)
ctinv22:RQjt[j][t] >= 0;
forall (t in periods : t-1==1)
ctinv23:ctcash: ctin[t]== initialctin;
forall (t in periods)
ctinv24:ctin[t] >= 0;
forall (t in periods)
ctinv25:ctout[t] >= 0;
}
execute DISPLAY {
for (var i in MTOprod)
for (var j in MTSprod)
for (var t in periods)
{
writeln ("Mit[",i,"][",t,"]=",Mit[i][t]);
writeln ("Mjt[",j,"][",t,"]=",Mjt[j][t]);
writeln ("IQit[",i,"][",t,"]=",IQit[i][t]);
writeln ("IQjt[",j,"][",t,"]=",IQjt[j][t]);
writeln ("IMit[",i,"][",t,"]=",IMit[i][t]);
writeln ("IMjt[",j,"][",t,"]=",IMjt[j][t]);
writeln ("RQit[",i,"][",t,"]=",RQit[i][t]);
writeln ("RQjt[",j,"][",t,"]=",RQjt[j][t]);
writeln ("ctin[",t,"]=",ctin[t]);
writeln ("ctout[",t,"]=",ctout[t]);
} }
you get a feasible solution, you may start from there and try to see why adding the other constraints make your problem unfeasible