proc optmodel; set Lane={'AB','BC','CA','CB'}; set Carrier={'I','II'}; number Bids{Lane,Carrier}=[ 500 525 500 475 500 525 475 500]; /* number ServiceLevel{Lane,Carrier}=[ 97 95 92 88 90 95 90 85]; number AdjBids{i in Lane, j in Carrier}=(92-ServiceLevel[i,j])*10+Bids[i,j]; number CapacityC{Carrier}=[ 25 25]; number CapacityL{Lane,Carrier}=[ 5 8 100 6 4 100 8 100]; number MinVolume{Carrier}=[ 0 13000]; */ var Loads{Lane,Carrier} integer >=0; minimize Z=sum{i in Lane, j in Carrier}Bids[i,j]*Loads[i,j]; /* Bids w/o LOS */ minimize ZLOS=sum{i in Lane, j in Carrier}AdjBids[i,j]*Loads[i,j]; /* Bids w/ LOS */ con LoadsperLane{i in Lane}: sum{j in Carrier}Loads[i,j]=10; /* con MinVol{j in Carrier}: sum{i in Lane}Bids[i,j]*Loads[i,j]>=MinVolume[j]; con CapacityperLane{i in Lane, j in Carrier}: Loads[i,j]<=CapacityL[i,j]; con CapacityCarrier{j in Carrier}: sum{i in Lane}Loads[i,j]<=CapacityC[j]; */ solve; print Loads Z ZLOS; quit;