27
INICIALIZANDO 1 I. Inicializándose con LINGO A. ¿Qué es LINGO? LINGO es una herramienta simple para utilizar la potencialidad de la optimización lineal y no lineal para formular problemas muy grandes de una manera concisa, resolverlos y analizar su solución. La optimización le ayuda a encontrar la respuesta que representa la mejor solución; obtiene la mayor utilidad, respuesta o felicidad; o logra el menor costo, desperdicio o disconformidad. A menudo estos problemas significan hacer el uso más eficiente de sus recursos- incluyendo dinero, tiempo, maquinaria, personal, inventario y mucho más. Los problemas de optimización se clasifican a menudo como lineales y no lineales, dependiendo si las relaciones entre las variables son o no lineales. Si usted es un usuario nuevo, se le recomienda pase por los primeros siete capítulos para que se familiarice con LINGO. Luego puede usted querer ver el Capítulo 13 relacionado con Modelación Matemática, para mayor información sobre modelos lineales y no lineales y sobre como desarrollar modelos grandes. Puede ser también útil ver algunos modelos de ejemplo en el Capítulo 12 Desarrollando Modelos más Avanzados, o el Apéndice A Ejemplos Adicionales de Modelación con LINGO, para ver si algún esquema de un ejemplo particular es similar al problema que usted tiene. Para usuarios de versiones previas de LINGO, las nuevas capacidades están resumidas en el Prefacio, al inicio de este manual. B. Instalando LINGO Esta sección discute como instalar LINGO en la plataforma Windows. Para instalar LINGO en otras plataformas distintas a Windows, vea las instrucciones de instalación incluidas en su software. El instalar el software LINGO es un procedimiento directo. Para preparar LINGO para windows coloque el CD en el dispositivo adecuado y ejecute el programa de instalación SETUP que se encuentra en el directorio LINGO. El programa de instalación de LINGO le abrirá y guiará en los pasos requeridos para instalar LINGO en su disco duro. Algunas versiones de LINGO requieren que el usuario ingrese una clave Considere la clave como una llave que abre la aplicación LINGO. Una vez que el programa de SETUP se ha completado, usted debe ejecutar LINGO para ingresar su clave. La clave necesita ser ingresada solamente una vez, cuando usted ejecuta LINGO por primera vez. Todas las sesiones posteriores de LINGO no requerirán que se ingrese la clave. Si aún no conoce su clave, usted debería encontrarla en el sobre del CD o en la parte posterior del Manual del Usuario. La clave es una cadena de letras, símbolos y números separados en grupos de cuatro por guiones. (e.g., r82m-XCW2-dZu?-%72S-fD?S-Wp@)).

Guia Ususario Lingo

Embed Size (px)

Citation preview

INICIALIZANDO 1

I. Inicializándose con LINGOA. ¿Qué es LINGO?

LINGO es una herramienta simple para utilizar la potencialidad de la optimización lineal y nolineal para formular problemas muy grandes de una manera concisa, resolverlos y analizar susolución. La optimización le ayuda a encontrar la respuesta que representa la mejor solución;obtiene la mayor utilidad, respuesta o felicidad; o logra el menor costo, desperdicio odisconformidad. A menudo estos problemas significan hacer el uso más eficiente de susrecursos- incluyendo dinero, tiempo, maquinaria, personal, inventario y mucho más. Losproblemas de optimización se clasifican a menudo como lineales y no lineales, dependiendo silas relaciones entre las variables son o no lineales.

Si usted es un usuario nuevo, se le recomienda pase por los primeros siete capítulos para quese familiarice con LINGO. Luego puede usted querer ver el Capítulo 13 relacionado conModelación Matemática, para mayor información sobre modelos lineales y no lineales ysobre como desarrollar modelos grandes. Puede ser también útil ver algunos modelos deejemplo en el Capítulo 12 Desarrollando Modelos más Avanzados, o el Apéndice AEjemplos Adicionales de Modelación con LINGO, para ver si algún esquema de un ejemploparticular es similar al problema que usted tiene. Para usuarios de versiones previas deLINGO, las nuevas capacidades están resumidas en el Prefacio, al inicio de este manual.

B. Instalando LINGO

Esta sección discute como instalar LINGO en la plataforma Windows. Para instalar LINGO enotras plataformas distintas a Windows, vea las instrucciones de instalación incluidas en susoftware.

El instalar el software LINGO es un procedimiento directo. Para preparar LINGO parawindows coloque el CD en el dispositivo adecuado y ejecute el programa de instalaciónSETUP que se encuentra en el directorio LINGO. El programa de instalación de LINGO leabrirá y guiará en los pasos requeridos para instalar LINGO en su disco duro.

Algunas versiones de LINGO requieren que el usuario ingrese una clave Considere la clavecomo una llave que abre la aplicación LINGO. Una vez que el programa de SETUP se hacompletado, usted debe ejecutar LINGO para ingresar su clave. La clave necesita ser ingresadasolamente una vez, cuando usted ejecuta LINGO por primera vez. Todas las sesionesposteriores de LINGO no requerirán que se ingrese la clave. Si aún no conoce su clave, usteddebería encontrarla en el sobre del CD o en la parte posterior del Manual del Usuario. La clavees una cadena de letras, símbolos y números separados en grupos de cuatro por guiones.(e.g., r82m-XCW2-dZu?-%72S-fD?S-Wp@)).

2 CAPITULO I

Si su versión de LINGO requiere una clave, usted verá lo siguiente cuando usted ejecuteLINGO:

Cuidadosamente ingrese su clave en el campo de edición, incluyendo los guiones,asegurándose que cada carácter está correcto. Las claves son sensibles a las letras enmayúscula, por lo que usted debe respetar el tipo definido para cada letra. Seleccione OK y,asumiendo que la clave ha sido ingresada correctamente, LINGO entonces comenzará. En elfuturo usted será capaz de inicializar LINGO directamente, sin necesidad de ingresarnuevamente la clave.

Si usted no tiene una clave, usted puede elegir ejecutar LINGO en la versión de demostraciónseleccionando el botón Demo Version. En la versión de demostración LINGO tiene toda lafuncionalidad de la versión standard de LINGO con la sola excepción de que el tamañomáximo de los problemas está restringido.

Nota: Si usted recibió su clave por e-mail, entonces usted tendrá la opción de copiarla ypegarla en el campo de edición de la ventana de ingreso de clave. Copie la clave desdeel e-mail que la contiene con la secuencia de teclas Control-C, luego selecciones elcampo de clave en LINGO y péguela con la secuencia de teclas Control V.

C. Ingresando un Modelo en LINGO1. Iniciando LINGOEsta sección ilustra como ingresar y resolver un modelo pequeño en windows. El texto de lasecuaciones del modelo es independiente de la plataforma y será idéntico para todas lasplataformas. Sin embargo, tome en consideración que la técnica para ingresar un modelo eslevemente distinta en plataformas distintas de windows. Para instrucciones de cómo ingresarun modelo en plataformas distintas a windows, por favor refiérase al CapítuloVI Líneas deComandos.

INICIALIZANDO 3

Cuando usted comience LINGO su pantalla debe lucir como se indica:

La ventana exterior etiquetada LINGO, es la ventana principal. Todas las demás ventanasestarán contenidas en ésta ventana. La parte alta de la ventana principal contiene la ventana demenú de comandos y la barra de herramientas. Vea el Capítulo V Comandos en Windowspara detalles en cuanto a la barra de herramientas y a los menú de comandos. El límite inferiorde la ventana principal contiene una barra de estatus que proporciona varios aspectosinformativos respecto del estado actual de LINGO. Tanto la barra de herramientas como labarra de estatus pueden ser suprimidas a través del uso del comando de LINGO Opciones.

La ventana más pequeña interior, etiquetada LINGO Model - LINGO1 es una ventana nuevapara modelación. En la próxima sección ingresaremos un modelo de ejemplo directamente enesta ventana.

2. Desarrollando un Modelo LINGO

El Problema:Para nuestro modelo ejemplo usaremos un pequeño problema de mezcla de productos.Imaginemos que la Corporación CompuQuick produce dos modelos de computadoras -Estándar y Turbo. CompuQuick puede vender cada modelo Estándar que sea capaz deproducir con una contribución a las utilidades de US$ 100 y cada modelo Turbo con unacontribución de US$ 150. En la fábrica de CompuQuick la línea de producción del modeloEstándar puede producir como máximo 100 computadoras al día. Al mismo tiempo, la línea deproducción del modelo Turbo puede lograr una producción de 120 computadoras por día.Además CompuQuick tiene una disponibilidad limitada de mano de obra (H-H) por día que esde 160 H-H. Los computadoras Estándar necesitan 1 H-H mientras los computadoras Turboson un poco más intensos en necesidad de mano de obra y requieren 2 H-H.

4 CAPITULO I

El problema de CompuQuick es determinar la mezcla de modelos Estándar y modelos Turboque debe producir cada día para maximizar su utilidad total sin exceder los límites decapacidad de producción de las líneas ni la disponibilidad de H-H.

En general, un modelo de optimización consistirá de las siguientes tres partes:• Función Objetivo:

La función objetivo es una fórmula que expresa exactamente qué es lo que usted deseaoptimizar. En modelos orientados a negocios esto normalmente serán funciones de utilidadque usted desea maximizar o funciones de costo que usted desea minimizar. Los modelospueden tener como máximo una función objetivo. En nuestro ejemplo de CompuQuick lafunción objetivo será calcular el valor de las utilidades totales de la Corporación enfunción de la producción de modelos Estándar y Turbo.

• Variables:Las Variables son las cantidades que usted tiene bajo su control. Usted debe decidir cuálesson los mejores valores para estas variables, los valores óptimos. Por ésta razóncomúnmente a estas variables se les denomina Variables de Decisión. El objetivo deoptimización es encontrar los valores para las variables del modelo que generan el mejorvalor para la función objetivo, sujeto a cualquier condición de limitación que se hayaimpuesto a las variables. En nuestro ejemplo tendremos dos variables de decisión - unaque corresponde al número de computadoras Estándar que conviene producir y otra alnúmero de computadoras Turbo que deberíamos producir.

• Restricciones:Casi si excepción, se puede asumir que siempre habrá algún límite para los valores de lasvariables de un modelo. Al menos un recurso será limitado (i.e., tiempo, materias primas,presupuesto de su departamento, etc.). Estos límites se expresan en fórmulas en función delas variables de decisión del modelo. A éstas fórmulas se les denomina Restriccionesdebido a que ellas restringen los valores que las variables pueden tomar. En nuestroejemplo de CompuQuick tendremos una restricción por cada línea de producción y unarestricción sobre el total de H-H que se usan.

Ingresando el modeloConstruiremos ahora la función objetivo de nuestro ejemplo. Haremos que las variablesESTANDAR y TURBO representen, respectivamente, el número de computadoras modeloEstándar y Turbo que produciremos. El objetivo de CompuQuick es maximizar la utilidadtotal. La utilidad total se calcula como la suma de la contribución a la utilidad de cadacomputadora Estándar (US$ 100) multiplicado por el total de computadoras Estándar que seproducirán (ESTANDAR), más la contribución a la utilidad de cada computadora Turbomultiplicada por el total de computadoras Turbo que se fabricarán (TURBO). Finalmente, ledecimos a LINGO que deseamos maximizar una función objetivo a través de colocar elcomando " MAX = " precediendo a la fórmula de la utilidad total. Por lo tanto nuestra funciónobjetivo se escribe en la primera línea de nuestra ventana del modelo como:

MAX = 100 * ESTANDAR + 150 * TURBO;Nota: Cada línea en LINGO se termina con "punto y coma". Estos símbolos son obligatorios.

Su modelo no será resuelto sin ellos. Para mayor información sobre la sintaxis deLINGO, vea el párrafo más adelante.

INICIALIZANDO 5

Luego debemos ingresar nuestras restricciones en cuanto a las líneas de producción y mano deobra. El número de computadoras Estándar y Turbo que se produzcan deben estar restringidosa la capacidad de producción de las líneas de 100 y 120 computadoras respectivamente. Parahacer esto ingrese las siguientes dos restricciones exactamente debajo de la función objetivo:

ESTANDAR <= 100;TURBO <= 120;

En palabras, la primera restricción dice que el número de computadoras Estándar que seproduzcan (ESTANDAR) debe ser menor o igual que la capacidad de la línea de produccióncorrespondiente en la fábrica que es 100. En forma similar la segunda restricción dice que elnúmero de computadoras Turbo producidos diariamente (TURBO) debe ser menor o igual quela capacidad de la línea que es 120.

Nota: Debido a que la mayoría de las computadoras no tienen una tecla ≤ LINGO haadoptado la convención de utilizar los caracteres <= para denotar esta condición. Comouna forma alternativa usted puede ingresar simplemente sólo el símbolo < para denotarla condición menor o igual que. Similarmente >= o bien > denotará la condición mayoro igual que.

La restricción final relativa a la mano de obra puede expresarse como:ESTANDAR + 2 * TURBO <= 160;

Específicamente, el número total de H-H utilizadas (ESTANDAR + 2 * TURBO) debe sermenor o igual que la cantidad de mano de obra disponible que es 160 H-H.

Después de ingresar lo anterior e ingresar comentarios que mejoren el entendimiento delcontexto del problema su ventana del modelo debe lucir como se muestra:

Sintaxis General de LINGOUna expresión o fórmula puede dividirse en tantas líneas como usted quiera, pero la expresióndebe terminar con punto y coma. Por ejemplo nosotros podríamos haber usado dos líneas envez de sólo una para escribir la función objetivo como:

MAX = 100 * ESTANDAR+ 150 * TURBO;

6 CAPITULO I

Hemos ingresado también algunos comentarios para mejorar el entendimiento del modelo. Loscomentarios deben comenzar con un signo de exclamación (!) y terminar con punto y coma (;)Todo el texto entre el signo de exclamación y el punto y coma es ignorado por LINGO. Loscomentarios pueden ocupar más de una línea y pueden compartir una línea con otrasexpresiones de LINGO. Por ejemplo:

X = 1.5 * Y + Z / 2 * Y; !Este es un comentario;

X = 1.5 * !Este es un comentario en el mediode una restricción; Y + Z / 2 * Y;

Usted puede haberse dado cuenta que hemos utilizado letras mayúsculas para nuestrosnombres de variables. Esto no es un requisito. LINGO no distingue entre letras minúsculas ymayúsculas en nombres de variables. Por lo tanto los siguientes nombres de variables debenser consideradas como equivalentes:

TURBOTurboturbo

Al construir nombres de variables en LINGO, todos los nombres deben comenzar con unCARACTER ALFABETICO (A-Z). Los caracteres siguientes pueden ser indistintamentealfabéticos, numéricos (0-9) o la línea de subrayado ( _ ). Los nombres pueden tener un largomáximo de 32 caracteres.

Un aspecto final que puede usted haber notado, es que el editor de LINGO estápermanentemente monitoreando la sintaxis de LINGO. En otras palabras, cuando encuentrapalabras claves de LINGO las despliega en color azul; los comentarios se despliegan en verdey todo otro texto se despliega en negro. La concordancia de paréntesis también se destaca, eneste caso en rojo, cuando usted coloca el cursor inmediatamente después de un paréntesis.Usted encontrará éste aspecto muy útil para ayudarle a seguir errores de sintaxis en susmodelos.

3. Resolviendo el Modelo

a) Errores de SintaxisSu modelo ha sido ya ingresado y está listo para ser resuelto. Para comenzar a solucionar elmodelo seleccione el comando Solve en el menú LINGO o presione el botónen la barra de herramientas en la parte alta de la ventana principal.

LINGO comenzará compilando el modelo. Esto significa que LINGO comprobará si elmodelo cumple con todos los requerimientos de sintaxis. Si el modelo no pasa estas pruebasusted será informado por un mensaje de error. En el modelo a continuación, por ejemplo, se haolvidado utilizar los símbolos de multiplicación, en este caso usted recibirá un mensaje deerror como el que se indica:

INICIALIZANDO 7

LINGO le hace saber que hay un error de sintaxis en su modelo, lista el número de la línea enla cual está y apunta con una punta de flecha al lugar donde ocurre. Para mayor informaciónen cuanto a códigos de error vea el Apéndice B Mensajes de Error.

b) Ventana de Estado de SoluciónSi no hay errores de formulación en la etapa de compilación, LINGO llamará a la sub rutinainterna de cálculo apropiada para comenzar a buscar la solución óptima para su modelo.Cuando la rutina de solución comienza se despliega en su pantalla una Ventana del Estado dela Solución como la siguiente:

8 CAPITULO I

La ventana del Estado de Solución es útil para monitorear el progreso de la solución y lasdimensiones de su modelo.

El marco "Variables" muestra el número total de variables en el modelo y de ellas el númerode variables que son no lineales. Una variable es considerada no lineal si entra en una relaciónno lineal en cualquiera de las restricciones del modelo. Por ejemplo la restricción:

X + Y = 100;Sería considerada lineal porque el gráfico de esta función sería una línea recta. Por otro lado,la función no lineal:

X * Y = 100;Es cuadrática y su gráfico es una línea curva. Si estuviésemos resolviendo un modelo con estarestricción no lineal, la contabilización de variables no lineales indicaría 2 para representar elhecho de que dos variables, X e Y, aparecen con una relación no lineal en esta restricción.Como otro ejemplo considere la restricción:

X * X + Y = 100;En este caso X aparece no lineal mientras Y aparece como variable lineal. Esta restricción nocausará que Y sea contabilizada como una de las variables no lineales. Vea el Capítulo XIIIsobre Modelación Matemática para mayor información sobre las diferencias entre ecuacioneslineales y no lineales.

El marco "Variables" le indica asimismo el conteo del número total de variables enteras quehay en el modelo. En general, mientras más variables no lineales haya y mientras másvariables enteras haya en el modelo, más difícil será encontrar una solución óptima en unacantidad de tiempo razonable. Los más rápidos de solucionar son los modelos lineales puros,sin variables enteras. Para mayores detalles en cuanto al uso de variables enteras refiérase alCapítulo III Usando Funciones de Dominio de Variables.

El conteo de variables no incluye aquellas variables que LINGO determina tienen un valorfijo. Por ejemplo, considere las siguientes restricciones:

X = 1;X + Y = 3;

De la primera restricción LINGO determina que X tiene un valor fijo de 1. Usando estainformación en la restricción 2 LINGO determina que Y tiene un valor fijo de 2. X e Y seránluego sustituidas en el modelo y no contribuirán en la contabilización del total de variables.

El marco "Constraints" muestra el total de restricciones y el número de éstas que son nolineales. Una restricción es considerada como no lineal si una o más variables tienenrelaciones no lineales en esa restricción. LINGO busca en su modelo restricciones que seanfijas. Una restricción es considerada fija si todas las variables en ella son fijas. Lasrestricciones fijas son sustituidas y sacadas del modelo por lo que no contribuyen en lacontabilización del total de restricciones.

El marco "Nonzeros" muestra el número total de coeficientes distintos de cero en el modelo yde éstos cuantos están asociados a variables no lineales. En una restricción específica aparecesólo un grupo pequeño de variables del total de variables del modelo. El coeficiente implícitopara todas las variables que no aparecen es cero, mientras que los coeficientes de las variablesque si aparecen son "nonzeros". Por lo tanto se puede interpretar el número total de

INICIALIZANDO 9

coeficientes distintos de cero como la contabilización del número de veces que las variablesaparecen en todas las restricciones. El número de coeficientes distintos de cero, no lineales, sepuede interpretar como el número de veces que las variables no lineales aparecen en todas lasrestricciones.

El marco "Generator Memory Used" indica la cantidad de memoria que el generador demodelo de LINGO está actualmente usando de su memoria compartida. Usted puede cambiarel tamaño de la asignación de memoria al generador de modelo usando el comando "Options"de LINGO. (Vea el Capítulo V Comandos de Windows).

El marco "Elapsed Runtime" muestra el total de tiempo usado hasta el momento para generary resolver el modelo.

El marco "Optimizer Status" muestra el estado actual de optimización y la descripción de cadacampo aparece en la siguiente tabla:

Campo DescripciónState Indica el Estado actual de solución. Los estados posibles son: "Global

Optimum" (Optimo global), "Local Optimum" (Optimo local), "Feasible"(Factible), "Infeasible" (No factible), "Unbounded" (No acotado),"Interrupted" (Interrumpida) y "Undetermined" (Indeterminada)

Objective Valor actual de la Función ObjetivoInfeasibility Cantidad en la que las restricciones que no se cumplen están

sobrepasadas.Iterations Número de iteraciones ocupadas para llegar a la solución actualBranches Número de ramas en el método del árbol de ramificación y acotamiento

(Sólo para modelos de programación entera)Best IP Valor de la Función Objetivo para la mejor solución entera encontrada

(Sólo para modelos de programación entera)IP Bound Límite teórico del valor de la de la Función Objetivo para modelos de

programación entera

Campo "State"Cuando LINGO comienza a resolver su problema, el estado inicial de la solución actual será"indeterminada". Esto se debe a que "Solver" no ha tenido aún la oportunidad de generar unasolución para su problema.

Una vez que "Solver" comienza las iteraciones el estado avanzará a la condición "no factible".En el estado no factible LINGO ha generado soluciones tentativas, pero ninguna que satisfagatodas las restricciones del modelo.

Asumiendo que existe una solución factible "Solver" luego avanzará al estado "Factible". Enel estado factible LINGO ha encontrado una solución que satisface todas las restricciones delmodelo, pero aún no está satisfecho de haber encontrado la mejor solución para su modelo.

10 CAPITULO I

Una vez que "Solver" ya no puede encontrar mejores soluciones para su modelo, terminará yasea en el estado "Optimo Global" o bien en el "Optimo Local". Si su modelo no tienerestricciones no lineales, cualquier solución óptima local será también óptima global. Por lotanto, todo modelo lineal optimizado terminará en el estado "Optimo Global". Si, por otrolado, su modelo tiene una o más restricciones no lineales, entonces cualquier solución óptimalocal puede no ser la mejor solución a su modelo. Podría haber otro "peak" que es mejor que elactual pero el procedimiento de búsqueda de óptimos locales de "Solver" es incapaz de ver porsobre el "peak" actual. Por lo tanto, en modelos no lineales, LINGO puede terminar solamenteen el estado de óptimo local. LINGO podría de hecho llegar a un óptimo global, pero dada lanaturaleza y características de los problemas no lineales, LINGO no puede asegurar que hayalo haya encontrado. Dada esta realidad, es siempre preferible formular un modelo usando sólorestricciones lineales siempre que ello sea posible. Para mayores detalles en los conceptos depuntos de óptimo global vs óptimo local, refiérase al Capítulo XIII Modelos Matemáticos.

Si un modelo termina en el estado "No Acotado", significa que LINGO puede mejorar lafunción objetivo sin tener un límite. En la vida real esto correspondería a una situación en laque usted podría generar utilidades infinitas. Debido a que esa situación es por decir lo menos"extraña", sino imposible, lo que realmente ocurre es que usted o bien ha omitido o haplanteado erróneamente en su modelo, alguna restricción del sistema.

Finalmente, el estado "Interrumpida" ocurrirá cuando usted prematuramente interrumpa eltrabajo de LINGO antes de que haya encontrado la solución final para su modelo. Losmecanismos para interrumpir "Solver" se discuten mas abajo.

Campo "Objective"Este campo da el valor de la función objetivo para la solución actual. Si su modelo no tieneuna función objetivo, entonces aparecerá "N/A" (No Aplica) en este campo.

Campo "Infeasibility"Este campo indica la cantidad en la que las restricciones que no se cumplen estánsobrepasadas. Tome en cuenta que en este caso no se considera el calcular la cantidad en quepuedan estar sobrepasados los límites de variables. Por lo tanto, es posible que este campo seacero a pesar que la solución no sea factible debido a que se sobrepasa el límite de valor dealguna variable. Para determinar si LINGO ha encontrado una solución factible refiérase a lodiscutido en el campo "State" más arriba.

Campo "Iterations"El campo iteraciones muestra la contabilización del número de iteraciones efectuadas hasta elmomento por LINGO. La operación matemática fundamental desarrollada por LINGO sedenomina "Iteración". Una iteración implica encontrar una variable, actualmente en valor cero,que sería atractivo introducir en la solución con un valor distinto de cero. Esta variable esentonces introducida en la solución a valores sucesivamente mayores, hasta que ya sea unarestricción está cercana a ser no factible u otra variable está siendo llevada a cero. En estepunto el proceso de iteración comienza nuevamente. En general, mientras mas grande sea elmodelo mayor número de iteraciones requerirá para ser resuelto y cada iteración requerirá mastiempo para ser completada.

INICIALIZANDO 11

Campo "Branches"LINGO utiliza la estrategia denominada "Algoritmo de Bifurcación y Acotamiento" pararesolver problemas de programación entera. Este algoritmo es un método sistemático paraimplícitamente enumerar todas todas las posibles combinaciones de las variables enteras en unmodelo. Vea el texto de Hillier y Lieberman (1995) para mayor información sobre elalgoritmo.

El campo "Branches" (ramas) muestra el número de ramas que tiene el árbol del algoritmo debifurcación y acotamiento usado para solucionar el modelo. Si su modelo no contienevariables enteras, entonces en este campo se indicará "N/A". Si el número de ramas tiende aser muy grande, significa que "Solver" está teniendo problemas para converger a una solución.En ese caso es conveniente buscar una formulación alternativa para el modelo que pueda serresuelta más rápidamente.

Campo "Best IP"El campo Best IP muestra el valor de la función objetivo en la mejor solución enteraencontrada. Cuando su modelo contiene variables que están restringidas a tener sólo valoresenteros se dice estar en un modelo de programación entera (IP). (Para mayor informaciónsobre como forzar a variables a tener sólo valores enteros, refiérase a las funciones @BIN y@GIN en el Capítulo III Usando Funciones de Dominio de Variables. El uso de variablesenteras puede aumentar en gran medida el tiempo necesario para resolver un problema, peroson necesarias y útiles en muchas áreas de aplicación. Si su modelo no contiene variablesenteras se desplegará en este campo "N/A".

Campo "IP Bound"Mientras LINGO enumera las posibles combinaciones de soluciones enteras, es capaz dededucir un límite para el mejor valor posible que la función objetivo puede alcanzar. El campoIP Bound indica el valor para este límite. En la mayoría de los casos este límite se estrecharácada vez más mientras mas corra "Solver". Además el valor de la función objetivo en la mejorsolución entera, que se indica en el campo "Best IP" tenderá a acercarse cada vez más al valordel campo "IP Bound" mientras mas se avance en los cálculos. En algún instante estos dosvalores estarán muy cerca. Dado que el valor del "Best IP" no podrá nunca sobrepasar el del"IP Bound", el hecho de que estos dos valores estén muy cercanos, indica que la mejorsolución actual de LINGO es ya sea la solución óptima o una muy cercana a ella. En talinstante el usuario puede decidir interrumpir el trabajo de "Solver" y aceptar la mejor soluciónhasta ese momento encontrada, a objeto de ahorrar tiempo adicional de computación.

La ventana de Estado de Solución provee también el botón de interrupción de "Solver".Interrumpir "Solver" provoca que LINGO detenga los cálculos en la próxima iteración. En lamayoría de los casos LINGO será capaz de restablecer y mostrar la mejor solución encontradahasta el momento. La única excepción es en el caso de modelos de programación lineal sinvariables enteras. En ese caso al interrumpir ""Solver" la solución que se devolverá no tendrásignificado alguno y debe ser ignorada. Esto no es un gran obstáculo puesto que los programaslineales normalmente se resuelven rápidamente por lo que se disminuye la necesidad deinterrumpir los cálculos.

12 CAPITULO I

Nota: Usted debe ser cuidadoso en la interpretación de las soluciones luego de haberinterrumpido "Solver". Estas soluciones pueden 1) Ser definitivamente no óptimas, 2)Pueden no ser factibles para todas las restricciones y 3) No tener utilidad alguna si elmodelo es de programación lineal sin variables enteras.

Junto al botón de interrupción de "Solver" existe otro botón etiquetado "Close". Pinchar estebotón hará que la ventana de Estado de Solución se cierre. Esta ventana puede ser reabierta encualquier momento seleccionando el comando "Status window" en el menú Windows.

En la base de la ventana de Estado de Solución usted encontrará un campo de "UpdateInterval". LINGO actualizará la información en la ventana de Estado de Solución cada nsegundos, donde n es el valor mostrado en el campo "Update Interval". Usted puedeprogramas este valor al que usted desee. Sin embargo el programarlo en cero provocarátiempos de solución mucho mas largos- LINGO gastará más tiempo actualizando los valoresen la ventana que resolviendo el modelo. En problemas mas grandes, LINGO puede que nosea capaz de actualizar la información de la ventana a intervalos regulares. Por lo tanto, no sepreocupe si en algunas oportunidades usted debe esperar más de lo que está indicado en elcampo "Update Interval".

c) El Reporte de SoluciónCuando LINGO ha terminado de resolver nuestro ejemplo de CompuQuick, se creará en supantalla una nueva ventana "Reporte de Solución" conteniendo los detalles de la solución desu modelo. El reporte de solución debe aparecer como lo siguiente:

Esta solución nos indica que CompuQuick debería construir diariamente 100 computadorasEstándar y 30 Turbo para lograr una utilidad diaria total de US$ 14500. Refiérase a la sección"Examinando la Solución" mas abajo para detalles adicionales en los diferentes campos deeste reporte.

4. Imprimiendo su Trabajo en WindowsEn las versiones Windows de LINGO use el comando "Print" en el menú "File" para imprimirla ventana activa (la que está mas adelante) o pinche el botón correspondiente en la barra de

INICIALIZANDO 13

herramientas. Usted puede imprimir cualquier ventana, incluyendo la del modelo y la dereporte de solución. Si usted desea imprimir sólo una parte de la ventana, use los comandos"Cut" y "Paste" en el menú "Edit" para colocar el texto deseado en una nueva ventana antes deimprimir. Puede usted también acceder a los comandos "Cut", "Paste" y "New" pinchando losbotones correspondientes en la barra de herramientas.

5. Guardando su Trabajo en WindowsPara guardar su modelo en un archivo en disco use el comando "Save" en el menú "File" opresione el botón correspondiente de la barra de herramientas. A menos que usted especifiquealgo diferente, LINGO automáticamente otorgará la extensión .LG4 a su nombre de archivo.

D. Examinando la Solución

En primer lugar: el reporte de solución nos indica que LINGO ocupó 2 iteraciones pararesolver el modelo. Segundo: la máxima utilidad alcanzable es de US$ 14500. Tercero: lascantidades a producir de las computadoras Estándar y Turbo son 100 y 30 respectivamente. Loque es interesante de notar es que fabricaremos menos computadoras de aquellas que tienenuna relativa mayor utilidad, el modelo Turbo, debido a su uso mas intensivo de nuestralimitada disponibilidad de mano de obra. Las columnas "Reduced Costs", "Slack or Surplus" y"Dual Price" se explican a continuación.

1. Costos ReducidosEn un reporte de solución de LINGO, usted encontrará una cantidad que se denomina"Reduced Costs" asociada a cada variable. Hay dos interpretaciones válidas, equivalentes delcosto reducido.

Primero: usted puede interpretar el costo reducido de una variable como la cantidad en quedebería mejorar el coeficiente de una variable en la función objetivo, antes de que llegue a serrentable dar a la variable en cuestión, un valor positivo en la solución óptima. Por ejemplo: siuna variable tiene un costo reducido de 10, el coeficiente de esa variable en la función objetivodebería aumentar en 10 unidades en una problema de maximización, o disminuir en 10unidades en un problema de minimización, para que sea una alternativa atractiva que lavariable entre a la base de solución. Una variable ya positiva en la solución óptima, como es elcaso de ESTANDAR y TURBO en nuestro ejemplo, tienen automáticamente un costoreducido cero.

Segundo: el costo reducido de una variable puede ser interpretado como la cantidad de multaque usted debería pagar para introducir una unidad de esa variable en la solución.Nuevamente, si usted tiene una variable con un costo reducido de 10, usted tendría que pagaruna multa de 10 unidades para introducir la variable en la base de solución. En otras palabras,la función objetivo disminuiría en 10 unidades en un modelo de maximización o aumentaríaen 10 unidades en un modelo de minimización.

Los costos reducidos son válidos sólo en un rango de valores. Para mayor información en ladeterminación del rango de validez de un costo reducido vea el comando "Range" del menúLINGO en el Capítulo V Comandos de Windows.

14 CAPITULO I

2. HolgurasLa columna "Slack or Surplus" en un reporte de solución de LINGO le dice cuán cerca estausted de satisfacer una restricción como una igualdad. Esta cantidad, en una restricción querepresenta una limitación, o sea del tipo menor o igual que (≤), es interpretada generalmentecomo una carencia (Slack), lo que falta para llegar a la igualdad. En una restricción querepresenta un requerimiento, o sea del tipo mayor o igual que (≥), esta cantidad se denominaun exceso (Surplus) en cuanto se excede la igualdad.

Si la restricción es satisfecha exactamente como una igualdad, el valor de la holgura será ceroy la restricción será catalogada como Restricción Activa. Si una restricción es violentada,como ocurre en una solución no factible, el valor de su holgura será negativo. Saber estopuede ayudarle a encontrar las restricciones violentadas en un modelo no factible- un modelopara el cual no existe un set de valores para las variables de decisión, que simultáneamentesatisfaga todas las restricciones. Restricciones no limitantes, restricciones con una holguramayor que cero, tendrán un valor positivo distinto de cero en esta columna.

En nuestro ejemplo de CompuQuick note que la fila tres (TURBO <=120) tiene una holgurade 90. Debido a que el valor óptimo de TURBO es 30, a esta fila le faltan 90 unidades paraque se cumpla con la igualdad.

3. Precios DualesEl reporte de solución de LINGO también entrega una cantidad denominada "Dual Price"asociada a cada restricción. Usted puede interpretar el precio dual de una restricción como lacantidad en que mejoraría el valor óptimo de la función objetivo, si el término libre o valorconstante de la restricción fuese aumentado en una unidad. Por ejemplo: en la solución deCompuQuick el precio dual de 75 en la fila 4, significa que el aumentar una unidad más demano de obra provocará que la función objetivo mejore en 75 unidades, a un valor de 14575.

Nótese que "mejoraría" es un término relativo. En un problema de maximización mejorarsignifica que el valor de la función objetivo aumentará. Sin embargo, en un problema deminimización, el valor de la función objetivo debería disminuir si usted aumenta en unaunidad el término libre de una restricción que tiene un precio dual positivo.

Los precios duales se denominan también Precios Sombra, porque le indican cuanto estaríausted dispuesto a pagar por cada unidad adicional de un recurso específico. Basado en nuestroanálisis, CompuQuick estría dispuesto a pagar hasta US$ 75 por cada hora adicional de manode obra.

Al igual que en los costos reducidos, los precios duales son válidos sólo para un rango devalores del término libre de la restricción. Refiérase al comando "Range" del menú LINGO enel Capítulo V Comandos de Windows, para mayor información en la determinación delrango de validez de un precio dual.

INICIALIZANDO 15

E. Usando el Lenguaje de Modelación

Uno de los aspectos más poderosos de LINGO es su lenguaje matemático de modelación. Ellenguaje de modelación de LINGO le deja expresar su problema de una manera natural que esmuy similar a la notación matemática estándar. En vez de ingresar cada término de cadarestricción en forma explícita, usted puede expresar una serie completa de restriccionessimilares en una expresión compacta, única. Esto permite trabajar con modelos más fáciles demantener y acrecentar.

Otra característica conveniente del lenguaje de modelación de LINGO es la sección de datos.La sección de datos le permite aislar los datos del modelo de la formulación misma. En efecto,LINGO puede incluso leer datos desde una hoja de cálculo separada, una base de datos o unarchivo de texto. Con datos independientes del modelo es mucho más fácil realizar cambios yhay menos probabilidad de cometer errores cuando los haga.

El modelo simple de CompuQuick antes discutido usa variables escalares. Cada variable eslistada explícitamente por su nombre (i.e. ESTANDAR y TURBO) y cada restricción estáformulada explícitamente (i.e. TURBO <= 100). En la mayoría de modelos más grandes ustedencontrará la necesidad de trabajar con un grupo de varias restricciones y variables muysimilares. Utilizando la aproximación de modelación escalar que hemos presentado hasta esteinstante, usted necesitará abordar la tarea repetitiva de tipear cada término de cada restricción.Afortunadamente, la habilidad de LINGO de manejar grupos de objetos le permite realizaresta operación en forma mucho más eficiente.

La siguiente sección es un ejemplo de cómo usar sets para resolver un problema de transporte.Después de revisar este ejemplo debería quedar claro que acoplar la potencialidad de los setscon el lenguaje de modelación de LINGO, le permite construir modelos más grandes, en unafracción del tiempo requerido para hacerlo con una aproximación a modelación escalar. (Veael Capítulo II Utilizando Sets para una descripción detallada de los sets).

1. Desarrollando un Modelo de Transporte Basado en Sets

El ProblemaPara nuestro ejemplo suponga que la compañía Wireless Phone (WP) tiene seis bodegas queabastecen a ocho vendedores con teléfonos inalámbricos. Cada bodega tiene unadisponibilidad de teléfonos que no puede ser excedida y cada vendedor una demanda deteléfonos que debe ser satisfecha. WP desea determinar cuántos teléfonos despachar desdecada bodega a cada vendedor para minimizar el costo total de transporte. Este es un problemaclásico de optimización referido a la problemática de transporte.El siguiente diagrama ilustra el problema:

16 CAPITULO I

Ya que cada bodega puede despachar a cada vendedor, hay un total de 48 posibilidades dedespacho o arcos. Se necesitará una variable por cada arco para representar la cantidad deteléfonos despachada a través de ese arco.

Los siguientes datos están además disponibles:

La Función ObjetivoEl primer paso en la formulación del modelo será construir la función objetivo. Como fue yamencionado, WP desea minimizar el costo total de transporte. Haremos que DESPACHOSijsea el número de teléfonos transportados desde la bodega i al vendedor j. En ese caso, si

B1

V1 V2 V3 V4 V5 V6 V7 V8

B2 B3 B4 B5 B6

Bodega TeléfonosDisponibles

1 602 553 514 435 416 52

Datos de capacidad de suministro

Vendedor Demanda porTeléfonos

1 352 373 224 325 416 327 438 38

Datos de demanda

V1 V2 V3 V4 V5 V6 V7 V8B1 6 2 6 7 4 2 5 9B2 4 9 5 3 8 5 8 2B3 5 2 1 9 7 4 3 3B4 7 6 7 3 9 2 7 1B5 2 3 9 5 7 2 6 5B6 5 5 2 2 8 1 4 3

Costos de transporte por cada teléfono (US$)

INICIALIZANDO 17

nosotros quisiéramos escribir explícitamente la función objetivo usando variables escalares,tendríamos la siguiente expresión:

MIN = 6*DESPACHOS11 + 2*DESPACHOS12 + 6*DESPACHOS13 + 7*DESPACHOS14 +4*DESPACHOS15 + ………..

……

+ 8 DESPACHOS65 + DESPACHOS66 + 4*DESPACHOS67 + 3*DESPACHOS68;

Por ser breves hemos incluido sólo 9 de los 48 términos que tiene la Función Objetivo. Comose puede apreciar, ingresar tal enorme fórmula sería tedioso y propenso a errores. Extrapoleesto a un caso más realista donde los vendedores podrían ser miles y resulta evidente que lamodelación basada en variables escalares es a lo menos problemática.

Si usted está familiarizado con la notación matemática usted puede expresar esta mismafórmula de una manera mucho más compacta, como sigue:

ijij ij DESPACHOSCOSTOMINIMIZAR *∑

De una manera similar, el lenguaje de modelación de LINGO le permite expresar la FunciónObjetivo en una forma que es: corta, fácil de tipear y fácil de entender. La expresiónequivalente de LINGO es:

MIN @SUM (ARCOS (I,J) : COSTO (I,J) * DESPACHOS (I,J));

En palabras, esto dice que se debe minimizar la suma del costo de transporte multiplicado porla cantidad de teléfonos despachados para todas las combinaciones (ARCOS) entre bodegas yvendedores. La siguiente tabla compara la notación matemática respecto de la sintaxis deLINGO para la Función Objetivo.

Las RestriccionesCon la Función Objetivo en su lusets de restricciones en este monúmero de teléfonos que requier"restricciones de demanda". El

MM

D

Notaciónatemática

Sintaxis de LINGO

INIMIZAR MIN∑ij @SUM (ARCOS (I,J) :

COSTOij COSTO (I,J)* *

ESPACHOSij DESPACHOS (I,J));

gar, el siguiente paso es formular las restricciones. Hay dosdelo. El primer set garantiza que cada vendedor reciba ele. Nos referiremos a este primer set de restricciones comosegundo set de restricciones, denominado "restricciones de

18 CAPITULO I

capacidad de suministro u oferta", asegura que cada bodega no despache más teléfonos que losque tiene efectivamente en inventario.

Partiendo con la restricción de demanda del vendedor 1, necesitamos calcular la suma de losembarques desde todas las bodegas hacia el vendedor 1 y hacerla igual a su demanda de 35teléfonos. Por lo tanto si usáramos notación escalar la expresión matemática sería:

DESPACHOS11 + DESPACHOS 21 + DESPACHOS31 + DESPACHOS41 +DESPACHOS51 + DESPACHOS61 = 35;

Usted necesitará tipear otras siete restricciones similares para cubrir la demanda de los ochovendedores. Nuevamente, como puede apreciarse, esto sería tedioso y propenso a errores. Sinembargo y tal como lo hicimos con la Función Objetivo, podemos usar el lenguaje demodelación de LINGO basado en sets para simplificar nuestra tarea.

Usando notación matemática las ocho restricciones pueden expresarse en una sola fórmula:jDEMANDADESPACHOSi jij ∀∑ = ,

La expresión de modelación en LINGO es la siguiente:

@FOR (VENDEDORES (J) : @SUM ( BODEGAS (I) : DESPACHOS (I,J)) = DEMANDA (J));

Esta expresión de LINGO reemplaza las ocho restricciones de demanda. En palabras esto diceque para todos los vendedores la suma de los teléfonos que se despachen desde las bodegas aese vendedor, debe ser igual a la correspondiente demanda del vendedor. La siguiente tablacomparativa muestra lo parecidas que son las dos últimas expresiones.

Ahora continuaremos constrmatemática estándar, las seis

La expresión equivalente en

@FOR (BODEGAS (I) : @S

M

D

D

Notaciónatemática

Sintaxis de LINGO

j∀ @FOR (VENDEDORES (J) :∑ j @SUM ( BODEGAS (I) :

ESPACHOSij DESPACHOS (I,J)= =

EMANDAj DEMANDA (J));

uyendo las restricciones de capacidad de suministro. En notación restricciones de oferta se expresarían como:

iOFERTADESPACHOSj iij ∀∑ ≤ ,

el lenguaje de modelación de LINGO sería:

UM (VENDEDORES (J) : DESPACHOS (I,J)) <= OFERTA (I));

INICIALIZANDO 19

En palabras esto indica que para cada miembro del set "Bodegas", la suma de los teléfonosdespachados a los vendedores desde esa bodega, debe ser menor o igual a la capacidad desuministro u oferta de esa bodega.

Colocando junto todo lo realizado hasta el momento se obtiene el siguiente modelo completo:

MODEL:MIN = @SUM (ARCOS (I,J) : COSTOS (I,J) * DESPACHOS (I,J));@FOR (VENDEDORES (J) : @SUM ( BODEGAS (I) : DESPACHOS (I,J)) =DEMANDA (J));@FOR (BODEGAS (I) : @SUM (VENDEDORES (J) : DESPACHOS (I,J)) <= OFERTA(I));

ENDModelo: WIDGETS

Sin embargo, todavía necesitamos definir los datos del modelo, en lo que LINGO denomina"Sección de Sets" y la "Sección de Data". Estas secciones se describen en detalle mas abajo.

Definiendo los SetsCada vez que usted está modelando un sistema de la vida real, normalmente encontrará quehay uno o más sets de objetos relacionados. Ejemplos característicos son Fábricas, clientes,vehículos y empleados. Normalmente si una restricción es aplicable a un miembro de un set,entonces será aplicable a cualquiera y cada uno de los restantes miembros del set. Este simpleconcepto es el corazón del lenguaje de modelación de LINGO. LINGO le permite definir lossets de objetos relacionados en la sección de SETS. Esta sección comienza con la palabraclave SETS: en una línea propia y termina con ENDSETS también en una línea propia. Unavez que los miembros de los sets están definidos, LINGO tiene un grupo de funciones querelacionan los sets. (i.e. @FOR), que aplica operaciones a todos los miembros de un setutilizando una instrucción única. Vea el Capítulo II Utilizando Sets para mayor información.

En el caso de nuestro modelo de WP, hemos construido los siguientes Sets:• BODEGAS• VENDEDORES y• ARCOS de transporte desde cada bodega a cada vendedor.

Estos tres sets se definen en la sección sets del modelo como se indica a continuación:

SETS :BODEGAS/ B1 B2 B3 B4 B5 B6 / : OFERTA;VENDEDORES / V1 V2 V3 V4 V5 V6 V7 V8/ : DEMANDA;ARCOS (BODEGAS, VENDEDORES) : COSTOS, DESPACHOS;

ENDSETS

La segunda línea dice que el set BODEGAS tiene los miembros B1, B2, B3, B4, B5 y B6,cada uno con un atributo llamado OFERTA. Los ocho vendedores se definen en forma similaren la tercera línea, cada uno con un atributo llamado DEMANDA.

20 CAPITULO I

El último set denominado ARCOS representa los 48 arcos en la red de transporte. Cada arcotiene un asociado un COSTO y una cantidad de teléfonos transportados a través de él(DESPACHOS). La sintaxis utilizada para definir este set difiere de la ocupada en los dos setsprevios. Al especificar:

ARCOS (BODEGAS, VENDEDORES)

le estamos diciendo a LINGO que el set ARCOS se deriva de los sets BODEGAS yVENDEDORES. En este caso LINGO genera cada par ordenado (bodega-vendedor). Cadauno de estos 48 pares ordenados se transforma en un miembro del set ARCOS. Para clarificarlo anterior hemos listado una selección de miembros del set ARCOS en la siguiente tabla:

Podríamos haber ingresadoLINGO nos ahorra conside

Ingresando los DatosLINGO permite al usuariode Wireless Phone tenemo

DATA :ODC

ENDDA

La sección de datos comiela palabra ENDSETS tamBODEGAS como el de Ddirecta. El atributo COSTmas complejo. Cuando LIsección de datos, incremenparticular se leerá primerCOSTOS (B1,V8) = 9. Poy así sucesivamente.

Indice delMiembro

Arco de Transporte

1 B1 → V12 B1 → V23 B1 → V3……47 B6 → V748 B6 → V8

explícitamente cada miembro de ARCOS en la sección Sets, perorable trabajo al generar los miembros del set por nosotros.

aislar los datos en la Sección Datos del modelo. En nuestro ejemplos la siguiente sección de datos:

FERTA = 60 55 51 43 41 52;EMANDA = 35 37 22 32 41 32 43 38;OSTOS = 6 2 6 7 4 2 5 9

4 9 5 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;

TA

nza con la palabra clave DATA : en una línea propia y termina conbién en una línea propia. Tanto el atributo de OFERTA del set

EMANDA del set VENDEDORES se inicializan o leen de maneraOS del set ARCOS que es bidimensional es sin embargo un tantoNGO inicializa la lectura de un arreglo multidimensional en unate primero el contador externo (j). Por lo tanto en este ejemplo en

o COSTOS (B1,V1) = 6, luego COSTOS (B1,V2) = 2, hastasteriormente se continuará con la lectura de COSTOS (B2,V1) = 4

INICIALIZANDO 21

En este ejemplo particular hemos colocado los datos directamente en el interior de la seccióndel modelo. LINGO tiene también la habilidad de importar datos desde fuentes externas. Másespecíficamente, un modelo de LINGO puede importar datos desde archivos externos de textoo planillas de cálculo, establecer enlaces OLE hacia Excel y/o crear enlaces ODBC hacia lasbases de datos mas populares. Refiérase a los Capítulos VII hasta el X para información sobreenlaces hacia datos externos disponibles. Teniendo datos independientes del modelo es muchomás fácil cambiarlos y hay menos riesgo de cometer errores al hacerlo. Esto puede ser muyútil para resolver un modelo en el que se cambia frecuentemente los datos.Colocando junto la sección de datos, la sección de Sets, la Función Objetivo y lasRestricciones, el modelo debe lucir como se indica:

Nótese que hemos agregado comentarios para mejorar el entendimiento del modelo y cada unade sus secciones. El modelo se llama WIDGETS y puede encontrarse en el subdirectorio"Samples" del directorio principal de LINGO.

2. Solucionando el Modelo

Resolvamos ahora el modelo para determinar la cantidad óptima de teléfonos que se debedespachar desde cada bodega a cada vendedor. Seleccione en el menú LINGO el comandoSolve o presione el botón correspondiente en la barra de herramientas

22 CAPITULO I

Nota: Cada vez que crea que la cantidad de información de salida que entrega LINGO esdemasiada para sus requerimientos usted puede elegir en el menú LINGO el comandoOptions y seleccionar en la pestaña Interface la casilla Terse output. LINGOdesplegará entonces en la ventana de reporte de solución, sólo el número de iteracionesrealizadas y el valor óptimo de la Función Objetivo.

Para obtener una respuesta que contenga sólo los valores distintos de cero para losDESPACHOS, se selecciona en el menú LINGO el comando Solution que da acceso a lasiguiente ventana:

Presione en la flecha del campo Attribute or Row Name y seleccione DESPACHOS entre lalista de nombres que se le presenta. Para suprimir la impresión de variables con valor cerohaga click en la casilla Nonzeros Only. Una vez hecho esto la ventana debe lucir como sigue:

INICIALIZANDO 23

Luego haga click en el botón OK y se le presentará el siguiente reporte de solución quecontiene todos los valores distintos de cero para la cantidad óptima de teléfonos que se debedespachar desde cada bodega a cada vendedor.

Si está utilizando LINGO en una plataforma distinta a Windows, usted puede generar elmismo reporte utilizando el comando "Nonzero Volume".

3. Resumen

Esta sección ha comenzado a demostrar las virtudes del lenguaje de modelación basado en setsde LINGO. Eligiendo una aproximación a modelación basada en sets, usted encontrará que losmodelos son más fáciles de construir, de entender y de mantener. La modelación basada ensets toma un poco mas de trabajo para asimilarla, pero sus beneficios sobrepasan el esfuerzoextra necesitado para aprenderla. Profundizaremos más en detalle la modelación basada en setsen el próximo capítulo "Utilizando Sets".

F. Capacidades Adicionales del Lenguaje de Modelación

1. Nombres de RestriccionesLINGO le da la posibilidad de darle un nombre a las restricciones en su modelo. Esta es unapráctica conveniente por dos razones: Primero, los nombres de las restricciones se utilizan enlos reportes de solución, haciéndolas más fáciles de interpretar. Segundo, muchos de losmensajes de error de LINGO se refieren a una restricción específica por su nombre. Si ustedno ha dado nombres a sus restricciones el descubrir la fuente de dichos errores puede llegar aser, a lo menos, difícil.

24 CAPITULO I

Nota: LINGO no requiere que usted de nombre a sus restricciones. Sin embargo, si usted nolo hace, LINGO utiliza por defecto un nombre que corresponde al índice interno de larestricción. El índice interno tiene un poco que ver con el orden en el que usted definiósus restricciones, por lo que se dificulta el trabajo de interpretar los resultados y losmensajes de error. Debido a ello es altamente recomendado que siempre utilicenombres para sus restricciones en sus modelos.

Dar nombre a una restricción es bastante simple. Todo lo que necesita hacer es colocar elnombre entre paréntesis cuadrados al comienzo de la restricción. El nombre debe obedecer losrequerimientos estándar para un nombre en LINGO. Más específicamente, todo nombre debecomenzar con un carácter alfabético (A - Z). Los caracteres siguientes pueden ser alfabéticos,numéricos (0 - 9) o bien línea de subrayado. Los nombres pueden tener hasta 32 caracteres delargo. Algunos ejemplos de nombres de restricciones se indican a continuación:

Ejemplo 1: [FUNCION_OBJETIVO] MIN = X;Asigna el nombre FUNCION_OBJETIVO a la línea del objetivo del modelo.

Ejemplo 2:@FOR (VENDEDORES (J) : [RESTRICCIONES_DE_DEMANDA] @SUM ( BODEGAS (I) :DESPACHOS (I,J)) = DEMANDA (J));Asigna el nombre RESTRICCIONES_DE_DEMANDA a las restricciones de demanda de unmodelo de transporte.

Para ilustrar aún mejor el uso de nombres en las restricciones, se ha actualizado el modeloutilizado en la sección anterior donde se muestran los nombres en letra negrita.

INICIALIZANDO 25

La sección de líneas de restricción del reporte de solución, es ahora mucho más fácil deinterpretar.

Note que cada fila tiene ahora un nombre en vez de un simple número índice. Además, si larestricción es generada a través de un set utilizando la función @FOR, LINGO agrega unacualidad al nombre de cada restricción anexándole el correspondiente nombre del miembro delset, entre paréntesis. Ejemplo: RESTRICCION_DE_DEMANDA ( V1) debe interpretarse comola restricción de la demanda que se debe satisfacer al vendedor uno.

2. Título del ModeloUsted puede insertar un título para el modelo en cualquier parte donde normalmente se ingresauna restricción. Si se incluye el Título, éste aparecerá impreso al comienzo del reporte desolución. El título se usa también como argumento por defecto en la función @ODBC. (VerCapítulo X "Interactuando con Bases de Datos").

El título del modelo debe comenzar con la palabra clave TITLE: y terminar con punto ycoma. Todo el texto entre la palabra TITLE y el punto y coma se tomará como el título delmodelo.

A continuación hemos agregado un título al comienzo del modelo del ejemplo WIDGETS.

MODEL :TITLE WIDGETS;! Un problema de transporte de 6 bodegas y 8 vendedores;SETS :

BODEGAS/ B1 B2 B3 B4 B5 B6 / : OFERTA;VENDEDORES / V1 V2 V3 V4 V5 V6 V7 V8/ : DEMANDA;ARCOS (BODEGAS, VENDEDORES) : COSTOS, DESPACHOS;-----

26 CAPITULO I

Note que cuando se despliega el reporte de solución, el título aparece en la parte superior.

G. Dimensiones Máximas de Problemas

Algunas de las versiones de LINGO limitan una o más de las siguientes propiedades: númerototal de variables, cantidad de variables enteras, cantidad de variables no lineales y cantidad derestricciones. El límite en la cantidad total de variables es sobre el número total de variablesoptimizables que hay en su modelo, en otras palabras, las variables que LINGO no ha sidocapaz de descubrir que tengan un valor fijo específico. El límite de cantidad de variablesenteras aplica sobre el número total de variables optimizables restringidas a tener valoresenteros a través de las funciones @BIN o bien @GIN. El límite al número de variables nolineales aplica sobre el número de variables optimizables que aparecen con relaciones nolineales en las restricciones del modelo. Por ejemplo en la expresión X + Y, ambas variables,X e Y aparecen con relación lineal, sin embrago en la expresión X^2 + Y, X aparece no linealmientras Y aparece lineal. Por lo tanto X aparecerá en la contabilización de variables nolineales. En algunos casos, la posibilidad de incluir variables no lineales está disponible sólo siusted ha adquirido la Opción "No Lineal" con su sistema LINGO. El límite al número derestricciones se refiere al número de fórmulas en el modelo que contienen una o más variablesoptimizables. Tenga en consideración que una línea sencilla con la función @FOR, puedegenerar muchas restricciones.

El tamaño máximo del modelo que pueda manejar su sistema depende de la versión que ustedtenga. Los límites actuales para las diferentes versiones disponibles son:

Versión VariablesTotales

Variablesenteras

Variables noLineales

Restricciones

Demo/ Web 300 30 30 150Solver Suite 500 50 50 250Super 2000 200 200 1000Hyper 8000 800 800 4000Industrial 32000 3200 3200 16000Extended Ilimitada Ilimitada Ilimitada Ilimitada

INICIALIZANDO 27

Usted puede determinar los límites de su versión seleccionando el comando About LINGO enel menú HELP en Windows, o bien, tipeando HELP en la línea de ingreso de comandos enotras plataformas. Si usted determina que necesita una versión más grande de LINGO, existenactualizaciones disponibles a través de LINDO Systems. Por favor no vacile en contactarnospor precios y disponibilidades.

Nota 1: Los límites para diferentes versiones de LINGO están sujetos a cambios. Revisenuestra página WEB http://www.lindo.com para conocer los límites actuales.

Nota 2: En algunas versiones de LINGO, el límite de variables no lineales será cero si ustedno ha comprado la opción no lineal con su copia de LINGO.

H. Como Contactar LINDO Systems

LINDO SYSTEMS puede ser contactado a través de las siguientes direcciones y teléfonos:

LINDO Systems Inc.1415 North Dayton StreetChicago, IL, 60622

Tel: 312-988-7422Fax: 312-988-9065

e-mail: [email protected]: http://www.lindo.com

Para ventas e información de productos, por favor contáctenos en:

Tel: 1-800-441-2378 o 312-988-7422e-mail: [email protected]

Para soporte técnico preferimos que nos envíe su modelo y las preguntas por correoelectrónico a: [email protected]. Puede usted también hablar con el personal de soporte técnicoal teléfono 312-988-9421. Nuestro personal de soporte técnico le puede ayudar con preguntasrelacionadas con la instalación y operación de LINGO. Si usted tiene preguntas sencillas sobremodelación, generalmente podremos ayudarle a seguir en la dirección correcta. Si usted tienepreguntas de modelación mas extensas, podemos recomendarle consultores externos versadosespecíficamente en modelación matemática en general, que pueden ayudarle en sus esfuerzosde modelación.