$ontext Best subset LAD regression Erwin Kalvelagen, august 2001 $offtext sets i /i1*i250/ j /j1*j10/ ; parameter x(i,j) 'data independent variables'; parameter y(i) 'data dependent variable'; x(i,j) = normal(0,10); y(i) = sum(j, x(i,j)*ord(j)) + normal(0,1); variable b(j) 'parameters to estimate'; binary variable delta(j) 'subset selection'; variable z 'sum of absolute deviations'; positive variable ep(i) 'positive deviations'; positive variable em(i) 'negative deviations'; equations obj 'objective' fit(i) 'equation to be fitted' subset 'select k' bigm1(j) 'big M formulation' bigm2(j) 'big M formulation' ; scalar M 'big-M' /100/; scalar k 'number of variables to select' /3/; obj.. z =e= sum(i, ep(i)+em(i)); fit(i).. y(i) =e= sum(j, x(i,j)*b(j)) + ep(i) - em(i); bigm1(j).. b(j) =l= M*delta(j); bigm2(j).. b(j) =g= -M*delta(j); subset.. sum(j, delta(j)) =e= k; option optcr=0; option iterlim=1000000; model ksubset /all/; solve ksubset using mip minimizing z;