I was looking at a model containing underlying traffic network. Such a network can be quite elegantly formulated in GAMS, but apparently many users still have problems with this. The mathematical formulation is:
  
  The GAMS formulation can look like:
              | $ontext                 max flow network example
 
 Data from example in
 Mitsuo Gen, Runwei Cheng, Lin Lin
 Network Models and Optimization: Multiobjective Genetic Algorithm Approach
 Springer, 2008
 
 Erwin Kalvelagen,
 Amsterdam Optimization,
 May 2008
 
 $offtext
 
 sets
 i 'nodes' /node1*node11/
 source(i) /node1/
 sink(i) /node11/
 ;
 alias(i,j);
 
 abort$(card(source)<>1) "We want one source node";
 abort$(card(sink)<>1) "We want one sink node";
 
 parameter capacity(i,j) /
 node1.node2 60,   node1.node3 60,   node1.node4 60,   node2.node3 30
 node2.node5 40,   node2.node6 30,   node3.node4 30,   node3.node6 50
 node3.node7 30,   node4.node7 40,   node5.node8 60,   node6.node5 20
 node6.node8 30,   node6.node9 40,   node6.node10 30,  node7.node6 20
 node7.node10 40,  node8.node9 30,   node8.node11 60,  node9.node10 30
 node9.node11 50,  node10.node11 50 /;
 
 set arcs(i,j);
 arcs(i,j)$capacity(i,j) = yes;
 display arcs;
 
 parameter rhs(i);
 rhs(source) = -1;
 rhs(sink) = 1;
 
 variables
 x(i,j) 'flow along arcs'
 f      'total flow'
 ;
 positive variables x;
 x.up(i,j) = capacity(i,j);
 
 equations
 flowbal(i) 'flow balance' ;
 
 flowbal(i)..
 sum(arcs(j,i), x(j,i)) - sum(arcs(i,j), x(i,j)) =e= f*rhs(i);
 
 model m/flowbal/;
 solve m maximizing f using lp;
 | 
   
  
 
or you could just write
ReplyDeleteflowbal(i).. sum(arcs(j,i), x(j,i)) - sum(arcs(i,j), x(i,j)) =E= 0 + f*(-1$(source(i) +1$(sink(i))) ;
:)