Ejercicios de SOLVER

Anuncio
Ingeniería de Telecomunicación
Planificación Avanzada de Redes de
Comunicaciones
Curso 2006-2007
Pablo Pavón Mariño
Práctica 1. Introducción a la optimización
mediante herramienta MS Excel Solver (I)
Objetivos
El objetivo de esta práctica es introducir al alumno en la utilización de la
herramienta Solver, ejecutada sobre la aplicación Microsoft Excel, para resolver
problemas de programación o optimización matemática finita.
Minimizar/maximizar f(x1,...,xn)
Sujeto a las restricciones:
g1(x1,...,xn)≥0
...
gm(x1,...,xn)≥0
h1(x1,...,xn) ≤0
...
hm’(x1,...,xn)≤0
s1(x1,...,xn)= 0
...
sp(x1,...,xn)= 0
donde todas, algunas o ninguna de las variables de
decisión xi pueden tener la restricción de ser enteras.
La resolución de cada problema de optimización, requiere lo siguiente:
-
-
Planteamiento del problema sobre la página Excel
- Variables de decisión
- Función objetivo
- Restricciones
Especificación de la situación de estos parámetros dentro de la página a través
del cuadro de diálogo Parámetros de Solver (a la que se accede a través de
Herramientas→Solver).
-
Lanzamiento del algoritmo de obtención de la solución.
Análisis de los resultados obtenidos.
Documentación empleada
La información necesaria para resolver esta práctica se encuentra en:
-
Página web http://www.solver.com (se recomienda el tutorial ahí presente).
Ayuda de la aplicación Microsoft Excel.
Instrucciones básicas presentes en este enunciado.
1. Instalación de la herramienta Excel Solver
A continuación se describen las instrucciones para la instalación de la herramienta
de optimización seleccionada:
1. Inicie Excel.
2. Seleccione Herramientas→Complementos.
3. Marque en la lista de “Complementos Disponibles” aquel que aparezca indicado
como Solver.
4. Seleccione “Aceptar”.
A partir de ese momento la herramienta Solver debe estar disponible en el menú
Herramientas.
2. Significado de los menús Solver
La ventana Parámetros del Solver se utiliza para describir el problema de
optimización.
-
Celda objetivo: debe indicar la celda donde se encuentra la fórmula que calcula
la función objetivo a maximizar o minimizar.
-
-
Valor de la celda objetivo: debe especificarse si la función objetivo debe ser
minimizada, o maximizada. Si la casilla Valores de se encuentra activada, la
solución buscada intentará que la función objetivo sea igual al valor ahí
indicado.
- Cambiando las celdas: contiene la ubicación de las variables de decisión del
problema.
Sujeto a las siguientes restricciones: en este cuadro se seleccionan las celdas
que contienen las funciones restricción. Cada restricción se añade mediante el
botón Agregar..., lanzándose el cuadro de diálogo que se muestra a
continuación.
Referencia de celda: Especifica la ubicación de la celda con la fórmula
correspondiente a la restricción que se va a añadir.
- Tipo de restricción: Se pueden añadir restricciones del tipo ≤, ≥, =, int (el
contenido de la celda debe ser un entero), bin (el contenido de la celda
debe ser entero 0 ó 1).
- Restricción: Para el caso de restricción tipo ≤, ≥, =, debe especificarse
aquí un valor numérico o una referencia a una celda con un valor
constante (no una función).
Nota: Por defecto, las variables de decisión no tienen la restricción de ser
no-negativas. Esta condición debe añadirse en la ventana de Opciones si es
necesaria.
-
-
Restablecer todo: borra el problema de optimización planteado, volviendo las
variables de decisión a sus valores iniciales.
Estimar: No será utilizada.
Opciones: Permite abrir un cuadro de diálogo de configuración de opciones
generales de la optimización:
-
-
-
-
-
-
-
-
Tiempo: Número de segundos antes de que Solver se detenga.
Obviamente, Solver se detendrá antes en el caso de haber llegado a la
solución óptima.
Iteraciones: Ídem para el número de iteraciones del algoritmo de
resolución del problema de optimización.
Precisión: Exactitud en los cálculos numéricos del algoritmo Solver. Por
ejemplo, marca lo cerca que debe estar de cumplirse una restricción de
igualdad para que se considere igual al resultado del lado izquierdo.
Tolerancia: Se especifica para programación entera. Indica un porcentaje
dentro del cual se garantiza la optimalidad de la solución. Si se desea
llegar a la solución óptima exacta, debe ponerse el valor cero en este
campo, aunque ello puede suponer un notable incremento en el tiempo
de ejecución.
Convergencia.
Adoptar modelo lineal: En el caso de que el problema de optimización a
resolver sea lineal (entero, o no), es extremadamente recomendable el
marcar esta casilla, ya que provoca que se empleen algoritmos
optimización más eficientes que aprovechan la linealidad del problema.
Nota: En ocasiones, sobre problemas lineales en los que se activa esta
opción, Solver lanza una alarma indicando que no se cumplen las
condiciones de linealidad (a pesar de que sí se cumplen). Esto es debido
a una comprobación numérica que Solver realiza, que puede
proporcionar resultados erróneos. Cambiando el valor del campo
precisión de 0.000001 a 0.0001 se puede eliminar este falso error.
Asumir no negativos: En el caso de que las variables de decisión tengan
todas la restricción de ser no negativas, el marcar esta casilla hace
innecesario y redundante el añadir las n restricciones xi≥0.
Usar escala automática: En el caso de que varias variables y datos del
problema tengan escalas muy diferentes, el marcar esta casilla realiza un
ajuste en la misma.
Mostrar resultado de iteraciones: Marcar esta casilla en el caso de que se
desee que Excel muestre la evolución de las variables de decisión en
cada una de las iteraciones del algoritmo, donde se va aproximando
hacia el óptimo.
Estimación, Derivadas, Hallar por: Los valores de estos campos afectan
al tipo de algoritmo que se empleará para la resolución de los problemas
de programación no lineal.
3. Ejemplo de problema de programación lineal: problema
de las dietas
Este problema fue publicado como problema de programación lineal y resuelto por
el método del simplex por el Stigler (1945). El problema original consistía en
determinar las cantidades de 77 alimentos que debían ser adquiridos minimizando
el coste total, con la restricción de que debían satisfacer una determinadas
necesidades vitales.
En esta sección, el alumno deberá encontrar la solución a un problema de
optimización semejante, con menor número de variables.
Enunciado
Un granjero especializado en la explotación de ganado, debe decidir qué piensos ha
de comprar para la alimentación de sus animales. El catálogo de piensos
disponibles es corto, ya que únicamente puede seleccionar 4 tipos de piensos, A, B,
C, D.
Cada uno de los piensos que puede adquirir tiene dos nutrientes M y N.
Las conversaciones con el veterinario de la granja le indican que las necesidades de
alimentación, medidas en kg de nutrientes que deben ingerir la suma de sus
animales al día, es de 5500 kg de nutriente M y 8700 kg de nutriente N.
Las necesidades de alimentación deben ser cubiertas a través de las compras
diarias de piensos que deben realizarse. Para ello el granjero se basa en datos del
catálogo de cada pienso:
Pienso
Pienso
Pienso
Pienso
A
B
C
D
kg de nutriente M kg de nutriente N
por tonelada de
por tonelada de
pienso
pienso
200
300
150
270
100
140
45
90
Coste por
tonelada de
pienso
90
81
40
24
Plantee y resuelva el problema de optimización con la herramienta Solver, que
responda a la pregunta:
¿Cuántas toneladas de cada pienso debe comprar el granjero al día de tal manera
que se satisfagan las necesidades de alimentación, y el coste sea mínimo?
Respuesta
1) Escriba el planteamiento como problema de optimización
2) Escriba la solución óptima alcanzada:
-
Toneladas de pienso de A.
Toneladas de pienso de B.
Toneladas de pienso de C.
Toneladas de pienso de D.
Coste total de la compra.
4. Ejemplo de problema de programación lineal entera
En el problema anterior, el granjero no tenía ninguna restricción en cuanto a la
compra de un número fraccionado de toneladas. Esto no suele ser lo habitual.
Modifique el problema anterior adecuadamente, de manera que el granjero
únicamente tenga la posibilidad de hacer pedidos por un múltiplo entero de una
cantidad, dependiente de cada pienso (marcada por su departamento de ventas).
Pienso
Pienso
Pienso
Pienso
A: Pedidos múltiplo de 1 tonelada.
B: Pedidos múltiplo de 2 toneladas.
C: Pedidos múltiplo de 5 toneladas.
D: Pedidos múltiplo de 2,8 toneladas.
¿Cuántas toneladas de cada pienso debe comprar ahora el granjero al día de tal
manera que se satisfagan las necesidades de alimentación, y el coste sea mínimo?
1) Escriba el planteamiento como problema de optimización
2) Escriba la solución óptima alcanzada:
-
Toneladas de pienso de A.
Toneladas de pienso de B.
Toneladas de pienso de C.
Toneladas de pienso de D.
Coste total de la compra.
5. Ejemplo de problema de programación no lineal
Deseamos colocar un almacén en un punto geográfico de coordenadas (x,y), tal
que el coste de trasladar la mercancía del almacén hacia los destinos sea mínimo.
Los destinos de las mercancías son:
-
A (7,2).
B (3,8).
C (15,4).
D (1,13).
Las mercancías a transportar son:
-
Destino
Destino
Destino
Destino
A: 9 unidades.
B: 3 unidades.
C: 12 unidades.
D: 5 unidades.
El coste de transporte de una unidad de mercancía es una función lineal
C (d,u) = k·d·u,
d=distancia almacén-destino
u=unidades a transportar
Plantear el problema de programación no lineal subyacente, y resolverlo mediante
la herramienta Solver. Mostrar en una gráfica los datos y la solución del problema.
Plantear y resolver el mismo problema para el caso de que se obligue a que el
almacén se encuentre a una distancia del punto (5,5) menor a 3 unidades. Mostrar
en una gráfica los datos, las restricciones y la solución del problema.
Descargar