set i /1*2/ j /1*4/ ; table alternative(i,j) distance between i and j 1 2 3 4 1 10 12 0 0 2 0 0 8 10 ; variable objective; binary variable y(i,j); equation c1 objective function c2 logical constraint only one alternative can be selected for each i ; c1.. objective =e= sum((i,j),alternative(i,j) *y(i,j)); c2(i) .. sum(j,y(i,j))=e=1; model m/all/ solve m maximize objective using mip; * below part of model is to find sub-optimal solutions equation icut1 integer cut 1; icut1.. y('1','2')+y('2','4')=l=1; model m1 /all/ solve m1 maximize objective using mip; equation icut2 integer cut 2 ; icut2.. y('1','2')+y('2','3')=l=1; model m2 /all/ solve m2 maximize objective using mip;