reset; model transportation.mod; param costFromDummy {DEMAND_NODES} default 0; param costToDummy {SUPPLY_NODES} default 0; param difference; # Add the problem date file here # e.g., data brewery.dat; let difference := (sum {s in SUPPLY_NODES} Supply[s]) - (sum {d in DEMAND_NODES} Demand[d]); if difference > 0 then { let DEMAND_NODES := DEMAND_NODES union {'Dummy'}; let Demand['Dummy'] := difference; let {s in SUPPLY_NODES} Cost[s, 'Dummy'] := costToDummy[s]; } else if difference < 0 then { let SUPPLY_NODES := SUPPLY_NODES union {'Dummy'}; let Supply['Dummy'] := - difference; let {d in DEMAND_NODES} Cost['Dummy', d] := costFromDummy[d]; }; # else the problem is balanced # Make sure the problem is balanced check : sum {s in SUPPLY_NODES} Supply[s] = sum {d in DEMAND_NODES} Demand[d]; option solver cplex; solve; display Flow;