#single-item capacitated lot-sizing param T:=120; # number of periods param p_fix {1..T}:=floor(Uniform(1600,2000)); # fix production costs (setup costs) param p_var {1..T}:=floor(Uniform(1,5)); # variable production cost (unit costs) param x_max {1..T}:=floor(Uniform(16,35)); # production capacity param demand{1..T}:=floor(Uniform(16,25)); # demand per period param h_var {1..T}:=floor(Uniform(1,5)); # variable holding costs (unit costs) var u {t in 1..T} binary; # production on/off var x {t in 1..T} >=0; # qantity to produce var y {t in 0..T} >=0; # inventory level minimize totalcost: (sum {t in 1..T} (u[t]*p_fix[t]+x[t]*p_var[t]))+ (sum {t in 1..T} h_var[t]*y[t]); subject to y_0: y[0]=0; subject to inv {t in 1..T}: y[t]=y[t-1]+x[t]-demand[t]; subject to pmax{t in 1..T}: x[t]<=u[t]*x_max[t]; subject to y_T: y[T]=0; solve; printf "\n"; printf "\n//Input data for Online Solver at https://www.lutanho.net/plt/lotsize.html"; printf "\n//I u_0 y_0 y_I\n"; printf "%5d; 0; 0; 0;",T; printf "\nstartup x_min fix var x_max demand y_min fix var y_max\n"; printf{t in 1..T} " 0; 0, %5d,%3d,%3d; %5d; 0, 0,%4d, 9999;\n", p_fix[t], p_var[t], x_max[t], demand[t], h_var[t]; printf "\n---------------------------------------------------------"; printf "\nTotal Cost: %10g\n", totalcost; printf "\n"; end;