Está en la página 1de 12

FACULTAD DE CIENCIAS ECONÓMICAS Y EMPRESARIALES

PROGRAMACIÓN MATEMÁTICA

Práctica de informática del programa LINDO


Curso 2004-05

LINDO 6.1 es un programa de entorno Windows, que sirve para resolver problemas de
programación lineal.

1º) Introducir un problema:


El formato que hemos de seguir para introducir el problema es muy simple, tal y como
vemos en el siguiente ejemplo:

Max 4x+3y
subject to
x + y <=5
2x+y<=8
x>=1
• El programa asume las condiciones de no negatividad de las variables del problema.
• Si el criterio de optimización es de mínimo, sustituimos “Max” por “Min” en el
problema. Además, podemos sustituir “subject to” por “st”.
• Podemos asignar un número o un comentario para cada restricción de la siguiente
forma:

Max 4x+3y
st
R1)x + y <=5
R2)2x+y<=8
x>=1
• Podemos introducir comentarios aclaratorios en algunas líneas del problema, sin más
que comenzar la línea con el símbolo “!”. Por ejemplo:

! Problema del beneficio


Max 4x+3y
subject to
x + y <=5
2x+y<=8
x>=1

1
El símbolo “!” nos puede servir también para que LINDO no tenga en cuenta una línea.
Por ejemplo, si deseamos resolver el problema anterior sin la restricción x>=1, no es necesario
borrarla, basta con incluir el símbolo “!” delante de ella:

! Problema del beneficio


Max 4x+3y
subject to
x + y <=5
2x+y<=8
!x>=1
• Los nombres de las variables del problema pueden ser de hasta 8 caracteres.

2º) Resolver un problema:

Una vez introducido un problema, lo resolveremos de la siguiente forma:


• Para resolver el problema presionaremos el botón

de la barra de herramientas, o bien, a través del teclado, presionamos Ctrl+S.


Aparecerán en pantalla dos ventanas, una que resume de la resolución del problema (nº
de iteraciones realizadas para resolver, valor de la función objetivo, etc.) y otra en la
que nos preguntan si deseamos realizar análisis de sensibilidad del problema:

2
Tras responder a la pregunta correspondiente al análisis de sensibilidad y cerrar la ventana
Lindo Solver Status, Lindo muestra la solución del problema en una ventana nueva a la que
denomina Reports Window (Ventana de Resultados), y a la que podemos acceder de distintas
formas:

• Presionando el botón : de la barra de herramientas.


• En el menú Window, marcando Reports Window.

La ventana de resultados muestra la siguiente información:


1) 18.00000:

VARIABLE VALUE REDUCED COST


X 3.000000 0.000000
Y 2.000000 0.000000

ROW SLACK OR SURPLUS DUAL PRICES


2) 0.000000 2.000000
3) 0.000000 1.000000
4) 2.000000 0.000000

NO. ITERATIONS= 1

RANGES IN WHICH THE BASIS IS UNCHANGED:

OBJ COEFFICIENT RANGES


VARIABLE CURRENT ALLOWABLE ALLOWABLE
COEF INCREASE DECREASE
X 4.000000 2.000000 1.000000
Y 3.000000 1.000000 1.000000

RIGHTHAND SIDE RANGES


ROW CURRENT ALLOWABLE ALLOWABLE
RHS INCREASE DECREASE
2 5.000000 2.000000 1.000000
3 8.000000 2.000000 2.000000
4 1.000000 2.000000 INFINITY

3
Interpretación de estos resultados:

1) Valor de la función objetivo en el óptimo

1) 18.00000:

2) Punto óptimo: (x= 3, y = 2).

REDUCED COST es el zj – cj de cada variable en la tabla del simplex.

VARIABLE VALUE REDUCED COST


X 3.000000 0.000000
Y 2.000000 0.000000

3) Restricciones (variables de holgura): Cada fila corresponde a una restricción:

ROW SLACK OR SURPLUS DUAL PRICES


2) 0.000000 2.000000
3) 0.000000 1.000000
4) 2.000000 0.000000

SLACK OR SURPLUS: Mide lo que queda del recurso en la restricción y, por

tanto, es el valor de la variable de holgura asociada a esa restricción.

DUAL PRICES: Precio sombra o valor de la variable dual. Es, por tanto, el zj de la

variable de holgura correspondiente a esa restricción. (En este caso, los cj = 0,

luego también se interpretan como zj – cj).

Por tanto, en nuestro problema las soluciones de las variables de holgura y los zj

de las mismas son:

x3 = 0, x4 = 0 y x5 = 2

z3 = 2, z4 = 1 y z5 = 0

4
4) Análisis de sensibilidad:
RANGES IN WHICH THE BASIS IS UNCHANGED:

4a) Análisis de sensibilidad de costes:


OBJ COEFFICIENT RANGES
VARIABLE CURRENT ALLOWABLE ALLOWABLE
COEF INCREASE DECREASE
X 4.000000 2.000000 1.000000
Y 3.000000 1.000000 1.000000

• CURRENT COEF: Valor de coeficiente de la variable en la función objetivo.

• ALLOWABLE INCREASE: Cantidad en la que puedo incrementar el coeficiente

sin que cambie la base.

• ALLOWABLE DECREASE: Cantidad en la que puedo reducir el coeficiente sin

que cambie la base.

Los intervalos de sensibilidad para los costes del problema son:

C1 ∈ [3, 6] y C2 ∈ [2, 4]

4b) Análisis de sensibilidad de recursos:


RIGHTHAND SIDE RANGES
ROW CURRENT ALLOWABLE ALLOWABLE
RHS INCREASE DECREASE
2 5.000000 2.000000 1.000000
3 8.000000 2.000000 2.000000
4 1.000000 2.000000 INFINITY

• CURRENT RHS: Valor del recurso en la restricción.

• ALLOWABLE INCREASE: Cantidad en la que puedo incrementar el coeficiente

sin que cambie la base.

• ALLOWABLE DECREASE: Cantidad en la que puedo reducir el coeficiente sin

que cambie la base.

Los intervalos de sensibilidad para los recursos del problema son:

5
b1 ∈ [4, 7], b2 ∈ [6, 10], b3 ∈ (-∞, 3]

3º) Notas:
1. Si, una vez resuelto el problema queremos modificarlo, volvemos a la ventana en la
que tenemos el problema y realizamos los cambios correspondientes. Si, seguidamente
lo resolvemos, la solución aparecerá en la ventana de resultados (Reports Window)
seguida de la anterior.

2. Si el problema resuelto tiene infinitas soluciones, el programa no “avisa” de ello y, por


tanto, para detectarlo debemos revisar las columnas DUAL PRICE Y REDUCED
COST de la solución, comprobando que las variables no básicas (las que son nulas si
la solución es no degenerada) tienen un zj-cj nulo.

3. Si el problema que resolvemos no posee soluciones factibles (conjunto de


oportunidades vacío), aparece en pantalla la siguiente ventana:

4. Si el problema que resolvemos posee solución ilimitada, aparecerá en pantalla la


siguiente ventana:

6
5. Si queremos guardar el problema o la ventana de resultados, lo haremos con los
comandos Archivo, Guardar, como en cualquier programa de entorno Window. El
nombre del archivo debe tener, como mucho, 8 caracteres. Los archivos Lindo tienen
la extensión ltx (*.ltx).

4º) Variables:

• FREE (Nombre de la Variable): Elimina las cotas de la variable. Con ello elimina la
condición de no negatividad de la variable que el programa asume inicialmente.
• GIN (Nombre de la Variable): La variable toma valores enteros y no negativos.
• INT (Nombre de la Variable): La variable es binaria, sus valores quedan restringidos a 0 ó
1.

5º) Descripción de algunos comandos de utilidad para utilizar el programa.

• Menú FILE:

o New :Crea un nuevo fichero de LINDO.

o Open :Abre un fichero ya existente de LINDO.

o View: Abre un fichero modelo de LINDO.


o Save: Graba el fichero activo (correspondiente a un problema o a resultados) en

disco. . El nombre del archivo debe tener, como mucho, 8 caracteres. Los
archivos Lindo tienen la extensión ltx (*.ltx).
o Save As: Graba el fichero activo (correspondiente a un problema o a resultados) en
un lugar distinto o con un nombre distinto.
o Close: Cierra la ventana activa.

o Print: Imprime el contenido de la ventana activa.


o Exit: Salir de LINDO

• Menú EDIT:

o Undo. Deshace la última acción.

o Cut: Corta el texto seleccionado.

o Copy: Copia el texto seleccionado.

7
o Paste: Pega el texto anteriormente cortado o copiado.
o Clear: Borra el texto seleccionado.
o Find/Replace: Busca una palabra, frase,... en la ventana activa y, opcionalmente la

reemplaza por otra.

o Options: Configurar LINDO.

o Go to Line: Ir a una línea de la ventana activa.


o Paste Symbol: Muestra la lista de símbolos reservados en el programa, las y los

nombre de las variables del problema.


o Select All: Selecciona todo el texto de la ventana activa.

o Clear All: Borra todo el texto de la ventana activa.


o Choose New Font: Cambia la fuente (tipo de letra) en la ventana activa.

• Menú SOLVE:

o Solve: Resuelve el problema de la ventana activa.

o Compile Model: Compila el problema de la ventana activa. .

• Menú REPORTS:

o Solution: Muestra, en la ventana de resultados, la solución óptima para el problema de


la ventana activa.
o Range: Muestra, en la ventana de resultados, el análisis de sensibilidad de la solución
óptima para el problema de la ventana activa.
o Parametrics: Realiza un análisis paramétrico de los recursos de las restricciones. El
resultado lo muestra mediante una gráfica que indica cómo cambia la función objetivo
ante el cambio en el recurso.
o Tableau: Muestra la tabla óptima del simplex de problema. La primera fila de esta tabla
es la de zj –cj, que nosotros colocamos en último lugar.
o Formulation: Muestra en la ventana de resultados el problema que estamos resolviendo.

8
• Menú WINDOWS:

o Open Status Window: Abre la ventana de resolución (Solver Status Window), que
puede ser utilizada para seguir el proceso de resolución de un problema.

o Send To Back: Cambia la ventana activa actual por la siguiente.


o Cascade: Coloca todas las ventanas abiertas en cascada.

o Tile: Coloca todas las ventanas abiertas en forma de “mosaico”.

o Close All: Cierra todas las ventanas abiertas.

9
PROBLEMA DEL BENEFICIO Y LA CONTAMINACIÓN:

1) MÉTODO DE LAS PONDERACIONES


Max λ (4x +3y) +(1-λ)(-3x-2y)
st
x+y<=5
2x+y<=8
x>=1
Funciones objetivo ponderadas:
Vector de Pesos λ (4x +3y) +(1-λ)(-3x-2y) Solución
λ=0 -3x-2y (1, 0, 4, 6, 0)
λ = 0.125 -2.125x-1.375y (1, 0, 4, 6, 0)
λ=0.25 -1.25x-0.75y (1, 0, 4, 6, 0)
λ=0.375 -0.375x-0.125y (1, 0, 4, 6, 0)
Segmento que une los
λ=0.4 -0.2x
puntos (1,0) y (1,4)
λ=0.45 0.15x+0.25y (1,4,0,2,0)
Segmento que une los
λ=0.5 0.5x+0.5y
puntos (1,4) y (3,2)
λ=0.625 1.375x+1.125y (3,2,0,0,2)

2) PROGRAMACIÓN POR METAS LEXICOGRÁFICA

Nivel 1: Introducir el problema:


Min n1
st
x+y<=5
2x+y<=8
x>=1
4x+3y+n1-p1=10

Solución:
LP OPTIMUM FOUND AT STEP 2

OBJECTIVE FUNCTION VALUE

1) 0.0000000E+00

10
VARIABLE VALUE REDUCED COST
N1 0.000000 1.000000
X 2.500000 0.000000
Y 0.000000 0.000000
P1 0.000000 0.000000

ROW SLACK OR SURPLUS DUAL


PRICES
2) 2.500000 0.000000
3) 3.000000 0.000000
4) 1.500000 0.000000
5) 0.000000 0.000000

NO. ITERATIONS= 2

Puesto que n1=0, pasamos al nivel 2

Nivel 2:
Min p2
st
x+y<=5
2x+y<=8
x>=1
4x+3y+n1-p1=10
3x+2y+n2-p2=6
n1=0
Solución:

LP OPTIMUM FOUND AT STEP 2

OBJECTIVE FUNCTION VALUE

1) 1.000000

VARIABLE VALUE REDUCED COST


P2 1.000000 0.000000
X 1.000000 0.000000
Y 2.000000 0.000000
N1 0.000000 0.000000
P1 0.000000 0.666667
N2 0.000000 1.000000

ROW SLACK OR SURPLUS DUAL PRICES


2) 2.000000 0.000000
3) 4.000000 0.000000
4) 0.000000 -0.333333
5) 0.000000 -0.666667

11
6) 0.000000 1.000000
7) 0.000000 0.666667

NO. ITERATIONS= 2

Luego, la solución del problema es x = 1, y = 2, n1 = 0, p2 = 1. Puesto que la variable no


deseada p2 es distinta de 0, la solución obtenida no es satisfactoria.

12

También podría gustarte