Investigación de operaciones

Programación lineal en WinQSB

WinQSB es un paquete de herramientas muy versátil que permite el análisis y resolución de modelos matemáticos, problemas administrativos, de producción, proyectos, inventarios, transporte, entre muchos otros. Ofrece una interfaz básica pero amigable, y es la aplicación por excelencia utilizada por profesionales de Ingeniería Industrial y áreas administrativas para la resolución de sus modelos de programación lineal, continua o entera.

Acerca de Linear and integer programming: es el módulo de WinQSB creado con el fin de resolver problemas de programación lineal y programación lineal entera. Un problema de programación lineal implica una función objetivo lineal, un número limitado de restricciones lineales, y una serie de variables que pueden ser acotadas con valores limitados.

Solución de un problema de programación lineal mediante WinQSB

El primer paso para resolver un problema de programación lineal (PL) consiste en el modelamiento matemático, y es en esta fase en la que el profesional de Ingeniería Industrial debe desarrollar su mayor habilidad y destreza. Los pasos para resolver un problema de PL se encuentran en el módulo de programación lineal.

El problema

Un herrero con 80 Kg. de acero y 120 Kg. de aluminio quiere hacer bicicletas de paseo y de montaña que quiere vender, respectivamente a 20.000 y 15.000 pesos cada una para sacar el máximo beneficio. Para la de paseo empleará 1 Kg. De acero y 3 Kg. de aluminio, y para la de montaña 2 Kg. de ambos metales. ¿Cuántas bicicletas de paseo y de montaña deberá fabricar para maximizar las utilidades?

 

El modelo matemático

Winqsb ejercicios

Declaración de variables

x = Cantidad de bicicletas de paseo a producir

y = Cantidad de bicicletas de montaña a producir

Restricciones de capacidad

Aluminio:

x + 2y <= 80

Acero:

3x + 2y <= 120

Función Objetivo

Zmax = 20000x + 15000y

 

Ingresando a Linear and Integer Programming (WinQSB)

Una vez se haya ingresado al módulo Linear and Integer Programming, se abrirá una ventana de inicio del módulo, tal como se muestra a continuación:

En esta ventana podremos entonces crear un nuevo problema, o cargar uno que ya hayamos desarrollado. Una vez demos clic en «Nuevo Problema (New Problem)» se abrirá un menú emergente que nos permitirá ingresar los parámetros básicos del problema:

El programa requiere que se definan las especificaciones del problema, que incluye el nombre de problema, el número de variables, el número de restricciones, el criterio de la función objetivo, los tipos de variable por defecto, y el formato de entrada de datos, ya sea en forma de matriz o en forma de modelo normal.

El nombre de problema, los nombres de variables, nombres de restricción, el número de variables, número de restricciones , el criterio de la función objetivo, tipos de variables, y la entrada de datos formato se pueden modificar mediante el menú Formato y menú Editar una vez se haya abierto el modelo.

Para el problema que estamos abordando es necesario que ingresemos los siguientes parámetros:

Número de variables: 2 (x , )

Número de restricciones: 2 (Disponibilidad de Aluminio y Acero)

Función Objetivo: Maximizar (Utilidades)

Tipos de variables por defecto: Enteras no negativas (Serán bicicletas, unidades enteras)

Formato de entrada: Matriz (Recomendado)

Una vez se registren los parámetros y al dar clic en el botón OK, se mostrará la siguiente ventana, en aras de utilizar las mismas variables que en el modelo, mostraremos el método de renombrar las variables:

Desde el menú EDIT, también podremos modificar el nombre de las restricciones, tal como se aprecia en la siguiente imagen:

La interfaz para ingresar los valores que controlan el problema es la siguiente:

En ella hemos registrado los datos que controlan nuestro problema de estudio. El siguiente paso, consiste en resolver el problema, para ello damos clic en el botón Solve and Analize: Este comando resuelve el problema . Si se especifica alguna variable como un entero o binario, el programa utilizará automáticamente el método de Branch and Bound (Rama y Cotas) para resolver el problema. El método simplex modificado es utilizado para resolver problemas de programación lineal continua.

Esta opción mostrará automáticamente un tabulado resumen de la solución si el problema tiene una solución óptima, mostrará la inviabilidad de análisis si el problema no es factible, o mostrará si el análisis no acotación si el problema no está acotado en función objetivo o valores de las variables.

Este mensaje nos indica que el problema ha sido resuelto, y que existe una solución óptima que ha sido encontrada. Al dar clic en Aceptar, nos llevará al cuadro resumen de la solución:

Interpretar cada uno de los valores del cuadro solución, es cuan o más importante que obtener la solución óptima, dado que de dicha interpretación podremos extraer un buen análisis de sensibilidad:

Solution value: Valor solución, es el valor que toman las variables de decisión en nuestra solución óptima, en este caso nos indica que se deberán producir 20 bicicletas tipo paseo y 30 bicicletas tipo montaña.

Unit Cost or Profit: El costo unitario o contribución es el valor que les fue asignado a las variables por nosotros en la función objetivo.

Total Contribution: Es la contribución total a la solución objetivo, es el producto del valor solución * costo unitario o contribución.

Basic Status: Después de que el problema se resuelve , esto representa si la variable es una variable de base, en el límite inferior, o en el límite superior en la tabla simplex final.

Allowable MIN, MAX C(j): Para un coeficiente de la función objetivo en particular. Este es el rango en que la base actual de la solución sigue siendo la misma.

Objective Function: Nos muestra el resultado de nuestra función objetivo, en este caso la solución óptima tiene una función objetivo (utilidad) de $ 850.000

Left Hand Side: Del lado izquierdo, es el valor que toma la ecuación de cada restricción luego de reemplazar las variables que la componen por los valores solución. Por ejemplo, la ecuación de la restricción de Acero que es x + 2y <= 80, al reemplazar los valores solución quedará: (20) + 2(30) <= 80, el valor del lado izquierdo será entonces 80.

Right Hand Side: Del lado derecho, es el valor asignado por nosotros a las restricciones como máximo o mínimo recurso disponible.

Slack o Surplus: Cuando la restricción en cuestión tiene el operador <=, corresponde a una holgura, es decir, se puede interpretar como el recurso no utilizado. Cuando la restricción en cuestión tiene el operador >=, corresponde a un exceso, es decir, se puede interpretar como el recurso utilizado por encima de la restricción de mínimo uso.

Shadow Price: El precio sombra de una restricción, es el cambio marginal de la función objetivo cuando el valor del lado derecho de la restricción aumenta en una unidad. En nuestro ejemplo sería así: por cada kg de acero adicional que tengamos disponible, la función objetivo aumentará en $ 1250.

Bryan Salazar López

Ingeniero Industrial y Magíster en Logística Integral especializado en productividad y modelamiento de procesos bajo dimensiones de sostenibilidad, industria 4.0, transformación digital y modelos de optimización. Docente universitario de pregrado y posgrado con experiencia en la enseñanza de estos temas. Fundador de Ingenieriaindustrialonline.com, un sitio en donde se recogen las aportaciones de investigaciones, artículos y referencias relevantes para la industria.

4 comentarios

  1. Buenas noches tengo windows 10, 64 bit, sabes de donde puedo descargar winqsb y ande? Queria prensentar esta herramienta para resolver programacion lineal en investigacion operativa. Tambien soy estudiante de ing industrial. Muchas gracias!

  2. A mi me funcionó el WinQSB en Windows 10 64 bits usando «WineVDM» del siguiente sitio: https://github.com/otya128/winevdm
    De cualquier forma se puede contribuir al proyecto para que corrijan todo los posibles fallos que aún queden.

    ¿Será que se podrá hacer ingeniería inversa legal para que ayude a desarrollar un WinQSB moderno y nativo para 32 bits y 64 bits en Windows, GNU/Linux y Mac? Ya tienes sus años siendo una aplicación de Windows 3.x .

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Botón volver arriba