# Type model here or open a model file... set nodes; param K; # K est le nombre de couples de terminaux param orig {1..K} symbolic in nodes; # les K sources param dest {1..K} symbolic in nodes; # les K puits set arcs within nodes cross nodes; # 1 arête = 1 arc dans chaque sens param capa {arcs} >= 0 ; var flot{(i,j) in arcs, k in 1..K} >= 0 ; maximize flot_total_route : sum {k in 1..K, (orig[k], i) in arcs} flot[orig[k], i, k]; subject to node_conservation {k in 1..K, h in nodes diff {orig[k], dest[k]}}: sum {(i,h) in arcs} flot[i, h, k] = sum {(h,j) in arcs} flot[h, j, k]; subject to capacity {(i,j) in arcs}: sum {k in 1..K} (flot[i, j, k] + flot[j, i, k]) <= capa[i,j]; subject to one_way_source {k in 1..K}: sum {(i,orig[k]) in arcs} flot[i, orig[k], k] = 0; subject to one_way_sink {k in 1..K}: sum {(dest[k],i) in arcs} flot[dest[k], i, k] = 0;