$title Data Envelopment Analysis - DEA (GUSS) Sets i units / Depot1*Depot20 / j inputs and outputs / stock, wages, issues, receipts, reqs / ji(j) inputs / stock, wages / jo(j) outputs / issues, receipts, reqs /; alias(i,k); Table data(i,j) stock wages issues receipts reqs Depot1 3 5 40 55 30 Depot2 2.5 4.5 45 50 40 Depot3 4 6 55 45 30 Depot4 6 7 48 20 60 Depot5 2.3 3.5 28 50 25 Depot6 4 6.5 48 20 65 Depot7 7 10 80 65 57 Depot8 4.4 6.4 25 48 30 Depot9 3 5 45 64 42 Depot10 5 7 70 65 48 Depot11 5 7 45 65 40 Depot12 2 4 45 40 44 Depot13 5 7 65 25 35 Depot14 4 4 38 18 64 Depot15 2 3 20 50 15 Depot16 3 6 38 20 60 Depot17 7 11 68 64 54 Depot18 4 6 25 38 20 Depot19 3 4 45 67 32 Depot20 3 6 57 60 40 ; Parameter slice(j) slice of data eff_k(i) efficiency report; Positive variables v(ji) input weights u(jo) output weights; Variable eff efficiency; Equations defe efficiency definition - weighted output denom weighted input lime(i) 'output / input < 1'; defe.. eff =e= sum(jo, u(jo)*slice(jo)); denom.. sum(ji, v(ji)*slice(ji)) =e= 1; lime(i).. sum(jo, u(jo)*data(i,jo)) =l= sum(ji, v(ji)*data(i,ji)); model dea /defe, denom, lime /; set headers report / modelstat, solvestat, objval /; parameter scenrep(k,headers) solution report summary scopt / SkipBaseCase 1 /; set dict / k .scenario.'' slice .param. data eff .level. eff_k scopt .opt. scenrep /; slice(j) = 0; option lp=cplexd; solve dea using lp max eff scenario dict; display scenrep,eff_k; $if not set runtraditional $exit parameter rep(k,headers) solution report summary; option limrow=0, limcol=0, solprint=silent, solvelink=%Solvelink.LoadLibrary%; loop(k, slice(j) = data(k,j); solve dea using lp max eff; rep(k,'modelstat') = dea.modelstat; rep(k,'solvestat') = dea.solvestat; rep(k,'objval' ) = dea.objval; ); display rep;