set ORIG; # origins
set DEST; # destinations
param T>0; #Zahl der Monate
param supply {ORIG} >= 0; # amounts available at origins
param demand {DEST} >= 0; # amounts required at destinations
check: sum {i in ORIG} supply[i] = sum {j in DEST} demand[j];
param cost {ORIG,DEST} >= 0; # shipment costs per unit
var Trans {ORIG,DEST,1..T} >= 0; # units to be shipped
minimize total_cost:
sum {i in ORIG, j in DEST,t in 1..T} cost[i,j] * Trans[i,j,t];
subject to Supply {i in ORIG,t in 1..T}:
sum {j in DEST} Trans[i,j,t] = supply[i];
subject to Demand {j in DEST,t in 1..T}:
sum {i in ORIG} Trans[i,j,t] = demand[j];
subject to goForeign :
sum {i in ORIG, j in DEST,t in 1..T} cost[i,j] * Trans[i,j,t]>=20;