$include %filename% Scalar m; m=smax((i,j,r), w(i)*k(i,j,r) / uc(i)); binary Variables x(j,r); positive variables z(i,j,r),a(i); Free variables opt; Equations goal upperZ(i,j,r) lowerZ(i,j,r) less(i,j,r) budget omg(i) ogrp; goal.. opt=e=sum(i,sum(j,sum(r,z(i,j,r)))); upperZ(i,j,r).. z(i,j,r)=l=k(i,j,r)*a(i); lowerZ(i,j,r).. k(i,j,r)*a(i)+m*(x(j,r)-1)=l=z(i,j,r); less(i,j,r).. z(i,j,r)=l=x(j,r)*w(i); budget.. sum((j,r),c(j,r)*x(j,r))=l=b; omg(i).. sum((j,r),z(i,j,r))+a(i)*uc(i)=e=w(i); ogrp.. sum((j,r),x(j,r))=e=p; model Shops /goal, upperZ, lowerZ, less, budget, omg, ogrp/; option ResLim = 14000, solprint = off, sysout = off; Shops.NodLim = 100; Solve Shops using MIP max opt; file txt /%filename%_out.txt/; put txt; put "Vector solutions: "/; loop(j, loop (r, if(x.l(j,r) <> 0, put "x["j.tl:3"]= "r.tl /;); ); ); put "Objective function: "opt.l/; Scalar telapsed; telapsed = TimeElapsed; put "Time: "telapsed/; put "File input: "; put '%filename%'; putclose txt;