Estos apuntes son libres y los puedes editar.

Algunas secciones están en inglés puedes colaborar traduciendo algunos párrafos.

¡Esta es una revisión vieja del documento!


LINGO

Introducción General

LINGO es software comercial de la empresa “LINDO SYSTEMS INC.”.

Desde la web del vendedor http://www.lindo.com y después de registrarse, se puede obtener una versión de demostración completamente funcional aunque restringida en el tamaño de los problemas que puede tratar.

LINGO es software especializado en la resolución de problemas de optimización. Dispone de ejemplos en los que se ilustra la forma de modelar un gran número de sistemas y problemas usuales en el ámbito de la Investigación Operativa.

Comenzando con LINGO

Ejemplo inicial

Tras iniciar el programa introduce el código siguiente en la ventana:

 max=2*x+y;
 5*x+2*y<10;
 3*x+5*y<15;

y pulsa sobre el icono con forma de diana.

Obtendrás la solución del problema. Observa el valor objetivo y los correspondientes valores de las variables.

Ahora reemplaza “max” por “min” y vuelve a resolver. Observa que la solución obtenida corresponde al caso en que se consideren únicamente valores no negativos de las variables.

Las Variables

El comportamiento habitual de LINGO es suponer que todas son no negativas.

Para modificar este comportamiento se dispone de las instrucciones:

  • @free(x) que declara la variable x como libre.
  • @gin(x) que declara la variable x como entera.
  • @bin(x) que declara la variable x como binaria, es decir, x ∈ {0,1}.
  • @bnd(i,x,s) restringe la variable a valores comprendidos entre i y s.

En el ejemplo anterior para la función objetivo de minimizar añade las instrucciones: @free(x); y @free(y);. Y vuelve a resolver. ¿Qué tipo de solución se obtiene?

Tipos de solución

Al terminar el procedimiento podemos obtener:

  • La solución óptima, “Global optimal solution found”
  • Que el problema es no acotado, “Unbounded solution”
  • Que no se ha encontrado un punto factible, “No feasible solution found”. En programación matemática lineal esto implica que el problema es infactible.

Sintaxis Avanzada

Formato de ficheros

La descripción de los problemas de optimización en LINGO se divide en bloques, algunos de los cuales puede estar ausente:

  • Bloque SETS
  • Bloque Principal
  • Bloque DATA
  • Bloque INIT

Bloque SETS

Un bloque SETS es de la forma:

 SETS:
  centro/1..5/:x;
 ENDSETS

En la línea central se define un conjunto llamado “centro” con los elementos 1..5, es decir, 1 a 5. Los elementos del conjunto pueden darse de forma explícita, por ejemplo:

 centro/alcala, madrid, barcelona/

define un conjunto con tres elementos “alcala”, “madrid”, “barcelona”.

Después de los dos puntos se definen las variables que tienen sus índices en dicho conjunto, en:

 centro/alcala, madrid, barcelona/:v

se define una variable, en realidad, un vector de variables cuyos elementos son: v(alcala), v(madrid), v(barcelona) que podrían representar los montos de venta en cada centro.

En el bloque

 SETS:
  maquina/1..3/;
  tarea/1..5/;
  asignacion(maquina,tarea):x;
 ENDSETS

se define un conjunto asignacion cuyos índices son una máquina y una tarea.

Bloque Principal

En este bloque se define el problema a resolver.

Bloque DATA

El bloque DATA tiene una estructura similar al bloque SETS:

 DATA
  w = 2, 3, 5;
 ENDDATA

En él se asocian valores a cada uno de los datos que intervienen en la formulación y que previamente han sido definidos.

Si w fuese una variable con dos índices los valores a asignar se especifican de forma consecutiva fila tras fila.

Bloque INI

Se especifican los valores iniciales para las variables.

Importación de datos

Ficheros de texto

Hoja de cálculo

Para importar datos de una hoja de cálculo de “Microsoft Excell” en el párrafo data se utiliza la instrucción

 nombre_variable = @ole("nombre_fichero",nombre_rango)

donde:

  • nombre_variable es la variable que recibe los datos.
  • nombre_fichero es el nombre del fichero del que se importan los datos.
  • nombre_rango es el nombre del rango de los datos que debe importarse, dicho nombre ha de ser previamente definido en el fichero. Para definir nombre_rango en la hoja de cálculo se seleccionan sucesivamente las opciones Insertar→Nombre→Definir y se introduce el nombre y se seleccionan las casillas correspondientes.

Modelos

Análisis de Sensibilidad

Bibliografía


QR Code
QR Code lingo (generated for current page)