viernes, 28 de noviembre de 2014

USO DEL PROGRAMA “LINGO” PARA SOLUCIONAR MODELOS DE TRANSPORTE. - II

FUNCIÓN OBJETIVO: 
Construir la función Objetivo del ejemplo implica considerar las cantidades a transportar de los orígenes i a los destinos j con sus costos respectivos. Estos son los atributos contenidos en el set LINKS. El Costo total a minimizar es la suma de los costos del producto multiplicados por las cantidades, desde todos los orígenes i a todos los destinos j. Es decir: COSTO(I, J) * CANTIDAD(I, J)); (Recuerde terminar en punto y coma cada información, pues de lo contrario no solucionará el modelo). De la teoría de formulación de modelos de Transporte, se conoce que hay que realizar la suma de esos valores y usa la función: @SUMA ( LINKS( I, J) : Finalmente se le dice a Lingo que se quiere minimizar la función precediéndola con MIN =
RESTRICCIONES. 
Las restricciones de oferta están limitadas por lo que denominamos CAPACIDAD en el modelo. Estas restricciones son la suma de cantidades transportadas de i a j y eso debe ser <= a la capacidad, cerrando siempre con punto y coma.

@SUM( DISTRIBUIDORES( J): CANTIDAD( I, J)) <=
CAPACIDAD( I));


Como ya se ha indicado la función @FOR genera restricciones, en este caso para cada capacidad en los países i. Agregando el comentario de restricciones de capacidad, que puede ser escrito en español, ya que Lingo ignora estos comentarios, se obtiene lo siguiente:

!The capacity constraints;
@FOR ( PAISES( I):
@SUM( DISTRIBUIDORES( J): CANTIDAD( I, J)) <=
CAPACIDAD( I));

De manera similar se construyen las restricciones de demanda limitadas por lo que denominamos DEMANDA en el modelo. Se genera una restricción para cada distribuidor @FOR (DISTRIBUIDORES(J): y sumamos las cantidades transportadas desde todos los países @SUM(PAISES(I): para cada uno de los distribuidores, cantidad que está establecida en la demanda. Con el comentario agregado, queda lo siguiente para el modelo:

!The demand constraints;
@FOR ( DISTRIBUIDORES( J):
@SUM( PAISES( I): CANTIDAD( I, J)) =
DEMANDA( J));

No hay comentarios:

Publicar un comentario