Sunteți pe pagina 1din 7

MANUAL PARA USO DE LINDO 6.

1. La funcin objetivo no debera contener ninguna restriccin. Por


ejemplo, no se puede ingresar Max 2X1 + 5.

2. Todas las variables deben aparecer en el lado izquierdo de las


restricciones, mientras que los valores numricos deben aparecer en
el lado derecho de las restricciones.

3. Se presupone que todas las variables son no negativas. No ingrese las


condiciones de no negatividad. Por defecto, LINDO ya considera la
no negatividad de las variables.

4. LINDO slo acepta cinco operadores: +, - , <=, >=, =. As pues, en la


formulacin del problema no podr usarse ningn otro operador
( * , / , ^ , etc.) ni tampoco parntesis asociativos.

5. LINDO interpreta las desigualdades del tipo <= y >= como


desigualdades estrictas (del tipo < y >)

6. Para separar los dgitos decimales de un numero se usa el punto . ,


por ejemplo en LINDO no se escribe 1,5 sino 1.5.

7. Siempre hemos de finalizar la formulacin del problema aadiendo el


comando END.

Se puede aadir comentarios personales sin ms que anteponerles el


signo de admiracin !
MAX 50X1 + 30 X2

SUBJECT TO

2X1 + X2 <40 ! restriccin de mano de obra


X1 + 2X2 < 50 ! restriccin de materiales

END

Guarde el archivo con cualquier nombre y asegrese que quede con la


extensin LTX
El siguiente paso es pedirle a LINDO que resuelva el problema. Para ello
es suficiente con hacer clic sobre el botn Solve (el que tiene forma de
diana), o bien seleccionar esta opcin en la barra de mens.

Nota: Si seleccionamos la opcin SOLVE desde la barra de mens:

Si tras resolver un problema hacemos alguna modificacin en la


formulacin del mismo, es necesario volver a compilar el modelo
(Solve>Compile) antes de volver a usar Solve.

Si el modelo ha podido ser compilado, LINDO comenzar la resolucin


efectiva del problema, mostrando la ventana Status, donde se da
informacin sobre el estado del proceso resolutivo:

A continuacin se describen algunos de los campos que aparecen en la


ventana anterior:

Status: ofrece el estado de la solucin actual (ptima, factible, no


factible, o no acotada).
Iterations: nmero 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 funcin objetivo.
Elapsed time: tiempo transcurrido desde el inicio de la resolucin.

Cuando la resolucin haya finalizado, el programa nos preguntar si


queremos realizar un anlisis de sensibilidad. De momento elegiremos la
opcin NO.

Cerramos la ventana Status:

Aparecer una nueva ventana en la pantalla, la Reports Window (hay


que hacer clic en la ventana debajo de la ventana principal del LINDO)
La informacin bsica que nos proporciona esta ventana para nuestro
ejemplo es que

1. Se han necesitado dos iteraciones para llegar a la solucin ptima `LP


OPTIMUM FOUND AT STEP 2' (OPTIMO DE PL ENCONTRADO EN EL PASO
2) indica que se encontr la solucin ptima en la iteracin 2. LINDO
utiliza el mtodo de optimizacin simplex.

Muchas veces, aparecer un mensaje muy confuso: "LP OPTIMUM FOUND AT STEP 0"
(OPTIMO DE PL ENCONTRADO EN EL PASO 0). Cmo puede ser paso 0?
Lindo lleva un registro en su memoria de todas las actividades previas realizadas antes
de resolver cualquier problema que usted ingrese. Por lo tanto, no muestra
exactamente cuntas iteraciones fueron necesarias para resolver el problema en
cuestin.

Para saber cuntas iteraciones lleva realmente resolver un problema en particular,


debe salir de Lindo y luego reingresar, volver a escribir y a presentar el problema. De
esta manera aparecer la cantidad exacta de vrtices (excluyendo el origen) visitados
para llegar a la solucin ptima (si es que existe) en forma correcta.

2. Inmediatamente debajo aparece el ptimo del valor de la funcin


objetivo.
Este significa que los ingresos netos ptimos (solucin optima del LP)
son 1100 euros.
Despus sigue la solucin del problema, es decir la estrategia para fijar
las variables de decisin a fin de lograr el valor ptimo antes
mencionado. Esto aparece con una columna de variables y una columna
de valores.

Programacin lineal general con enteros


La Programacin Lineal estndar asume que las variables de decisin
son continuas. Sin embargo, en muchas aplicaciones, los valores
fraccionarios pueden no tener sentido, por ejemplo 9/2 trabajadores. Los
problemas de programacin lineal con enteros son ms difciles de
resolver que los de programacin lineal continua. Por qu no resolver
todos los problemas como problemas de programacin lineal estndar y
redondear las respuestas a los enteros ms cercanos?
Desafortunadamente, esto genera dos problemas:
1
La solucin redondeada puede no ser factible.

El redondeo puede no dar una solucin ptima.

Por lo tanto, el redondeo de resultados de programacin lineal puede


proporcionar respuestas razonables, pero, para garantizar soluciones
ptimas, debemos aplicar programacin lineal con enteros. Por defecto,
el software LINDO de Programacin Lineal asume que todas las variables
son continuas. Para problemas de Programacin Lineal Entera,
deberemos utilizar la sentencia de entero general, GIN. GIN, seguida
de un nombre de variable, restringe el valor de la variable a los enteros
no negativos (0, 1, 2,). El siguiente ejemplo ilustra el uso de la
sentencia GIN.

EJEMPLO

Max 11X1 + 10X2


St
2X1 + X2 <= 12
X1 - 3X2 >= 1
END

GIN X1
GIN X2

La salida despus de siete iteraciones es:

VALOR DE LA FUNCION OBJETIVO


1) 66.00000

VARIABLE VALOR COSTE REDUCIDO


X1 6.000000 -11.000000
X2 0.000000 -10.000000

Si no hubiramos especificado X1

Si no hubiramos especificado X1 y X2 como enteros generales en este


modelo, LINDO no habra hallado la solucin ptima de X1 = 6 y X2 = 0.
En cambio, LINDO habra considerado a X1 y X2 como continuos y habra
llegado a la solucin X1 = 5.29 y X2 = 1.43.

Obsrvese, asimismo, que el simple redondeo de la solucin continua a


los valores enteros ms prximos no da la solucin ptima en este
ejemplo. En general, las soluciones continuas redondeadas pueden no
ser las ptimas y, en el peor de los casos, no son factibles. Sobre esta
base, uno se puede imaginar que puede requerir mucho tiempo obtener
la solucin ptima en un modelo con muchas variables de enteros. En
general, esto es as, y convendr utilizar la caracterstica GIN slo
cuando es absolutamente necesario.

Como ltimo comentario, el comando GIN tambin acepta un argumento


de valor entero en lugar de un nombre de variable. El nmero
corresponde al nmero de variables que uno desea que sean enteros
generales. Estas variables deben aparecer primero en la formulacin. De
tal modo, en este ejemplo sencillo, podramos haber reemplazado las
dos sentencias GIN por la nica sentencia GIN 2.

Programacin entera binaria


Con el comando INT en LINDO se restringe la variable a 0 1. A estas
variables con frecuencia se las llama variables binarias. En muchas
aplicaciones, las variables binarias pueden ser muy tiles en situaciones
de todo o nada. En los ejemplos podemos considerar: asumir un coste
fijo, construir una nueva planta o comprar un nivel mnimo de algn
recurso para recibir un descuento por cantidad, etc.
La salida que proporciona LINDO da la solucin ptima y el valor ptimo
despus de ocho iteraciones utilizando el mtodo "Branch-and-Bound"
(Ramificar y Acotar).
Observe que, en lugar de repetir INT cuatro veces, se puede emplear
INT 4. Las primeras cuatro variables aparecieron en la funcin objetivo.

Ejemplo

Max 11X1 + 9X2 + 8X3 + 15X4


st
4X1 + 3X2 + 2X3 + 5X4 <= 8
END

INT X1
INT X2
INT X3
INT X4

VALOR DE LA FUNCION OBJETIVO


1) 24.00000

VARIABLE VALOR COSTE REDUCIDO


X1 0.000000 -11.000000
X2 1.000000 -9.000000
X3 0.000000 -8.000000
X4 1.000000 -15.000000

S-ar putea să vă placă și