Está en la página 1de 13

UNIVERSIDAD CATÓLICA DE SANTA MARÍA

FACULTAD DE CIENCIAS E INGENIERÍAS


FÍSICAS Y FORMALES
Escuela Profesional de Ingeniería Industrial

GUÍA DE PRÁCTICAS

INVESTIGACION OPERATIVA I

Autor:
Ing. Efraín Rafael Murillo Quispe

AREQUIPA – PERU
2020
Sesión Software de
optimización
1

I
OBJETIVOS
 Conocer y aplicar herramientas de software de optimización: Lingo, Lindo, WinQsb,
PomQm, Geogebra y Solver de excel para resolver modelos matemáticos de programación
lineal.
 Interpretar de forma básica el reporte del software de optimización.

II
TEMAS A TRATAR
 Herramientas de software de optimización para resolver modelos matemáticos de
Programación Lineal.
 Interpretación básica del reporte del software de optimización.

III
MARCO TEORICO

HERRAMIENTAS DE SOFTWARE:

1. Software WinQSB (Quantitative Systems for Business for Windows - Sistema


Cuantitativo para Negocios para Windows)

El paquete WinQSB es una herramienta de Aprendizaje asistido por el computador para ganar una
experiencia “práctica" sólida de los conceptos y técnicas usadas en el curso de Investigación Operativa.
El QSB (Quantitative Systems for Business – Sistemas Cuantitativo para Negocios) es desarrollado y
mantenido por Yih-Long Chang. Este paquete de software contiene los algoritmos de solución de
problemas de Investigación de Operaciones y Gerencia (OR/MS) más ampliamente usados.
WinQSB es un sistema interactivo de ayuda a la toma de decisiones que contiene herramientas muy útiles
para resolver distintos tipos de problemas en el campo de la investigación operativa. El sistema está
formado por distintos módulos, uno para cada tipo de modelo o problema. Entre ellos destacaremos los
siguientes:
 Linear programming (LP) and integer linear programming (ILP): este módulo incluye los
programas necesarios para resolver el problema de programación lineal gráficamente o utilizando el
algoritmo del Simplex; también permite resolver los problemas de programación lineal entera
utilizando el procedimiento de Ramificación y Acotación (Branch&Bound).
 Linear goal programming (GP) and integer linear goal programming (IGP): resuelve modelos
de programación multiobjetivo con restricciones lineales.
 Quadratic programming (QP) and integer quadratic programming (IQP): resuelve el problema
de programación cuadrática, es decir, problemas con función objetivo cuadrática y restricciones
lineales. Utiliza un método Simplex adaptado. Los modelos de IQP los resuelve utilizando algoritmos
de ramificación y acotación.
 Network modeling (NET): incluye programas específicos para resolver el problema del transbordo,
el problema del transporte, el de asignación, el problema del camino más corto, flujo máximo, árbol
generador, y problema del agente viajero.
 Nonlinear programming (NLP): permite resolver problemas no lineales irrestringidos utilizando
métodos de búsqueda lineal, y problemas no lineales con restricciones utilizando el método SUMT
(función objetivo con penalizaciones sobre el incumplimiento de las restricciones).
 PERT/CPM: módulo de gestión de proyectos en los que hay que realizar varias actividades con
relaciones de precedencia.
A cada uno de estos módulos se accede directamente desde la entrada a WinQSB en el menú principal,
seleccionando respectivamente la opción respectiva.

1.1 CREANDO UN NUEVO PROBLEMA DE PROGRAMACIÓN LINEAL O ENTERA


Para resolver problemas de programación Lineal o Entera seleccionamos la siguiente opción:

Luego la opción Nuevo Problema (New Problem) genera una plantilla en el cual se introducirán las
características de nuestro problema:

A continuación, se describirán cada una de las casillas de esta ventana:


 Título del problema (Problem Title): Se escribe el título con que identificamos el problema.
 Número de variables (Number of Variables): Se escribe la cantidad de variables con que cuenta
el sistema en el modelo original.
 Número de restricciones (Number of Constraints): Se anotan la cantidad de restricciones con
que cuenta el modelo (no se debe contar la restricción de no negatividad).
 Objetivo (Objective Criterion): Los problemas de programación lineal y entera se clasifican en
dos: problemas de Maximización (Maximization) y Minimización (Minimization).
 Formato de entrada de datos (Data Entry Format): Permite elegir entre dos plantillas distintas
para introducir los datos del modelo. La primera alternativa se asemeja a una hoja de cálculo,
mientras que la segunda, es una plantilla diseñada especialmente para este fin.
 Tipo de variable (Default Variable Type): En esta parte se indica las características del modelo:
 Continuas no negativas (Nonnegative continuous): Indica que el modelo lo
componen variables continuas no negativas (iguales o mayores a cero).
 Enteras no negativas (Nonnegative Integer): Variables enteras no negativas.
 Binarias (Binary): Variables cuyo valor solo serán 0 o 1.
 Sin asignar / Irrestrictas (Unsigned/unrestricted): Variables irrestrictas.
1.2 UN PROBLEMA EJEMPLO
Mediante un ejemplo demostraremos como se introducen los datos para la creación de un nuevo problema
de programación lineal.
ENUNCIADO
Una Empresa industrial produce 4 modelos de Teclados cada uno de los cuales es tratado en los
departamentos de ensamblado y acabado. El número de horas hombre de mano de obra necesaria, por
teclado en cada departamento es:
Modelo1 Modelo2 Modelo3 Modelo4
Ensamblado 4 10 7 10
Acabado 1 1 3 4
Se dispone de 6000 horas hombre en el departamento de ensamblado y de 4000 en el de acabado en los
próximos 6 meses. Las utilidades en dólares para cada modelo de teclado son: 2.2, 5, 3 y 4
respectivamente para los teclados 1, 2, 3 y 4.
Existen restricciones de producir al menos 100 unidades del modelo 2, a lo más 200 unidades del modelo
3 y a lo más 250 unidades del modelo 4. La producción del modelo 1 es irrestricta.
Determine la cantidad debe producir el fabricante de cada modelo, de manera que las utilidades sean las
máximas.
Variables de decisión:
Sea X1, X2, X3 y X4 las variables del problema que representan el número de teclados modelo 1, 2, 3 y 4
respectivamente a producir los próximos 6 meses.
Una vez analizado el enunciado el lector procederá a crear el modelo matemático.
MODELO MATEMÁTICO
Función Objetivo:
Max Z = $2.2X1+$5X2+$3X3+$4X4
Restricciones (St)
4X1+10X2+7X3+10X4<=6000 Hrs. Hombre de Ensamblado
X1+X2+3X3+4X4<=4000 Hrs. Hombre de Acabado
X2>=100 Demanda mínima del producto 2
X3<=200 Demanda Máxima del producto 3
X4<=250 Demanda Máxima del producto 4
Rango de existencia
X1,X2,X3,X4>=0
Podemos ver claramente que estamos ante un problema de Maximización, con cinco restricciones y
cuatro variables (las cuales trabajaremos como variables continuas de tipo No Negativas).
Teniendo claro esto, se alimenta el programa desde la ventana Nuevo Problema (New Problem):
Una vez llenados todos los campos pulsamos el botón OK, generando nuevas opciones dentro del
programa.
1.3 INGRESANDO EL MODELO
Si se escogió por la plantilla tipo hoja de calculo (Spreadsheet Matrix Form), se mostrará una nueva
ventana dentro de la ZONA DE TRABAJO, la cual servirá para introducir el modelo matemático.

La primera fila (Variable -->) corresponde a los encabezados de las variables (en gris) definidas
automáticamente por el sistema como X1, X2, X3 y X4 (son las tres variables del ejemplo), seguido por
el operador de relación (Direction) y la solución de las restricciones o Lado de la mano derecha (Right
Hand Side -R.H.S.). El nombre de las variables se puede cambiar accediendo al submenú Nombre de
variables (Variables Names) del menú Editar (Edit).

La segunda fila (Maximize) permite introducir los coeficientes de la función objetivo. Luego aparecen
una serie de filas identificadas por la letra C y un consecutivo, las cuales corresponden a la cantidad de
restricciones con que cuenta el modelo:
Por último, aparecen tres filas donde definimos el valor mínimo aceptado por cada variable (Lower
Bound), el valor máximo (Upper Bound) y el tipo de variable (Variable Type). En el caso del valor
máximo, M significa que la variable podrá recibir valores muy grandes (tendientes a infinito).
1.4 EL MODELO DE EJEMPLO
Para ingresar nuestro modelo propuesto en el ejemplo, el primer paso es llenar la segunda fila con los
coeficientes de la función objetivo:

Se sigue con las restricciones C1, C2, C3, C4 y C5:

Usted podrá cambiar los operadores de relación pulsando dos veces seguidas sobre ellos con el botón
izquierdo del Mouse. Las otras filas se mantienen iguales.
1.5 RESOLVIENDO UN PROBLEMA
Cuando haya terminado de ingresar el modelo en la plantilla, podrá utilizar las herramientas que provee el
menú Resolver y Analizar (Solve and Analyze).
Este menú cuenta con las siguientes opciones:

 Resolver el problema (Solve the Problem): Resuelve el problema mediante el método Simplex
Primal. Muestra la solución final completa.
 Resolver y mostrar los pasos (Solve and Display Steps): Muestra cada uno de los pasos o las
interacciones realizadas por el Simplex hasta llegar a la solución óptima.
 Método Gráfico (Graphic Method): Resuelve el problema de programación lineal mediante el
método gráfico (para problemas que trabajan con dos variables).
1.6 RESOLVIENDO EL PROBLEMA EJEMPLO
Seleccionamos la primera opción del menú Resolver y Analizar (Solve and Analyze), donde se mostrará
una pequeña ventana con el mensaje “El problema ha sido resuelto. La solución óptima ha sido
lograda”.

Pulsamos el botón ACEPTAR y automáticamente el programa generará la solución optima.


1.7 ENTENDIENDO LA MATRIZ FINAL
Esta matriz presenta suficiente información sobre el modelo resuelto. La primera parte (Solution
Summary) corresponde al análisis de las variables definidas (X1, X2, X3 y X4).

La columna Valores de la solución (Solution Value) presenta los valores óptimos encontrados. En este
ejemplo se tiene que X1 es 1250 unidades, X2 es 100 unidades X3 y X4 es 0 unidades.
La columna Costo o Utilidad Unitaria (Unit Cost or Profit) muestra los coeficientes de la función
objetivo para cada variable.
La columna Contribución Total (Total Contribution) representa el costo o utilidad generado por cada
variable. Por ejemplo, si el valor de la variable X2 es 100 unidades y la utilidad unitaria es $5, el
beneficio total resultará de la multiplicación de ambos valores dando como resultado $500. Justo debajo
de la última contribución aparece el valor de Z óptimo ($3250).
La columna Costo Reducido (Reduced Cost) identifica el costo que genera incrementar una unidad para
cada variable no básica. La siguiente columna llamada Estatus de la Variable (Basis Status) muestra si
una variable es básica (Basic) o no (at bound).
La siguiente parte de la matriz final (Constraint Summary), presenta las variables de holgura del sistema
(C1, C2, C3, C4 y C5).

La columna Lado de la mano derecha (Left Hand Side) muestra el valor alcanzado al reemplazar los
valores de X1, X2, X3 y X4 en cada restricción (recuerde que cada restricción se identifica con su
variable de holgura).
Las dos columnas siguientes (Direction y Right Hand Side) muestran las especificaciones dadas a las
restricciones en cuanto al operador de relación (≤ o ≥) y los valores originales de las restricciones (6000,
4000, 100, 200 y 250).
La columna Déficit o Superávit (Slack or Surplus) muestran los valores de las variables de holgura y la
columna Precios Sombras (Shadow Price) corresponde a los precios sombras o precios duales; cuánto se
estaría dispuesto a pagar por una unidad adicional de cada recurso.
1.8 LA OPCIÓN IMPRIMIR
Cada ventana mostrada puede ser impresa mediante la opción Imprimir (Print) que se encuentra en el

menú Archivo (File) o mediante el botón desplegado en la barra de herramientas.


1.9 GUARDANDO UN PROBLEMA
Si quiere acceder a un problema posteriormente simplemente seleccione la opción Salvar como (Save As)

o pulsando sobre el botón

2. Software LINDO 6.0 (Linear INteractive and Discrete Optimization - Optimización


Lineal Interactiva y discreta).

Es un paquete para computadora de fácil uso, trabaja en entorno WINDOWS, y mediante el cual se puede
resolver problemas de programación lineal, entera y binaria, fue creada en 1986 por Linus Schrage.

Programación lineal en LINDO


Para resolver un problema de programación lineal en LINDO, asegúrese que la pantalla tenga una
ventana, o área de trabajo, vacía, con “Untitled” en la parte superior del área de trabajo. Si es necesario se
abre una nueva ventana mediante la selección de New (nuevo) en el menú File (archivo), o presionando el
botón de New File (Nuevo archivo).

Utilizamos el editor de texto del LINDO, y editamos el modelo matemático en formato lindo.
MODELO MATEMÁTICO
Función Objetivo:
Max Z = $2.2X1+$5X2+$3X3+$4X4
Restricciones (St)
4X1+10X2+7X3+10X4<=6000 Hrs. Hombre de Ensamblado
X1+X2+3X3+4X4<=4000 Hrs. Hombre de Acabado
X2>=100 Demanda mínima del producto 2
X3<=200 Demanda Máxima del producto 3
X4<=250 Demanda Máxima del producto 4
Rango de existencia
X1,X2,X3,X4>=0

FORMATO LINDO:

Para resolver el modelo se procede de la siguiente manera:


* Seleccione la opción Solve en el menú Solve (Resolver).
* Cuando pregunte si usted desea el análisis de sensibilidad, escoja por ahora no. Esto se explicará más
adelante.
* Cuando este terminada la solución, aparecerá una pantalla que muestra el estado del comando de
Solve. Después de revisar la información mostrada, seleccione Close (Cerrar).
* Ahora debe usted ver la información que introdujo en una ventana que se llama “Reports Window”.
De un clic en cualquier parte de esta ventana, y sus datos desaparecerán del primer plano. Desplácese
hasta la parte superior de la ventana usando la flecha única de la parte derecha de la pantalla, y
enseguida esta se verá con los siguientes resultados:

Salida del Software LINDO:

Interpretación:

LP OPTIMUN FOUND AT STEP 2


Lo que señala que LINDO encontró la solución óptima después de dos iteraciones del algoritmo
SIMPLEX que lo veremos en posteriores laboratorios.
OBJECTIVE FUNCTION VALUE
1) 3250.000000
Indica que el valor de z óptimo es 3250 dólares.
VALUE:
Da el valor de la variable en la solución óptima del problema. Por lo tanto, la solución óptima le
recomienda producir 1250 unidades del modelo 1, 100 del modelo 2 y 0 unidades de los modelos 3 y 4
(X1 = 1250, X2 = 100, X3 = 0 y X4 = 0)
SLACK OR SURPLUS:
Proporciona el valor de holgura o excedente de los recursos en la solución óptima. Por lo tanto, representa
el recurso no utilizado o excedente en la restricción.
Con la información del reporte podemos dar respuesta a las siguientes inquietudes:

a) La utilidad máxima de la empresa. ¿Qué cantidad se debe producir de cada modelo?


Respuestas:
Utilidad máxima: Z= 3250 dólares
Plan de producción:
X1= 1250 unidades del modelo 1
X2=100 unidades del modelo 2
X3=0 unidades del modelo 3
X4=0 unidades del modelo 4

b) ¿Cuántas horas ociosas de ensamblado hay? ¿Cuántas horas ociosas de acabado hay?
Respuestas:
No hay horas ociosas de ensamblado
Hay 2650 horas ociosas de acabado.

c) ¿Cuántas horas de ensamblado se utilizan en la producción del modelo 1?


Respuesta:
Modelo 1: 4*1250= 5000 hrs. de ensamblado

IV
(La práctica tiene una duración de 02 horas) ACTIVIDADES

1. Problema de producción. Una empresa de producción de muebles dispone de dos diferentes


tipos de madera; tiene 1500 pies tabla del tipo A y 1000 del tipo B, también dispone de 800 horas-
hombre para efectuar el trabajo. La demanda semanal que ha estimado es la siguiente: cuando menos
40 mesas, 130 sillas, 30 escritorios y no más de 10 libreros. Las cantidades de madera Ay B, las
horas-hombre que requiere la elaboración de cada unidad de artículo y las utilidades unitarias, están
indicadas en el siguiente cuadro:
Madera Horas Demanda Utilidades
Artículo A B Hombre Estimada por unidad
Mesa 5 2 3 no menos de 40 $ 12
Silla 1 3 2 no menos de 130 5
Escritorio 9 4 5 no menos de 30 15
Librero 12 1 10 no más de 10 10
Disponibilidad semanal 1500 1000 800
Tome el modelo matemático mostrado abajo y utilizando la herramienta de software de optimización
POMQM, resuelva y responda las siguientes inquietudes:
1. Determine el plan de producción de la empresa (Cuánto producir de cada artículo).
2. ¿Cuál es la utilidad máxima?
3. ¿Cuántas Horas Hombre no se utilizan?

Variables de decisión:
Xi: Número de unidades a producir semanalmente del artículo i
i=1,2,3,4 (1: Mesas, 2: Sillas, 3: Escritorios, 4: Libreros)

MODELO MATEMÁTICO:

Función objetivo:
Max 12x1+5x2+15x3+10x4

Restricciones del sistema:


5x1+x2+9x3+12x4<=1500 Pies de Madera A
2x1+3x2+4x3+x4<=1000 Pies de Madera B
3x1+2x2+5x3+10x4<=800 horas hombre
X1>=40 demanda mínima de mesas
X2>=130 demanda mínima de sillas
X3>=30 demanda mínima de escritorios
X4<=10 demanda máxima de libreros

Rango de existencia:
Xi>=0
2. Problema de Dietas alimenticias. Lupita está preocupada por su sobrepeso y el costo de la
comida diaria, ella sabe que para bajar de peso, debe consumir a lo más 1350 Kcalorías, pero requiere
un mínimo de 500 mgr. de vitamina A, 350 mgr. de Calcio, 200 mgr. de proteínas y 150 mgr de
minerales. Con los alimentos de la tabla siguiente, formule el Modelo de Programación Lineal que
resuelva la dieta de Lupita.

Alimento Porción Vitam. A Calcio Proteínas Minerales Costo Kcalorías


Leche 1 taza 105 75 50 35 S/. 1.0 80
Huevo 2 unidades 75 80 50 15 S/. 0.7 50
Espinacas 1 ración 100   125 78 S/. 0.5  
Chancho 2 chuletas 25 10 55   S/. 4.0 175
Pescado 2 trozos 150 50 100 50 S/. 2.0 150
Pastel 2 rebanadas 30 5 8   S/. 1.5 200

Tome el modelo matemático mostrado abajo y utilizando la herramienta de software de optimización


LINDO, resuelva las siguientes inquietudes:
1. ¿Cuántas porciones de cada alimento deberá consumir Lupita de manera óptima?
2. ¿Cuál será el costo de la dieta de Lupita?
3. Incremente restricciones al modelo a fin de obtener una dieta acorde a su gusto.

Variables de decisión:
Xi: Porción a consumir del alimento i
i=1,2,3,4,5,6 (1:Leche, 2:Huevo, 3:Espinacas, 4:chancho, 5:pescado, 6:pastel)

MODELO MATEMÁTICO:

Función objetivo:
Min x1+0.7x2+0.5x3+4x4+2x5+1.5x6

Restricciones del sistema:


80x1+50x2+175x4+150x5+200x6<=1350 máximo de calorías
105x1+75x2+100x3+25x4+150x5+30x6>=500 mínimo de mgr de vitamina A
75x1+80x2+10x4+50x5+5x6>=350 mínimo de mgr de calcio
50x1+50x2+125x3+55x4+100x5+8x6>=200 mínimo de mgr de proteína
35x1+15x2+78x3+50x5>=150 mínimo de mgr de minerales

Rango de existencia:
xi>=0

MODELO MATEMÁTICO en formato LINDO:

Min x1+0.7x2+0.5x3+4x4+2x5+1.5x6
ST
80x1+50x2+175x4+150x5+200x6<=1350
105x1+75x2+100x3+25x4+150x5+30x6>=500
75x1+80x2+10x4+50x5+5x6>=350
50x1+50x2+125x3+55x4+100x5+8x6>=200
35x1+15x2+78x3+50x5>=150
END
3. Problema de la ruta más corta. Dada la de calles y la matriz de distancias mostradas a
continuación:

Red de calles:

Matriz de distancias entre dos esquinas (en metros):

Tome el modelo matemático mostrado abajo y utilizando la herramienta de software de optimización


LINDO, resuelva las siguientes inquietudes:
1. Encuentre la ruta más corta entre las esquinas 01 y 16 (Dibuje la ruta respectiva en la
red de calles mostrada arriba en base a las variables de decisión del resporte con valores
1).
2. Indique la distancia total recorrida.

Variable de decisión:
Sea Xij=1 si el arco ij pertenece a la ruta más corta
=0 en caso contrario
i=01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16
j=01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16

MODELO MATEMÁTICO (preparado en formato LINDO):


Min
50x0102+150x0107+50x0201+60x0203+150x0208+60x0302+
50x0304+40x0306+50x0403+40x0405+40x0504+50x0506+
100x0511+40x0603+50x0605+40x0609+150x0701+50x0708+
300x0712+150x0802+50x0807+50x0809+250x0812+50x0906+
50x0908+50x0910+200x0914+50x1009+50x1011+200x1015+
100x1105+50x1110+200x1116+300x1207+250x1208+50x1213+
50x1312+50x1314+100x1315+200x1409+50x1413+50x1415+
200x1510+50x1514+50x1516+200x1611+50x1615
St
x0102+x0107-x0201-x0701=1
x0201+x0203+x0208-x0102-x0302+x0802=0
x0302+x0304+x0306-x0203-x0403-x0603=0
x0403+x0405-x0304-x0504=0
x0504+x0506+x0511-x0405-x0605+x1105=0
x0603+x0605+x0609-x0306-x0506-x0906=0
x0701+x0708+x0712-x0107-x0807-x1207=0
x0802+x0807+x0809+x0812-x0208-x0708-x0908-x1208=0
x0906+x0908+x0910+x0914-x0609-x0809-x1009-x1409=0
x1009+x1011+x1015-x0910-x1110+x1510=0
x1105+x1110+x1116-x0511-x1011-x1611=0
x1207+x1208+x1213-x0712-x0812-x1312=0
x1312+x1314+x1315-x1213-x1413=0
x1409+x1413+x1415-x0914-x1314-x1514=0
x1510+x1514+x1516-x1015-x1315-x1415-x1615=0
x1611+x1615-x1116-x1516=-1
End
Int 47
El comando de LINDO Int se usa para restringir el rango de existencia de las 47 variables de
decisión a valores sólo BINARIOS.

4. POMQM.- Implemente un manual para resolver un modelo matemático con el software de


optimización POMQM.

También podría gustarte