Práctica de informática 1

Anuncio
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 :
•
En el menú Window, marcando Reports Window.
de la barra de herramientas.
La ventana de resultados muestra la siguiente información:
1)
18.00000:
VARIABLE
X
Y
ROW
2)
3)
4)
VALUE
3.000000
2.000000
REDUCED COST
0.000000
0.000000
SLACK OR SURPLUS
0.000000
0.000000
2.000000
NO. ITERATIONS=
DUAL PRICES
2.000000
1.000000
0.000000
1
RANGES IN WHICH THE BASIS IS UNCHANGED:
CURRENT
COEF
4.000000
3.000000
OBJ COEFFICIENT RANGES
ALLOWABLE
ALLOWABLE
INCREASE
DECREASE
2.000000
1.000000
1.000000
1.000000
2
3
CURRENT
RHS
5.000000
8.000000
RIGHTHAND SIDE RANGES
ALLOWABLE
INCREASE
2.000000
2.000000
4
1.000000
2.000000
VARIABLE
X
Y
ROW
3
ALLOWABLE
DECREASE
1.000000
2.000000
INFINITY
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
X
VALUE
3.000000
REDUCED COST
0.000000
Y
2.000000
0.000000
3) Restricciones (variables de holgura): Cada fila corresponde a una restricción:
ROW
2)
3)
4)
SLACK OR SURPLUS
0.000000
0.000000
2.000000
DUAL PRICES
2.000000
1.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:
VARIABLE
X
Y
OBJ COEFFICIENT RANGES
CURRENT
ALLOWABLE
ALLOWABLE
COEF
INCREASE
DECREASE
4.000000
2.000000
1.000000
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:
2
3
CURRENT
RHS
5.000000
8.000000
RIGHTHAND SIDE RANGES
ALLOWABLE
INCREASE
2.000000
2.000000
4
1.000000
2.000000
ROW
ALLOWABLE
DECREASE
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)
λ=0.4
-0.2x
λ=0.45
0.15x+0.25y
λ=0.5
0.5x+0.5y
λ=0.625
1.375x+1.125y
Segmento que une los
puntos (1,0) y (1,4)
(1,4,0,2,0)
Segmento que une los
puntos (1,4) y (3,2)
(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
N1
0.000000
X
2.500000
Y
0.000000
P1
0.000000
ROW
PRICES
2)
3)
4)
5)
REDUCED COST
1.000000
0.000000
0.000000
0.000000
SLACK OR SURPLUS
2.500000
3.000000
1.500000
0.000000
NO. ITERATIONS=
DUAL
0.000000
0.000000
0.000000
0.000000
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
P2
1.000000
X
1.000000
Y
2.000000
N1
0.000000
P1
0.000000
N2
0.000000
ROW
2)
3)
4)
5)
REDUCED COST
0.000000
0.000000
0.000000
0.000000
0.666667
1.000000
SLACK OR SURPLUS DUAL PRICES
2.000000
0.000000
4.000000
0.000000
0.000000
-0.333333
0.000000
-0.666667
11
6)
7)
0.000000
0.000000
NO. ITERATIONS=
1.000000
0.666667
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
Descargar