INVESTIGACION DE OPERACIONES I
(ST-113V)
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.
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);
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)
Restricciones de demanda
X11+X21+X31+X41 >= 35
X12+X22+X32+X42 >= 37
…. ….
X15+X25+X35+X45 >=41
Restricciones de signo
Xij >=0
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));
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.
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:
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.