Originally posted by: ettore.buo
Hi everybody, I need help to linearize a constraint (or changing to a dfferent formulation but with the same effect) regarding production capacity.
Given the following notation:
range baseplate=1..Nbase; //number of baseplate types
range period=1..maxT; //number of time periods
range palcfg=1..Nconfig; //number of pallet configurations
and decision variables:
dvar float+ L[period]; //makespan of period t
dvar int+ Y[palcfg][period]; //number of pallets in configuration h in period t
dvar float W[palcfg][period]; //number of times a pallet configuration h is processed in period t
dvar int+ Z[palcfg][period]; //number of reconfigurations for configuration h at beginning of period t
dvar float+ T[baseplate][palcfg][period]; //number of times a baseplate b is processed in period t with configuration h
the complete constraint would be of this kind:
forall (t in period, h in palcfg) (sum (b in baseplate) T[b,h,t]*(t_tr_rap[b] + t_cu[b] + t_fix[b])) + (W[h,t]*avg_t_trasp) <= Y[h,t]*(L[t] - (sum(h in palcfg) t_rec[h]*Z[h,t])) ;
where i have highlighted in yellow the decision variables.
As you can see, this constraint contains a non-linearity between Y[h,t] and L[t].
Therefore, i have tried to write a similar one in another way as:
forall (h in palcfg, t in period, k in 1...kmax) c:((k*((sum (b in baseplate) Nfixpal[h,b]*(t_tr_rap[b] + t_cu[b] + t_fix[b])) + avg_t_trasp))/Y[h,t])<= L[t] + abs(W[h,t] - k)*M;
but here I have the problem of a division for a decision variable.
Can anyone help me? I can add more details or explanation if needed.
Thanks
#DecisionOptimization#OPLusingCPLEXOptimizer