# AMPL model for the Multicommodity Flow Problem # # By default, this model assumes that b[i] = 0, c[i,j] = 0, # l[i,j] = 0 and u[i,j] = Infinity. # # Parameters not specified in the data file will get their default values. set NODES; # nodes in the network set ARCS within {NODES, NODES}; # arcs in the network set K; # commodities param b {NODES,K} default 0; # supply/demand for commidty k at node i param c {ARCS,K} default 0; # cost per unit flow of commodity k on arc(i,j) param u {ARCS,K} default Infinity; # upper bound on flow of commodity k on arc(i,j) param U {ARCS} default Infinity; # bundle capacity on arc(i,j) var x {ARCS,K} integer; # flow of commodity k on arc (i,j) minimize cost: sum{(i,j) in ARCS, k in K} c[i,j,k] * x[i,j,k]; # Flow Out(i) - Flow In(i) = b(i) subject to flow_balance {k in K, i in NODES}: sum{j in NODES: (i,j) in ARCS} x[i,j,k] - sum{j in NODES: (j,i) in ARCS} x[j,i,k] = b[i,k]; subject to capacity {k in K, (i,j) in ARCS}: 0 <= x[i,j,k] <= u[i,j,k]; subject to bundle {(i,j) in ARCS}: sum{k in K} x[i,j,k] <= U[i,j];