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));

jueves, 27 de noviembre de 2014

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

Una empresa manufacturera elabora un producto en tres países diferentes P1, P2 y P3, que debe ser transportado a tres distribuidores situados en tres diferentes ciudades C1, C2 y C3 para su posterior venta. La cantidad de unidades de producto disponible en P1 es de 9.000, en P2 existen 4.000 y en P3 es de 8.000. 
Las unidades de producto requeridas en C1 es de 6.000, en C2 es de 5.000 y en C3 es de 7.000. Los costos unitarios de transporte, en unidades monetarias, desde cada país hasta cada una de los distribuidores de las tres ciudades se muestran en la siguiente matriz.
Los sets formados son: 1) países con tres países miembros denominados P1, P2 y P3. Las ofertas o capacidad es el atributo de cada país. 2) Los almacenes en las ciudades que serán distribuidores, constituyen un set con miembros denominados D1, D2 y D3, con la demanda que tiene cada uno como atributo. 3) Se crea un tercer set al que se le llamó links, convencionalmente. Este es un set que es derivado de los sets primitivos países y distribuidores, con cantidades que serán transportadas y costos unitarios como atributos. 
Tanto en este, como en los set anteriores puede usar cualquier palabra relacionada o conveniente. La forma de introducir esos sets aparece a continuación, con el ejemplo del modelo de transporte

miércoles, 26 de noviembre de 2014

USO DEL PROGRAMA “LINGO” PARA SOLUCIONAR MODELOS DE PROGRAMACIÓN LINEAL GENERAL. - VI

Para ser solucionado con el programa LINGO se pulsa sobre la expresión “SOLVER”. Si no ha seleccionado el algoritmo de solución, el programa lo selecciona.

martes, 25 de noviembre de 2014

USO DEL PROGRAMA “LINGO” PARA SOLUCIONAR MODELOS DE PROGRAMACIÓN LINEAL GENERAL. - V

FORMULANDO las RESTRICCIONES: La función @FOR se usa para generar todas las restricciones en los sets correspondientes.

lunes, 24 de noviembre de 2014

USO DEL PROGRAMA “LINGO” PARA SOLUCIONAR MODELOS DE PROGRAMACIÓN LINEAL GENERAL. - IV

LINGO lee los valores de un informe de datos, asignando los primeros n valores a la primera posición de cada uno de los n atributos en la lista de atributos: Los segundos n valores los asigna a la segunda posición de cada uno de los n atributos y así sucesivamente. En otras palabras, Lingo espera los datos en columnas más bien que en filas.

FORMULANDO la Función OBJETIVO: 

En este caso, se desea maximizar beneficios obtenidos por la producción y venta de los tres tipos de componentes. Siendo la variable COMPONENTES la que tiene beneficio unitario, el objetivo puede formularse incluyendo la cantidad por el beneficio unitario de la manera siguiente:
En palabras, allí dice: “Maximizar la suma de los beneficios unitarios multiplicado por la cantidad producida, para todos los tipos de componentes o miembros del set COMPONENTES. @SUM es usada para generar la operación de sumar los resultados de multiplicar todos los costos unitarios por las cantidades.

domingo, 23 de noviembre de 2014

USO DEL PROGRAMA “LINGO” PARA SOLUCIONAR MODELOS DE PROGRAMACIÓN LINEAL GENERAL. - III

Los nombres de los sets se seleccionan convenientemente de acuerdo al modelo planteado. Los dos últimos sets representan relaciones existentes en el modelo. La sintaxis usada para definirlo es diferente a los otros sets. En este caso, se usó: RXC para expresar la relación entre Recursos y Componentes y RCD para relacionarlo con demanda y Componente. Cada uno con atributo que se llamo “utilizado” y “requerido” respectivamente. En teoría, en las restricciones de los modelos lineales, los recursos son utilizados y las demandas constituyen requerimientos.

RXC( RECURSOS, COMPONENTES): UTILIZADO;
DXC( DEMANDAS, COMPONENTES): REQUERIDO;


En la forma copiada, se le está diciendo a LINGO que esos son sets derivados: RXC derivado de los sets primitivos Recursos y Componentes y DXC de los sets primitivos Demandas y Componentes. Se pudo haber copiado cada miembro de cada set, pero LINGO ayuda a generarlos al señalarlos en esa forma. 
En la sección DATA se le permite aislar los datos del resto de su modelo. Se empieza copiando la palabra DATA: y se finaliza con ENDATA Para iniciar a copiar los miembros de los set establecidos y/o sus atributos, las expresiones tienen la sintaxis siguiente:

object_list = value_list;
La “object_list” contiene los nombres de los atributos y/o un set con cuyos miembros desea iniciar; opcionalmente pueden estar separados por comas. No puede haber más de un nombre de un set en la Lista-Objeto; pero puede haber cualquier cantidad de atributos. Ejemplo.

sábado, 22 de noviembre de 2014

USO DEL PROGRAMA “LINGO” PARA SOLUCIONAR MODELOS DE PROGRAMACIÓN LINEAL GENERAL. - II

1.-Se trabaja con SETS, esto no es difícil, observe: 
La sección de sets o conjuntos que tienen algo en común, comienza con la expresión SETS: y termina con ENDSETS Observe los sets formados para este modelo. Pueden ser escritos en su idioma. Sólo las palabras claves del programa (mostradas en azul) se escriben en inglés. Los componentes a elaborar, constituyen un set, son las variables de decisión, y sus miembros son los tipos de componentes C1, C2 y C3, cada uno con atributos de beneficio y cantidad. Esto se escribe de la manera siguiente:

COMPONENTES/ C1,C2,C3 /:
BENEFICIO, CANTIDAD;

Los miembros componentes se copian, separados por una coma, dentro de “slashs” o barras inclinadas. Para empezar a copiar los atributos debe primero, escribir dos puntos (:). Cada atributo se copia separado con una coma, uno de otro. Cada set copiado, con miembros y atributos, finaliza con punto y coma (;). De la misma manera se procede para otros sets. En este problema, se definen como RECURSOS y DEMANDA. Recursos, para referirse a todas las restricciones del tipo ≤ y por ello se copian en un solo set. Los miembros integrantes del set son las máquinas y los componentes 1 y 2 a fabricar. Estos integrantes están limitados a una cantidad ≤. El atributo de cada uno es la disponibilidad. Los nombres dados a sets, miembros de sets o atributos es convencional.

RECURSOS / MAQUINA1, MAQUINA2,COMPONENTE3,
COMPONENTE1, COMPONENTE2/: DISPONIBLE;


El set denominado DEMANDA se crea para las restricciones del tipo ≥. Su único miembro es la cantidad demandada de componente 1. El único atributo es la cantidad mínima demandada, y se le llamó “demandado”.
DEMANDAS /DCOMPONENTE1/: DEMANDADO;