Anda di halaman 1dari 11

UNIVERSIDAD NACIONAL DE INGENIERIA

Facultad de Ingeniería Industrial y de Sistemas


AREA DE SISTEMAS

INVESTIGACION DE OPERACIONES I
(ST-113V)

USO BASICO DE LINGO EN MODELOS DE


PROGRAMACION LINEAL

PROFESORA: Ing. IRMA INGA SERRANO


SOLUCION DE UN MODELO USANDO LINGO

LINGO es una herramienta que se utiliza para solucionar problemas grandes de


optimización de programación lineal y no lineal.
El LINGO soluciona: ;
 MODELOS EXPLICITOS: es el modelo en el cual aparece escrito como una
función lineal tanto la función objetivo como cada una de las restricciones del
modelo (como lo hace el LINDO).
 MODELO COMPACTO O COMPRIMIDO: es aquel modelo que por su
estructura, tanto la función objetivo como sus restricciones pueden ser expresados
en forma compacta utilizando funciones matemáticas. Para ello LINGO utiliza su
lenguaje de modelación.

USO DE LINGO EN PROBLEMAS DE PROGRAMACION LINEAL

USO DEL LINGO en MODELOS EXPLICITOS

Para problemas de programación lineal en las que no existen grupos de restricciones


similares, vamos a escribir el modelo en forma explícita. Esto se presenta en muchos
problemas de programación lineal diversos.
El LINGO puede funcionar como el LINDO bajo ciertas reglas de sintaxis diferentes.
Ejemplo:
Se desea hallar la solución óptima con análisis de sensibilidad del siguiente modelo:
Max Z= 3X1 + 2X2 + 3X3
s.a.
2X1 + X2 + X3 <= 30
3X1 + 4X2 + X3 >= 60
X1 + X2 >= 8
X1, X2 >=0

PASOS
1.- ESCRIBIR EL MODELO EN LINGO
a).- Cargar el programa LINGO, cuya pantalla debe lucir como ésta:
b).- Escribir el modelo tomando en cuenta las siguientes consideraciones básicas:
 Variables: LINGO supone que todas la variables son mayor o igual a cero.
 El nombre de las variables puede ser de hasta 32 caracteres empezando con un
carácter alfabético.
 Restricciones: Las restricciones tipo ≥ se escriben como > ó >=, las
restricciones tipo ≤ como < ó <= y las restricciones tipo = como = .
 Cada expresión como son la función objetivo o cada una de las restricciones, se
termina con punto y coma. Algunas expresiones pueden ocupar mas de una línea
en la pantalla.
 Los símbolos matemáticos que se usan son : + , - , / , * (producto)
 Comentarios: Para mejorar el entendimiento del modelo se puede agregar
comentarios al modelo, los cuales deben ir precedidos del signo ! y debe
terminar en punto y coma. LINGO ignora los comentarios.

Una vez escrito el modelo en LINGO, la pantalla se ve así:

2.- SOLUCION DEL MODELO

Menú  LINGO  Solve


LINGO comenzará compilando el modelo, es decir chequeando si el modelo cumple
con los requerimientos de sintaxis.

a).- Ventana de errores


Si existen errores, despliega una ventana con un mensaje indicando la(s) línea(s) donde
hay errores.
b).- Ventana de Estado de la Solución
Si no hay errores, se despliega la ventana de estado de la solución, útil para monitorear
el progreso de la solución y las dimensiones del modelo.

El marco VARIABLES muestra el número total de variables en el modelo y de ellas el


número de variables que no son lineales y el número de variables enteras en el modelo.
Nota: El conteo de variables no incluye aquellas que tienen un valor fijo. Ejm. X=4

El marco CONSTRAINTS muestra el total de restricciones y el número de éstas que no


son lineales. No cuenta las restricciones consideradas fijas (aquellas en la que todas sus
variables son fijas).

En el marco NONZEROS muestra el número total de coeficientes distintos de cero en el


modelo y éstos cuantos están asociados a variables no lineales.

El marco GENERATOR MEMORY USED indica la cantidad de memoria que el


generador del modelo LINGO está actualmente usando de su memoria compartida.

El marco ELAPSED RUNTIME muestra el total de tiempo usado hasta el momento


para generar y resolver el modelo.

El marco SOLVER STATUS muestra el estado actual de optimización:


STATE: Indica el estado actual de solución. Puede ser: “Global Optimum
(Optimo Global), “Local Optimum” (Optimo Local), “Feasible” (Factible),
“Infeasible” (Infactible), “Unbounded” (No Acotado), “Interrupted”
(Interrumpida) y “Undetermined” (Indeterminada)
OBJECTIVE: Valor Actual de la Función Objetivo
INFEASIBILITY: Cantidad en la que las restricciones están sobrepasadas.
ITERATIONS: Número de iteraciones realizadas para llegar a la solución actual

El marco EXTENDED SOLVER STATUS: muestra información para modelos de


programación entera.
BEST OBJ: Valor de la función objetivo para la mejor solución entera hallada.
OBJ BOUND: Límite teórico de la Función Objetivo
c).- Reporte de la Solución
Cuando LINGO ha terminado de resolver el modelo, se creará una nueva ventana
“Reporte de la Solución”, conteniendo los detalles de la solución del modelo.

3.- ANALISIS DE SENSIBILIDAD


Menú  LINGO  Range
Si esto no funciona entonces haga previamente lo siguiente:
Menú  LINGO  Options  General Solver  Dual Computations : price & ranges

4.- GUARDAR SU MODELO


Menú  save as

5.- IMPRIMIR
Menú  print
Imprime la ventana activa (la que está mas adelante)
USO DE LINGO EN PROGRAMACION LINEAL ENTERA

Los pasos son los mismos que para la programación lineal; al finalizar el modelo se
debe colocar las restricciones para las variables enteras.
Ejemplo:
Supongamos que tenemos el siguiente modelo de programación entera en la cual::
X1 es binaria (solo toma valores 0 ó 1), X2 es real , X3 es entera.
El modelo escrito en LINGO sería:

max = 3*x1+2*x2+3*x3;
!restricciones;
2*x1+x2+x3<=35;
3*x1+4*x2+x3>= 63;
x1+x2>=8;
@gin (x3);
@bin(x1);

La solución para este modelo es:


USO DE LINGO en MODELOS COMPRIMIDOS

Muchos modelos de programación lineal o programación lineal entera presentan grupos


de restricciones que tienen la misma estructura, lo cual hace posible que se pueda
escribir en forma comprimida, usando funciones matemáticas. Entre estos modelos
tenemos: Problemas de transporte, Problemas de asignación, Problemas de transbordo,
Problemas de redes (flujo máximo, ruta mas corta, flujo de costo mínimo, etc) y Otros.
En estos modelos se puede hacer uso del lenguaje de modelación de LINGO

LENGUAJE DE MODELACION DE LINGO


Es un lenguaje matemático de modelación, el cual permite expresar el problema en
forma natural y muy similar a la notación matemática estándar. En vez de ingresar cada
término de cada restricción en forma explícita, usted puede expresar una serie completa
de restricciones similares en una expresión compacta, única. Esto permite trabajar con
modelos mas fáciles de mantener y acrecentar.
Otra de las características importantes del lenguaje de modelación LINGO es el uso de
los SETS y la sección DATOS.

Sets
Cada vez que usted modela un sistema real, encontrará uno o mas conjuntos (sets) de
objetos relacionados. Ejemplos característicos de sets son: Fábricas, almacenes, clientes,
vehículos, empleados, etc. En modelos de red, se representan por los nodos.
Una característica importante del set es que si una restricción es aplicable a un miembro
del set, entonces será aplicable a todos los miembros del set.
En la sección SETS se definen los sets del modelo . A cada set se le da un nombre, se
indican sus miembros (en forma explícita o en forma implícita) y los atributos de cada
miembro del set

Datos
LINGO permite al usuario aislar los datos del modelo. Los datos corresponden a los
atributos de cada uno de los sets, a excepción de los que son las variables.
LINGO puede incluso leer datos desde una hoja de cálculo separada, de una base de
datos o un archivo de texto. Con datos separados del modelo es mucho mas fácil de
realizar cambios y hay menos probabilidad de cometer errores cuando los haga.

NOTA IMPORTANTE
 El lenguaje de modelación de LINGO cuenta con una serie de funciones
predefinidas, las cuales pueden ser llamadas para utilizarlas. Ejemplo de funciones
muy utilizadas son: SUM y FOR
 Como cualquier lenguaje, posee sus propias reglas de sintaxis para la escritura de
los modelos. Así por ejemplo: para llamar a una función utiliza el símbolo @.
Ejemplo @SUM(……) que indica que se debe sumar lo que se encuentra entre los
paréntesis.
 Las variables del modelo se encuentran presentes como uno de los atributos del
SET que representan a los ARCOS del modelo.
En la sección DATA se dan los valores de los atributos de los sets (excepto los que
representan las variables del modelo).
 En la solución del modelo, LINGO presenta como variables a todos los atributos de
los sets. Los valores de éstos (excepto el de las variables del modelo), son valores
que se les ha dado en la sección DATA.
PROBLEMA DE TRANSPORTE
La Compañía WP tiene 4 almacenes que abastece de teléfonos inalámbricos a 5 clientes
de este producto. Cada almacén tiene una disponibilidad que no puede ser excedida y
cada cliente tiene una demanda que debe ser satisfecha. WP desea determinar cuántos
teléfonos debe despachar desde cada almacén a cada cliente para minimizar el costo
total de transporte.
En la siguiente tabla se da los datos de los costos unitarios de transporte de cada
almacén a cada cliente, así como las disponibilidades de cada almacén y las demandas
de cada cliente.
CLIENTE
Almacén 1 2 3 4 5 Disponibilidad

1 6 2 6 7 4 60
2 4 9 5 3 8 55
3 5 2 1 9 7 50
4 7 6 7 3 9 45

Demanda 35 37 25 32 41

FORMULACION
Sea Xij la cantidad de teléfonos a enviar del almacén i al cliente j (i= 1,2,3,4 ;
j=1,2,3,4,5)

Min Z= 6X11+2X12+6X13+7X14+4X15+4X21+9X22+ ……..+3X44+9X45


s.a.
Restricciones de oferta
X11+X12+X13+X14+X15 <=60
X21+ X22+X23+X24+X25 <=55
…. …
X41+X42+X43+X44+X45 <=45

Restricciones de demanda
X11+X21+X31+X41 >= 35
X12+X22+X32+X42 >= 37
…. ….
X15+X25+X35+X45 >=41

Restricciones de signo
Xij >=0

Este modelo podemos escribir en forma compacta:


Min Z=  Costoij Xij
s.a.
j Xij <= ofertai ; i
i Xij >= demandaj ; j
Signo
Xij>=0
FORMULACION del modelo EN LINGO
El lenguaje de modelación LINGO permite traducir las notaciones matemáticas.
Ejemplo

Función Objetivo
En notación matemática:
Min Z= ij Costoij Xij
En LINGO: (Ojo: Se va a sustituir la variable X por la variable despacho )
MIN = @ sum(arco(i,j): costo(i,j)*despacho(i,j));

Las restricciones de oferta:


En notación matemática:
j Xij <=ofertai ; i
En LINGO:
@for(almacen (i): @sum( cliente(j): despacho(i,j)) < oferta(i,));

Definiendo los SETS


En el caso del ejemplo del problema de transporte se definirán tres sets: Almacén,
cliente y arcos de transporte, cada uno de los cuales posee atributos particulares.
En LINGO:
SETS:
ALMACEN/A1 A2 A3 A4/: OFERTA;
CLIENTES/C1 C2 C3 C4 C5/: DEMANDA;
ARCO (ALMACEN, CLIENTE): COSTO, DESPACHO;
ENDSETS

Esto significa: el set ALMACEN tiene 4miembros llamados A1 A2 A3 A4. Cada uno
de ellos tiene un atributo llamado OFERTA
De igual manera, el set CLIENTE tiene 5 miembros cada uno de los cuales tiene el
atributo demanda.
ARCO tiene 20 miembros (está dada en forma implícita: Para cada almacén 5 clientes),
cada uno de los cuales tiene los siguientes atributos: costo y despacho.

Ingresando los DATOS


Los datos del modelo son para los atributos a excepción del atributo DESPACHO que
precisamente son las variables cuyo valor se debe determinar para solucionar el
problema.
DATA
OFERTA= 60, 55, 50, 45;
DEMANDA= 35, 37, 25, 32, 41;
COSTO= 62674
49538
52197
7 6 7 3 9;
ENDDATA

Ojo: Los datos de costo se ingresa en el orden en que están definidos los arcos. En este
caso para un i varía los j.
SOLUCION DEL MODELO DE TRANSPORTE usando LINGO
PASOS
1.- Cargar el programa LINGO
2.- Escribir el modelo y se obtiene la siguiente ventana:

3.- Solución del Modelo:


Menú  LINGO  solve
Si existen errores de sintaxis aparece la ventana de mensaje de errores y usted debe
corregirlos y nuevamente al paso 3.

Si no existen errores de sintaxis, aparece la ventana de estado solución, en el que se


puede observar el valor óptimo de la función objetivo. (Zoptimo= 499)
4.a. En la ventana Reporte de la Solución aparece la solución del modelo en la que se
muestra los valores de las variables. Todos los atributos definidos en SETS son
considerados como variables.
De todas las variables mostradas, nos interesa los valores de las variables DESPACHOij
que dan solución al modelo. Los valores de las otras variables (atributos) son los que les
hemos asignado en la sección DATA

4.b.- Si deseamos que LINGO nos muestre solamente los valores de las variables
DESPACHO cuyos valores sean distintos a cero:
Menú  LINGO  solution
Campo: Atribute or row name seleccione DESPACHO
Campo: Type of output: seleccione text
Marque Nonzeros Only

Aparece la ventana con las variables del modelo cuyo valor es diferente de cero:

4.c. Si deseamos que LINGO nos muestre los valores de todas las variables
DESPACHO (incluyendo las que tienen valor cero) entonces en la ventana anterior
deshabilite Nonzeros Only.

Anda mungkin juga menyukai