Práctica 5.
Programación lineal y entera con Winqsb 1
Práctica 5
PROGRAMACIÓN LINEAL Y ENTERA CON WINQSB
Objetivos:
• Introducir al alumno en el programa winqsb y sus diferentes módulos
• Resolver problemas de programación lineal y entera con el programa.
Descripción:
En esta práctica se muestra al alumno otro software para resolver problemas de
programación lineal y entera, el programa Winqsb
Índice:
1. Introducción al programa
2. Creando un nuevo problema de programación lineal o entera
2.1 Un problema ejemplo
2.2 Ingresando el modelo
2.3 El modelo de ejemplo
2.4 Resolviendo un problema
2.5 Entendiendo la matriz final
2.6 La tabla final del simplex
2.7 Resolviendo el modelo paso a paso
3. Problemas suplementarios
1. Introducción al programa
Prácticas de Investigación Operativa Departamento de Matemáticas.
Práctica 5. Programación lineal y entera con Winqsb 2
El programa WinQSB (Windows Quantitative System Business), cuya propiedad
intelectual es del Dr. Yih-Long Chang y es aplicable a la mayoría de problemas de
Investigación Operativa. Algunos de los enlaces de donde se puede descargar el
programa son los siguientes:
http://www.investigacion-operaciones.com/Metodos_computacionales.htm
http://ar.geocities.com/io_sg1/software.html
http://www.wiley.com/college/tech/winqsb.htm
WINQSB es una aplicación versátil que permite la solución de una gran cantidad de
problemas: administrativos, de producción, de recurso humano, dirección de proyectos,
etc.
• Los módulos que componen el programa son:
• Programación Lineal y Entera
• Programación por Metas
• PERT – CPM
• Planeación Agregada
• Pronósticos
• Teoría y Sistemas de Inventario
• Análisis de Decisiones
• Planeación de Requerimiento de Materiales (MRP)
• Programación Dinámica
• Modelos de Redes
• Teoría y simulación de sistemas de colas
• Cadenas de Harkov
El acceso al WINQSB se puede hacer a través del botón INICIO del sistema operativo
WINDOWS, en el menú PROGRAMAS en la carpeta WINQSB. WINQSB es una
herramienta poderosa para investigación operativa, formada por 19 módulos:
1. Análisis de muestreo de aceptación (Acceptance Sampling Analysis)
2. Planeación agregada (Aggregate Planning)
3. Análisis de decisiones (Decision Analysis)
4. Programación dinámica (Dynamic Programming)
Prácticas de Investigación Operativa Departamento de Matemáticas.
Práctica 5. Programación lineal y entera con Winqsb 3
5. Diseño y localización de plantas (Facility Location and Layout)
6. Pronósticos (Forecasting)
7. Programación por objetivos (Goal Programming)
8. Teoría y sistemas de inventarios (Inventory Theory and System)
9. Programación de jornadas de trabajo (Job Scheduling)
10. Programación lineal y entera (Linear and integer programming)
11. Procesos de Harkov
12. Planeación de Requerimiento de Materiales
13. Modelación de redes (Network Modeling)
14. Programación no lineal (Nonlinear Programming)
15. PERT y CPM (PERT_CPM)
16. Programación cuadrática (Quadratic Programming)
17. Cartas de control de calidad (Quality Control Chart)
18. Sistemas de cola (Queuing Analysis)
19. Simulación de sistemas de cola (Queuing Analysis Simulation)
Una vez seleccionado el módulo con el cual se desee trabajar, aparecerá una ventana
cuyas características iniciales serán similares para todos los módulos del WINQSB.
La parte superior de la ventana llamada TITULO indica el nombre del módulo
seleccionado, en este caso se optó por mostrar el módulo de Programación Lineal y
Entera (Linear and integer programming). Debajo encontramos los menús Archivo
(File) y Ayuda (Help).
El programa también cuenta con una barra de herramientas que ayuda de forma
significativa la selección de las opciones más usadas. En el centro de la venta se
encuentra un espacio vacío el cual llamaremos área de trabajo, donde se procederá a
alimentar con información al programa.
2. Programación lineal y entera
La opción Nuevo Problema (New Problem) genera una plantilla en el cual se
introducirán las características de nuestro problema:
Prácticas de Investigación Operativa Departamento de Matemáticas.
Práctica 5. Programación lineal y entera con Winqsb 4
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 indican las
características del modelo:
o Continuas no negativas (Nonnegative continuous): Indica que el modelo
lo componen variables continuas no negativas (iguales o mayores a
cero).
o Enteras no negativas (Nonnegative Integer): Variables enteras no
negativas.
o Binarias (Binary): Variables cuyo valor solo serán 0 o 1.
o Sin asignar / Irrestrictas (Unsigned/unrestricted): Variables irrestrictas.
2.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
La empresa AXUS S.A. desea conocer la cantidad de productos A, B y C a producir
para maximizar el beneficio, si cada unidad vendida genera en utilidad $150, $210 y
$130 por unidad respectivamente. Cada producto pasa por 3 mesas de trabajo,
restringiendo la cantidad de unidades producidas debido al tiempo disponible en cada
una de ellas. La siguiente tabla muestra el tiempo requerido por unidad de cada
producto en cada mesa y el tiempo total disponible semanalmente (tiempo dado en
minutos):
Tiempo requerido Tiempo requerido Tiempo requerido
Mesa 1 Mesa 2 Mesa 3
Producto 1 10 12 8
Producto 2 15 17 9
Producto 3 7 7 8
Tiempo total disponible 3300 3500 2900
por mesa
Se supone que cada unidad producida es vendida automáticamente. Determinar la
combinación de productos que maximicen la utilidad para la compañía.
Una vez analizado el enunciado el lector procederá a crear el modelo matemático.
Prácticas de Investigación Operativa Departamento de Matemáticas.
Práctica 5. Programación lineal y entera con Winqsb 5
MODELO MATEMÁTICO
Función Objetivo (F.O.):
Max. Z = $150X1 + $210X2 + $130X3
Restricciones (S.A.):
10X1 + 15X2 + 7X3 ≤ 3300 Minutos
12X1 + 17X2 + 7X3 ≤ 3500 Minutos
8X1 + 9X2 + 8X3 ≤ 2900 Minutos
X1 , X2 , X3 ≥ 0
Ahora pasamos a introducir este modelo en 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.
2.3 Ingresando el modelo
Si se escogió por la plantilla tipo hoja de calculo (Spreadsheet Matrix Form), se
mostrará una nueva ventana dentro de el área 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 y X3 (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).
2.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 y se sigue con las restricciones
C1, C2 y C3:
Se pueden cambiar los operadores de relación pulsando dos veces seguidas
Prácticas de Investigación Operativa Departamento de Matemáticas.
Práctica 5. Programación lineal y entera con Winqsb 6
sobre ellos con el botón izquierdo del Mouse. Las otras filas se mantienen iguales.
2.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).
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.
Prácticas de Investigación Operativa Departamento de Matemáticas.
Práctica 5. Programación lineal y entera con Winqsb 7
2.6 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 y X3).
La columna Valores de la solución (Solution Value) presenta los valores óptimos
encontrados. En este ejemplo se tiene que X1 es 0 unidades, X2 es 105,4795 unidades y
X3 es 243,8356 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 105,4795 unidades y la utilidad unitaria es $210, el
beneficio total resultará de la multiplicación de ambos valores dando como resultado
$22.150,69. Justo debajo de la última contribución aparece el valor de Z óptimo
($53.849,32). 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). La columna Lado de la mano derecha (Left Hand
Side) muestra el valor alcanzado al reemplazar los valores de X1, X2 y X3 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 (≤) y los
valores originales de las restricciones (3.300, 3.500 y 2.900 minutos).
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; cuánto se estaría dispuesto a pagar por una unidad adicional de cada recurso.
Prácticas de Investigación Operativa Departamento de Matemáticas.
Práctica 5. Programación lineal y entera con Winqsb 8
2.7 La tabla final del simplex
WINQSB permite mostrar los resultados óptimos mediante el formato aplicado por el
método Simplex. Para mostrar este formato deberá, una vez resuelto el problema,
seleccionar en el menú Resultados (Results) la opción Tabla final del Simplex (Final
Simplex Tableau).
2.8 Resolviendo el modelo paso a paso
Regrese nuevamente a la plantilla correspondiente al modelo inicial (sin solucionar).
Procederemos a marcar la opción Resolver y mostrar los pasos (Solve and Display
Steps). La primera tabla corresponde a la tabla inicial del Simplex:
WINQSB cuenta con opciones de navegación para pasar de una tabla a otra (este menú
se llama Simplex Iteration) hasta encontrar la solución óptima. Al pulsar sobre la opción
Próxima Interacción (Next Iteration) se avanza a la siguiente tabla del Simplex.
La opción Escoger variable de entrada (Choose Entering Variable) permite seleccionar
la variable que entra al sistema de forma manual. Debe pulsar sobre la variable no
básica que desee que entre (en este caso se muestra a X1, X3 y C2 como no básicas).
Para mostrar la última tabla del Simplex directamente podrá optar por seleccionar la
opción llamada Ir a la última tabla (Go To The Last Tableau).
La última opción Nonstop to Finish muestra el resultado final completo (junto al
análisis de sensibilidad).
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. Si quiere acceder a un problema posteriormente simplemente seleccione
la opción Salvar como (Save As) o pulsando sobre el botón.
3. Ejercicios
1.- Resolver el problema 2 de la práctica 4 mediante el winqsb.
2.- Resolver el problema 2 del primer control paso a paso.
Prácticas de Investigación Operativa Departamento de Matemáticas.