Está en la página 1de 21

SOFTWARE DE

PROGRAMACIÓN LINEAL
SOLVER – LINDO – LINGO

MG. SEBASTIÁN ARAYA PIZARRO

EJEMPLO PROTOTIPO DE OPTIMIZACIÓN


▪ Ejercicio de PL: Astro y Cosmo
▪ Formulación del Modelo de PL

OPTIMIZACIÓN MEDIANTE EL USO DE SOLVER


▪ El Modelado en Hojas de Cálculo Electrónicas
▪ El Modelo de PL y la construcción de Modelos en Hojas de Cálculo
▪ Generalidades del Solver
▪ Uso del Solver
▪ Optimización del Modelo Astro y Cosmo con Solver

OPTIMIZACIÓN MEDIANTE EL USO DE LINDO


▪ Qué es Lindo
▪ Generalidades y Uso del Lindo
▪ Sintaxis del Modelo
▪ Optimización del Modelo

OPTIMIZACIÓN MEDIANTE EL USO DE LINGO


▪ Qué es Lingo
▪ Generalidades y Uso del Lingo
▪ Sintaxis del Modelo
▪ Optimización del Modelo
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

1. EJEMPLO PROTOTIPO DE OPTIMIZACIÓN


Como se sabe, el método gráfico sólo permite resolver problemas con no más de dos variables.
En caso de tener más de dos variables, se necesitará utilizar métodos más complejos, como son
el Algoritmo Simplex o el Algoritmo de Karmarkar. Estos algoritmos permiten, mediante una serie
de pasos reiterativos (tablas), abordar problemas de Programación Lineal por muy complicados
que éstos sean. En la práctica, sin embargo, resulta necesario utilizar algún programa de
ordenador, el cual agilice los numerosos y repetitivos cálculos que exigen ambos algoritmos. En
este documento, abordaremos el uso de tres softwares para la Optimización de Programas
Lineales: el complemento SOLVER de Excel, LINDO y LINGO.

1.1 EJERCICIO DE PL: ASTRO Y COSMO

Una compañía fabricante de TV produce dos modelos de aparatos televisores, el Astro y el


Cosmo. Hay dos líneas de producción, una para cada modelo, e intervienen dos departamentos
en la producción de cada modelo. La capacidad de la línea de producción del Astro es de 70
aparatos de TV por día. La capacidad de la línea Cosmo es de 50 televisores diarios. En el
departamento A se fabrican los cinescopios. En este departamento se requiere un ahora de
trabajo para cada modelo Astro y dos horas de trabajo para cada aparato Cosmo. En la actualidad,
puede asignarse un máximo de 120 horas de trabajo diarias para la producción de ambos tipos
de aparato en el departamento A. En el departamento B se construye el chasis. Aquí se requiere
una hora de trabajo para cada televisor Astro y también una hora para cada modelo Cosmo.
Actualmente se pueden asignar 90 horas de trabajo al departamento B para la producción de
ambos modelos. La contribución a las ganancias es de 20 y 10 dólares, respectivamente, por cada
televisor Astro y Cosmo.

Si la compañía sabe que podrá vender todos los aparatos Astro y Cosmo que sea capaz de
fabricar, ¿Cuál deberá ser el plan de producción por día (es decir, la producción diaria) para cada
modelo?

1.2. FORMULACIÓN DEL MODELO SIMBÓLICO DE PL

A. Esquema del Problema:

INFORMACIÓN SOBRE ASTRO Y COSMO


Recurso/Producto Astro Cosmo Disponibilidad Total Signo
Capacidad Diaria 70 50
Departamento A 1 2 120 (HRS) <=
Departamento B 1 1 90 (HRS) <=
Ganancia Total 20 10

2
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

Objetivo:
Maximizar la utilidad diaria obtenida por el fabricante.

Restricciones:
‐ Capacidad máxima de la línea de producción de aparatos Astro y Cosmo
‐ No sobrepasar la cantidad de minutos por día disponibles en los deptos. A y B
‐ Condición de No negatividad.

B. Definición de Variables de decisión:

X1: Cantidad diaria a producir del televisor Astro


X2: Cantidad diaria a producir del televisor Cosmo

C. Restricciones:

1X1 + 0X2 ≤ 70 (Capacidad de la Línea de producción de Astro)


0X1 + 1X2 ≤ 50 (Capacidad de la Línea de producción de Cosmo)
1X1 + 2X2 ≤ 120 (Disponibilidad de horas en el Departamento A)
1X1 + 1X2 ≤ 90 (Disponibilidad de horas en el Departamento B)
X1≥ 0, X2≥ 0 (Condición de No Negatividad)

D. Función Objetivo:

Maximizar Z = 20X1 + 10X2

E. Análisis de Consistencia (Ejemplo Hrs Depto. A):

𝐻𝑟𝑠 𝐻𝑟𝑠
1[ ] ∗ 𝑋1[𝑢] + 2 [ ] ∗ 𝑋2[𝑢] ≤ 120[𝐻𝑟𝑠]
𝑢 𝑢
1 ∗ 𝑋1[𝐻𝑟𝑠] + 1 ∗ 𝑋2[𝐻𝑟𝑠] ≤ 120[𝐻𝑟𝑠]

Modelo Simbólico de Programación Lineal:

MAX 20X1 + 10X2


S.T.
1X1 + 0X2 ≤ 70
0X1 + 1X2 ≤ 50
1X1 + 2X2 ≤ 120
1X1 + 1X2 ≤ 90
X1, X2 ≥ 0

3
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

2. OPTIMIZACIÓN MEDIANTE EL USO DE SOLVER


2.1. EL MODELADO EN HOJAS DE CÁLCULO ELECTRÓNICAS

Aunque la mayoría de las entradas de la hoja de cálculo se explican por sí mismas, conviene poner
atención a la distribución del modelo de la hoja de cálculo y a cómo se emplean los rótulos,
coeficientes y variables de decisión, y fíjese también en el cálculo de la “holgura”.

Figura 1: Modelo de PL de la producción de Astro y Cosmo

Rótulos. En forma particular, algunas celdas contienen rótulos. Estos rótulos se usan de la misma
manera que cuando se incluyen en una tabla de datos para facilitar la lectura. Su finalidad es
aclarar el significado de otras entradas de la hoja de cálculo electrónica.

4
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

Coeficientes y variables de decisión. Otras celdas contienen números. Por lo general, estos
números representarán:

1. El valor numérico de los coeficientes que son los datos para el modelo de PL en cuestión
2. Cifras llamadas variables de decisión o, para simplificar, decisiones.

Fórmulas. Otras celdas contienen las fórmulas. En la representación de un modelo de PL en hojas


de cálculo electrónicas, se requieren fórmulas para representar la función objetivo y las funciones
de restricción. En algunos casos, puede haber fórmulas subyacentes que determinen el valor
numérico de varios coeficientes del modelo. Para algunos coeficientes se introducirán valores
numéricos directamente. Otros coeficientes podrían calcularse a partir de ciertas fórmulas.

Cálculo de la holgura. Las entradas que aparecen en G9:G12 se conocen con frecuencia como
holguras.
En los modelos de PL en hojas de cálculo electrónicas, la holgura es la diferencia entre la función
de restricción y el lado derecho, calculada de modo que no sea negativa.
Para una restricción ≤, la holgura es el lado derecho menos el lado izquierdo. Para una restricción
≥, la holgura es el lado izquierdo menos el lado derecho.
Con frecuencia se usan rótulos más descriptivos que simplemente holgura. Para las restricciones
≤, podría preferirse un rótulo como No usado, Restante, Residuo o Saldo. Para las restricciones ≥,
tal vez sea mejor usar Sobrante, Sobreoferta, Excedente o Exceso.

Figura 2: Distribución recomendada del modelo de PL de Astro y Cosmo

5
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

2.2. EL MODELO DE PL Y LA CONSTRUCCIÓN DE MODELOS EN HOJAS DE CÁLCULO

Las hojas de cálculo son muy útiles para representar modelos administrativos de PL y son
particularmente prácticas para las manipulaciones posteriores del tipo “¿qué pasaría si?”. Sin
embargo, para los que recién se inician, las hojas de cálculo electrónicas no siempre son el mejor
camino para formular el modelo de PL inicial. La experiencia ha demostrado que, hasta que usted
se vuelva más hábil con el modelado directo de PL en Excel, la forma preferible de generar un
modelo de PL sin errores consiste en dividir el proceso en dos etapas:

a. Escriba y depure el modelo simbólico de PL: Describa su modelo en una hoja de papel, como
un PL simbólico. Depúrelo, es decir, examine su formulación escrita y busque posibles errores
en la lógica de la formulación.
b. Traduzca y depure la representación del modelo simbólico de PL en la hoja de cálculo: Use
el modelo simbólico de PL como guía para crear la representación en la hoja de cálculo.
Después continúe depurando la representación del modelo en la hoja de cálculo, ensayando
los distintos grupos de valores candidatos para las variables de decisión, a fin de comprobar
si se producen errores obvios (violaciones de restricciones en el caso de decisiones que se
sabe son factibles, valores sin sentido en el LI o en las celdas de medición del desempeño,
etc.).

2.3. GENERALIDADES DEL SOLVER

Solver es un paquete agregado para Excel que optimiza numéricamente los modelos sujetos a
restricciones, como los modelos de PL. Solver emplea una técnica llamada algoritmo matemático
de programación, con la cual encuentra las decisiones óptimas para un modelo determinado en
una hoja de cálculo.

Para la PL, Solver usa un algoritmo de optimización muy eficiente (que sólo trabaja con modelos
de PL) llamado “método simplex”. Solver, puede optimizar tanto los modelos lineales como los
no lineales. Sin embargo, ahora nos concentraremos en modelo lineales. Recuerde: para la
optimización de PL, debe ser lineal cada una de las fórmulas del modelo que incluyan las variables
de decisión directamente (o indirectamente, por medio de una cadena de referencias a celdas), y
que directa o indirectamente afecten a la celda de la función objetivo. La restricción (de linealidad)
es impuesta por el método simplex de programación lineal de Solver, es cual sólo funciona
correctamente con las fórmulas de hojas de cálculo en las que intervienen relaciones lineales.

2.4. USO DE SOLVER

El uso de Solver incluye los siguientes pasos:


a) Arranque Excel y ejecute normalmente las operaciones de construcción del modelo.
b) Una vez desarrollado y depurado el modelo (¡y guardado en disco!), optimícelo eligiendo el
comando “Solver…” del menú Datos de Excel.
c) El programa complementario Solver y su módulo de optimización se cargarán en la memoria.
Al terminar el proceso de carga. Solver presenta un cuadro de diálogo en el cual solicita
información para el proceso de optimización.

6
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

d) Después de especificar ciertos detalles de reorganización, como la celda que contiene la


fórmula de la función objetivo por optimizar y las celdas con las variables de decisión, haga
clic en el botón “Resolver” del cuadro de diálogo.
e) Entonces, Solver traducirá su modelo e iniciará el proceso de optimización. Cuando se trata
de modelos pequeños de PL, este proceso tarda algunos segundos; con modelos grandes,
tarda varios minutos o más.
f) Suponiendo que no haya errores en el modelo de PL de su hoja de cálculo, Solver le
presentará un cuadro de diálogo de Resultados en el que usted podrá solicitar informes y
ordenar que Solver actualice las celdas de decisión de su modelo original con los valores
óptimos. Solver crea cada uno de los informes solicitados en una hoja electrónica de cálculo
nueva, que usted puede guardar o imprimir.

2.5. OPTIMIZACIÓN DEL MODELO ASTRO Y COSMO CON SOLVER

Inicie Excel y abra el “libro”, donde tiene guardado el modelo Astro y Cosmo.
Inicie el programa complementario Solver seleccionando el comando “Solver…” en el menú Datos.

Figura 3: Cuadro de diálogo de Parámetros de Solver


Nota: Por lo general, el programa complementario Solver no se instala automáticamente durante el procedimiento de instalación
convencional de Excel. Si el comando Solver no aparece en el menú Herramientas, elija en el menú Archivo la opción “Opciones”, luego
“Complementos” e “Ir…” y luego marque Solver y acepte. De esta forma se cargará el complemento “Solver…”

Una vez que se haya cargado en memoria el programa complementario Solver, lo cual puede
tardar algunos segundos, deberá aparecer el cuadro de diálogo de Parámetros de Solver, en el

7
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

menú de Datos. Nótese que el modelo predeterminado de Solver es uno de “Maximización” y que
el cursor del cuadro de diálogo se encuentra en el primer campo: “Celda objetivo”.
El primer campo, acompañado por el rótulo “Establecer objetivo”, solicita que indique usted cuál
de las celdas va a optimizar, es decir, la medida de desempeño incorporada a su modelo que
desea utilizar en el proceso de optimización. En el caso de nuestro modelo de ASTRO Y COSMO,
se podría escribir la referencia B6 o, mejor todavía, se podría activar dicha celda para ingresar su
referencia automáticamente.
Cuando se hace clic en la hoja de cálculo para ingresar referencias a celdas, Solver inserta dichas
referencias agregándoles signos $, lo cual significa que se trata de referencias absolutas. Usted
puede emplear tanto referencias absolutas –activando las celdas apropiadas‐ como referencias
relativas –tecleando directamente las referencias de las celdas‐.
El siguiente campo del cuadro de diálogo, rotulado “Para:”, le permite definir el tipo de
optimización que desea realizar. En este caso desea usted maximizar la celda de medición de
desempeño de Ganancias de ASTRO Y COSMO. Para seleccionar esta opción, haga clic en la
opción que aparece junto a “Máx”. Si deseara minimizar haría clic en “Mín”, y en “Valores de:” si
quisiera que el valor de la celda objetivo fuera igual que una cantidad especificada.
El siguiente campo, rotulado “Cambiando las celdas de variables:” permite especificar las
variables de decisión del modelo, que en este caso se encuentran en las celdas B4 y C4. Por lo
tanto, haga clic en el cuadro “Cambiando las celdas de variables:” y después, en la hoja de cálculo,
haga clic y arrastre el cursor para marcar las celdas B4:C4.
A continuación, deberá definir las restricciones del modelo para uso de Solver. Haciendo clic en
el botón “Agregar…”, a la derecha del cuadro “Sujeto a las restricciones:”, se presenta el diálogo
Agregar restricción, donde podrá añadir restricciones. Con el cursor ubicado en el campo
“Referencia de la celda” del cuadro de diálogo Agregar restricción, haga clic y arrastre el cursor
sobre cada una de las celdas de la hoja de cálculo que comprendan el LI. Asimismo, seleccione
según corresponda el tipo de desigualdad. En nuestro caso el signo <=.
A continuación, coloque el cursor en el cuadro del lado derecho del cuadro de diálogo “Agregar”
restricción, haga clic y arrastre el cursor sobre las celdas del LD correspondientes.

Figura 4: Especificación en Solver de las celdas que contienen restricciones

Presionando el botón Agregar usted puede introducir cada una de las restricciones del modelo.
Empero una vez ingresada la última restricción, presione el botón Aceptar, para terminar la
introducción de la restricciones y regresar al cuadro del diálogo de Parámetros de Solver. (Sin

8
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

inadvertidamente activa usted “Agregar”, será suficiente que pulse “Cancelar” para que pueda
regresar al cuadro de diálogo de Parámetros de Solver).

Sus especificaciones del modelo de ASTRO Y COSMO para Solver deberán tener ahora el aspecto
que muestra la figura 5. (Aunque en este caso no necesitamos los botones “Cambiar” y “Eliminar”
que aparecen bajo el botón “Agregar” en el cuadro de diálogo de Parámetros del Solver, funcionan
de manera similar a “Agregar”. Primero, resalte la restricción que desea cambiar o eliminar y haga
clic en cualquiera de estos botones). Nota: el botón “Restablecer todo” borra todas las entradas
al cuadro de diálogo de Parámetros de Solver, en caso de que desee volver a empezar la operación
de especificación.

Figura 5: Especificaciones de parámetros para SOLVER en el modelo de Astro y Cosmo

Ante de resolver el modelo marque la casilla “Convertir variables sin restricciones en no


negativas” y “elija como Método de resolución” Simplex LP”.

Hasta ahora usted ha especificado completamente el modelo indicando a Solver lo referente a:


- Las restricciones
- El intervalo de celdas que debe cambiar Solver (las variables de decisión)
- La celda con la función objetivo que va a optimizar (la celda que va a maximizar, en este caso)
- Que su modelo es de PL.

Por último, pulse el botón Resolver. Durante este proceso, el módulo de optimización presenta la
cantidad de “iteraciones” y el valor de la celda de función objetivo, mientras explora el conjunto
de decisiones factibles.

9
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

Si no se ha equivocado hasta ahora, al cabo de un par de segundos deberá presentarse el cuadro


de diálogo de Resultados de Solver con un mensaje de terminación, como muestra la Figura 6.

Figura 6: Cuadro de diálogo de Resultados de Solver

Si recibió el mensaje de terminación exitosa, como muestra figura 6, tendrá la opción de


“Conservar solución de Solver” o descartarla con “Restaurar valores originales”, lo cual deja las
variables de decisión exactamente como estaban antes de iniciar Solver. También dispone usted
de la opción capaz de generar hasta tres informes acerca de la solución (Responder, Sensibilidad
y Límites), cada uno de ellos formateado como una nueva hoja de trabajo que es añadida a su
“libro”.

Figura 7: La solución óptima para el modelo ASTRO Y COSMO modificado

Seleccione el informe de Responder, acepte la opción predeterminada “Utilizar solución de Solver”


y seleccione Aceptar. De la misma manera, puede seleccionar el Informe de Sensibilidad o el
Informe de Límites.

10
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

Figura 8: Informe de respuestas del Solver para el modelo de ASTRO Y COSMO

Figura 9: Informe de sensibilidad del Solver para el modelo de ASTRO Y COSMO

11
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

3. OPTIMIZACIÓN MEDIANTE EL USO DE LINDO

3.1. ¿QUÉ ES LINDO?

LINDO (Linear, Interactive, and Discrete Optimizer) es un programa sencillo de usar y muy potente
que permite resolver extensos problemas de programación lineal, entera, e incluso cuadrática.
Fue desarrollado por Linus E. Shrage en la Universidad de Chicago. Sus creadores (LINDO
Systems, Inc.) permiten descargar de su página web (www.lindo.com) una versión de
demostración gratuita que tolera hasta 150 restricciones y 300 variables (la versión profesional
es capaz de trabajar con 50.000 restricciones y 200.000 variables).

3.2. GENERALIDADES Y USO DE LINDO

Al iniciar LINDO (versión 6.1 para Windows), aparecen varias ventanas: la exterior (con la etiqueta
“LINDO”) es la ventana principal, todas las demás ventanas que vayan apareciendo estarán
contenidas dentro de ella. La ventana principal contiene también todos los menús de comandos
y la barra de herramientas. Utilizaremos la ventana secundaria “<untitled>” para formular nuestro
problema.

Figura 10: Ventana Principal de LINDO

3.3. SINTAXIS DEL MODELO

A continuación, se muestra cómo planteamos en LINDO el ejemplo anterior de ASTRO Y COSMO


de ordenador:

12
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

Figura 11: Sintaxis del Modelo en LINDO

En este punto, es conveniente hacer notar las siguientes observaciones:

1) Podemos añadir comentarios personales sin más que anteponerles el signo de cierre de
exclamación (!).
2) Siempre hemos de finalizar la formulación del problema añadiendo el comando END.
3) Por defecto, LINDO ya considera la no negatividad de las variables.
4) LINDO sólo acepta cinco operadores: + , ‐ , <= , >= , e = . Así pues, en la formulación del problema
no podrá usarse ningún otro operador ( * , / , ^ , etc.) ni tampoco paréntesis asociativos. A su
vez, las desigualdades de tipo <= o >= pueden digitarse con solo < o > respectivamente.
5) En la parte derecha de una desigualdad sólo se permiten valores numéricos, mientras que
en la parte izquierda sólo se permiten expresiones lineales de variables y sus coeficientes.
Nota: En el caso de programas del tipo Minimizar, basta digitar el comando MIN en vez de del
comando MAX.

3.4. OPTIMIZACIÓN DEL MODELO

El siguiente paso es pedirle a LINDO que resuelva el problema. Para ello es suficiente con hacer
clic sobre el botón Solve (Resolver), , o bien seleccionar esta opción en la barra de menús, es
decir, seleccionando en el menú Solve la opción Solve, o simplemente pulsando el comando
Ctrl+S.

LINDO intentará primero compilar el modelo formulado (para determinar si está bien planteado o
no) y, en el caso de que la formulación sea incorrecta (ya sea desde un punto de vista matemático
o de sintaxis), nos devolverá el siguiente mensaje:

An error ocurred during compilation on line: n

Si tras resolver un problema hacemos alguna modificación en la formulación del mismo, es


necesario volver a compilar el modelo (Solve>Compile) antes de volver a usar Solve.

13
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

Si el modelo ha podido ser compilado, LINDO comenzará la resolución efectiva del problema,
mostrando la ventana “Status” (Estado), donde se da información sobre el estado del proceso
resolutivo:

Figura 12: Cuadro de diálogo LINDO Solver Status

A continuación, se describen algunos de los campos que aparecen en la ventana anterior:

▪ Status: Ofrece el estado de la solución actual (óptima, factible, no factible, o no acotada).


▪ Iterations: Número de iteraciones (tablas del algoritmo) que se han realizado.
▪ Infeasibility: Cantidad por la cual las restricciones han sido excedidas o violadas.
▪ Objective: Valor actual de la función objetivo.
▪ Elapsed time: Tiempo transcurrido desde el inicio de la resolución.
▪ Update Interval: La frecuencia (en segundos) en que esta ventana es renovada.

Figura 13: Cuadros de diálogo post optimización

14
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

Cuando la resolución haya finalizado, el programa además nos dará la opción de obtener el
análisis de sensibilidad y de rangos. Si escoge “SI” y cierra la ventana de estado, LINDO
desplegará la solución completa del problema en una nueva ventana, titulada “Reports Window”
(Ventana de Informe), en la cual LINDO enviará todo el output en forma de texto:

Figura 14: Ventana Reports Window de LINDO para el problema ASTRO y COSMO

La información básica que nos proporciona esta ventana para nuestro ejemplo de los televisores,
es que la solución óptima consiste en fabricar 70 televisores del tipo Astro y 20 del tipo Cosmo,
con lo cual obtendremos un beneficio de 1.600 dólares (el máximo de los posibles bajo las
restricciones que tenemos). Además, con este plan de producción estaremos agotando nuestros
recursos del departamento B y dejando 10 horas ociosas en el Departamento A. Asimismo, hemos
ocupado al máximo la capacidad de la línea de producción para Astro y se ha dejado una
capacidad sobrante para la línea de producción de televisores Cosmo de 30 unidades.

Observe la información que aparece bajo el encabezado del resultado de la computadora OBJ
COEFFICIENT RANGES (Rangos de los coeficientes de la función objetivo). La variable X2, con un
coeficiente de utilidad actual de 10, tiene un incremento permisible de 10 y una reducción
permisible de 10. Agregando 10 y restando 10 del coeficiente actual de 10, nos da el rango de
optimalidad para C2:

0 ≤ C2 ≤ 20

De manera similar, el rango de optimalidad para C1 es:

10 ≤ C1 ≤ infinito

15
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

La información bajo el encabezado RIGHTHAND SIDE RANGES (Rangos de los lados derechos)
permite el cómputo del rango de factibilidad de cada lado derecho. Simplemente reste
la reducción permisible de valor actual para obtener el límite actual y agregue el incremento
permisible al valor actual, para obtener el límite superior. Al hacerlo, obtenemos:

Restricción Lado derecho mínimo Lado derecho máximo


Capacidad P(x) Astro 60 90
Capacidad P(x) Cosmo 20 Sin límite superior
Departamento A 110 Sin límite superior
Departamento B 70 95

Como puede observarse el uso de LINDO es muy cómodo para el usuario de Programación Lineal.
No necesita de conocimientos especializados, sino que tan sólo requiere del uso del sentido
común. Está es la principal ventaja de esta herramienta en optimización lineal.

16
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

4. OPTIMIZACIÓN MEDIANTE EL USO DE LINGO

4.1. ¿QUÉ ES LINGO?

LINGO es una herramienta matemática que resuelve una amplia gama de problemas de
optimización, lineales, no lineales y enteros, utilizando un lenguaje sencillo, lo que lo convierte en
un asistente ideal en la academia. Junto con LINDO forma parte del paquete SOLVER SUITE
(manual de usuario, 1996). Para la resolución de los problemas lineales se utiliza LINDO. Sin
embargo, a diferencia de este último, LINGO incorpora un lenguaje de programación que permite
escribir de manera cómoda el modelo. Debe tenerse en cuenta que LINGO detecta óptimos
locales y que salvo para la programación lineal y convexa, no siempre resulta fácil identificar los
óptimos globales. Cabe indicar que estas notas se han elaborado considerando la versión 17.0.

4.2. GENERALIDADES Y USO DE LINGO

Al iniciar LINGO, al igual como ocurre en LINDO, aparecen varias ventanas: la exterior (con la
etiqueta “LINGO 17.0”) es la ventana principal, todas las demás ventanas que vayan
apareciendo estarán contenidas dentro de ella. La ventana principal contiene también todos los
menús de comandos y la barra de herramientas. Utilizaremos la ventana secundaria “Lingo Model
– Lingo1>” para formular nuestro problema.

Figura 15: Ventana Principal de LINGO

17
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

4.3. SINTAXIS DEL MODELO

A continuación, se muestra cómo planteamos en LINGO el ejemplo anterior de ASTRO Y COSMO


de ordenador:

Figura 16: Sintaxis del Modelo en LINGO

En este punto, es conveniente hacer notar las siguientes observaciones:

1) La función objetivo se introduce precedida de Max = o de Min =.


2) Para introducir una desigualdad de ≤ o ≥ se escribe <= o >= aunque se puede abreviar a <
o >. Para introducir una igualdad escribimos simplemente =
3) Si hemos seleccionado la opción Variables assumed non-negative no es necesario
introducir las condiciones de signo.
4) Cada instrucción termina obligatoriamente con ;
5) Los cambios de línea son irrelevantes. Por claridad podemos escribir cada ecuación en
una línea, pero sería equivalente escribirlas todas seguidas en la misma línea.
Recíprocamente, si una restricción es muy larga, podemos partirla en dos o más líneas
(teniendo en cuenta que un cambio de línea es como un espacio en blanco, por lo que no
podemos partir una palabra o un numero).
6) Las etiquetas entre corchetes verb/[ ]/ son opcionales. Sirven únicamente para relacionar
más fácilmente la solución que proporciona LINGO con las distintas líneas del modelo. En
caso de introducir etiquetas, estas no pueden contener espacios en blanco ni signos
especiales, como acentos, eñes, etc. Una etiqueta puede contener números, pero no
empezar por un número. Podemos usar el guion bajo para separar palabras (p.ej.:
[Disponibilidad_Horas]).
7) Las mismas consideraciones que acabamos de hacer para las etiquetas valen para los
nombres de las variables. En lugar de x1, x2 podríamos haber elegido x, y, o incluso prod_1,
prod_2.

18
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

8) LINGO no distingue entre mayúsculas o minúsculas, de modo que, si en un lugar


escribimos x y en otro X, para LINGO se tratará de la misma variable. Del mismo modo, da
igual escribir Max, MAX o max.
9) No se pueden omitir los signos de multiplicación *. Para introducir, por ejemplo, (x − 5)3,
escribiríamos (x-5)^3. Las funciones matemáticas disponibles en LINGO (exponenciales,
logaritmos, etc.) pueden consultarse en el menú Edit → Paste function → Mathematical /
Trigonometrical
10) Es posible insertar líneas de comentarios (es decir, líneas que LINGO no leerá) sin más
que empezarlas por un signo ! (y terminarlas igualmente con ;).
11) Es recomendable finalizar la formulación del problema añadiendo el comando END.

Nota: En el caso de programas del tipo Minimizar, basta digitar el comando MIN= en vez de del
comando MAX=.

4.4. OPTIMIZACIÓN DEL MODELO

El siguiente paso es pedirle a LINGO que resuelva el problema. Para ello es suficiente con hacer
clic sobre el botón Solver, o bien seleccionar esta opción en la barra de menús, es decir,
seleccionando en el menú Solver la opción Solve, o simplemente pulsando el comando Ctrl+U.

LINGO intentará primero compilar el modelo formulado (para determinar si está bien planteado o
no) y, en el caso de que la formulación sea incorrecta (ya sea desde un punto de vista matemático
o de sintaxis), nos devolverá un mensaje de error (LINGO Error Message), indicando el motivo del
problema (Error Code).

Si el modelo ha podido ser reformulado, LINGO comenzará la resolución efectiva del problema,
mostrando la ventana “Status” (Estado), donde se da información sobre el estado del proceso
resolutivo:

Figura 17: Cuadro de diálogo LINGO Solver Status

19
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

Cuando la resolución haya finalizado, el programa desplegará la solución completa del problema
en una nueva ventana, titulada “Solution Report” (Informe de Solución), en la cual LINGO enviará
todo el output en forma de texto:

Figura 18: Ventana Solution Report de LINGO para el problema ASTRO y COSMO

En caso de requerir el informe de sensibilidad sobre los coeficientes del modelo, se debe, primero,
habilitar la opción “Prices Ranges”, lo cual se efectúa desde el menú “Solver”, donde se selecciona
“Options…” y luego “General Solver”.

Figura 19: Ventana Lingo Options de LINGO para habilitar los Rangos de Sensibilidad

20
Software de Programación Lineal: Solver, LINDO y LINGO | MG. SEBASTIÁN ARAYA PIZARRO

Luego de ello, manteniendo activa la hoja del modelo (Lingo Model), se selecciona dentro del
menú Solver, la opción Range, que desplegará la ventana “Range Report” con la información
solicitada.

Figura 20: Ventana Range Report de LINGO para el problema ASTRO y COSMO

Salidas del Sistema

▪ La columna titulada Value contiene el valor óptimo de cada variable.


▪ En la columna titulada Slack or Surplus, la entrada correspondiente a la función objetivo
contiene el valor óptimo de la función objetivo, mientras que las restantes contienen las
variables de holgura de las restricciones.
▪ La columna titulada Reduced Cost contiene (salvo el signo) los multiplicadores de Kuhn y
Tucker de las variables del problema. Cabe recordar que el costo reducido de una variable
x que tome el valor 0 es lo que debe mejorar el coeficiente de x en la función objetivo para
que el valor óptimo de x pase a ser no nulo. (Las variables que ya son no nulas tienen coste
reducido nulo.)
▪ La columna Dual Price contiene (salvo el signo) los multiplicadores de Kuhn y Tucker (o
variables duales, en el caso de la programación lineal) de las restricciones (excepto la
entrada correspondiente a la función objetivo, cuyo valor es siempre igual a 1). El signo es
el que se corresponde con la interpretación siguiente: El precio dual de una restricción indica
aproximadamente lo que mejorará la función objetivo por cada unidad que aumente el
término independiente de la restricción.
▪ La tabla titulada Objective Coefficient Ranges contiene el valor actual del coeficiente de
cada variable en la función objetivo junto con lo máximo que puede aumentar o disminuir
para que la solución óptima no cambie.
▪ La tabla titulada Righthand Side Ranges contiene el valor actual de término independiente
de cada restricción junto con lo máximo que puede aumentar o disminuir para que las
variables básicas de la solución óptima sigan siendo las mismas. Si la restricción no está
saturada podemos decir que la solución óptima seguirá siendo la misma

21

También podría gustarte