 MODEL:
!                                                          ;
! Cálculo del flujo máximo entre dos nodos arbitrarios     ;
!                                                          ;
! Cuando un arco no existe se le asigna capacidad 0        ;
!                                                          ;
! 3/12/03                                                 ;
!                                                          ;
SETS:
vertice/1..@file(max_flu_mul.dat)/:g;
arco(vertice,vertice):c, x;
ENDSETS

! El objetivo es maximizar la cantidad que recibe el sumidero;
max = @sum(vertice(i) | i #ne# sumidero : x(i,sumidero));

! Para cada arco se limita el flujo que se enviado        ;
@for(arco(i,j) : x(i,j) < c(i,j));

! Para cada nodo distinto del sumidero ;
! se impone la condición de balance de flujo ;
@for(vertice(k) | k #ne# sumidero :
   @sum(vertice(i): x(i,k)) + g(k) > @sum(vertice(j): x(k,j))
);

! Para el nodo de sumidero se impone que no salga nada ;
@for(vertice(j): x(sumidero,j) = 0);

DATA:
sumidero=?;
g = @file(max_flu_mul.dat);
c= @file(max_flu_mul.dat);
ENDDATA

END


