Unidad 3 IO

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 10

3.

4 Método de ramificación y acotación


El método de Branch and Bound (Ramificación y Acotamiento) aborda la
resolución de modelos de programación entera a través de la resolución de una
secuencia de modelos de programación lineal que constituirán los nodos o
subproblemas del problema entero. 
Su operatoria consiste en linealizar el modelo de Programación Entera, es decir,
resolver éste como si fuese un modelo de Programación Lineal y luego generar
cotas en caso que al menos una variable de decisión (entera) adopte un valor
fraccionario.
Ejemplo, a cerca del método de ramificación y acotación:

El paso inicial consiste en resolver este problema como si fuese un modelo


de Programación Lineal. Se utiliza un modelo en 2 variables para poder
representar los pasos del algoritmo gráficamente. El gráfico a continuación
muestra dicha resolución:

La solución óptima del problema lineal asociado (P0) es X1= 2,8 y X2= 1,6 con
valor óptimo V(P0) = 20,8. Claramente esta solución no cumple las condiciones de
integralidad para las variables de decisión por tanto es necesario generar cotas o
restricciones adicionales de modo de poder obtener soluciones enteras.

La resolución gráfica del problema nos da como solución óptima X1= 2 y X2=


2 que es una solución entera. El valor óptimo del problema 1 es V(P1) =20. Notar
que V(P1) < V(P0) lo cual es natural dado que el dominio de soluciones factibles
del P1 es menor (subconjunto) al dominio de soluciones factibles de P0.

Análogamente la resolución gráfica del problema 2 (P2) determina que X1=


3 y X2= 4/3 con V(P2) =20 según se observa a continuación:

No sería del todo necesario seguir desarrollando el algoritmo dado que si


generamos cotas para la variable X2 del P2 en ningún caso podríamos obtener
una solución entera con valor óptimo superior a 20. y por tanto podríamos concluir
que X1=2 y X2=2 es la solución óptima del problema entero. No obstante, el
siguiente diagrama muestra los pasos adicionales en caso que quisiera agregar
cotas adicionales a partir del P2.

3.5 Metodo heurístico para problemas binarios


Podemos definir una heurística como una técnica que aumenta la eficiencia de un
proceso de búsqueda, posiblemente sacrificando demandas de completitud. Las
heurísticas son como los guías de turismo: resultan adecuados en el sentido de
que generalmente suelen indicar las rutas interesantes; son malos en el sentido de
que pueden olvidar puntos de interés para ciertas personas.
Con los heurísticos los problemas pueden resolverse mejor utilizando ciertos
conocimientos previos sobre las palabras, la frecuencia de uso, la asociación de
letras para formar palabras.
El propósito de una función heurística es el de guiar el proceso de búsqueda en la
dirección más provechosa sugiriendo qué camino tomar cuando hay más de uno
disponible. Cuanto más exactamente estime la función heurística los méritos de
cada nodo del árbol (o grafo) que representa al problema, más directo será el
proceso de solución. En general, hay que hacer una ponderación entre el costo de
evaluación de una función heurística y el ahorro de tiempo de búsqueda que
proporciona la función.
En un problema de minimización, el valor de la solución obtenida por la heurística
es menor o igual que una constante multiplicada por el verdadero valor óptimo.
Esa constante se llama constante de calidad.
Si llamamos:
OPT = Valor óptimo real.
HEUR = Valor encontrado por la heurística como óptimo.
K = Constante de calidad.
Sabemos que HEUR < K · OPT
La constante de calidad nos da un límite superior en el error que podemos llegar a
tener entre la solución óptima verdadera y la encontrada por la heurística.
Si para una función heurística se puede encontrar un valor de K que permanezca
constante para todos los problemas de un mismo tipo, sin influencia del tamaño
del problema o de otros factores, diremos que esa heurística tiene garantía de
calidad.
En la siguiente tabla se muestra, según la cantidad de ciudades que tenga el
problema del viajante, la cantidad de tiempo que se demorará para encontrar en
un computador la solución óptima, en el peor de los casos:

Vamos a presentar un problema del viajante con el cual analizamos las heurísticas
K-intercambios.
Dada una solución factible (un tour), trata de mejorarla cambiando k ejes de la
solución. El caso más simple es el de 2-intercambios. Veamos el algoritmo:
1) Sea S la solución actual.
2) Sea S’ la solución obtenida al hacer algún k-intercambio. S’ es un vecino
de S.
3) Si S’ es mejor que S, definir S = S’.
4) Sino, determinar si existe otro k-intercambio que aún no fue examinado. Si
hay, ir a 1, sino terminar.
Consiste en moverse de vecino en vecino hasta encontrar una solución que no se
pueda mejorar, es decir, un óptimo local. A este tipo de heurísticas se las llama de
optimización local.
Vamos a aplicar 2-intercambio en nuestro problema del viajante. Ya que tenemos
una solución en la cual el tour óptimo tiene un costo de 16, como la del vecino más
próximo, podemos tratar de llegar a la solución de 15, que era la de inserción más
cercana.

Podemos quitar dos ejes, por ejemplo B - E y A - D, con lo cual eliminamos un


costo de 1 + 8. Así quedará la siguiente solución:
Pero nos quedó el tour incompleto. Hay que unir B con A o con D (no lo unimos
con E porque volveríamos a la solución anterior). Si lo unimos con A cerramos el
tour, así que lo tenemos que unir con D, con lo cual no nos queda otro remedio
que unir A con E. Los ejes que agregamos tienen un costo de 6 + 2. El tour
resultante tiene un costo total de 15 y es el mismo que queda cuando aplicamos
inserción más cercana.

3.6 Uso de software (WIN QSB, TORA, DS for Windows,


LINGO, Y OTROS)
WIN QSB
WINQSB es un paquete de herramientas muy versátil que permite el análisis y
resolución de modelos matemáticos, problemas administrativos, de producción,
proyectos, inventarios, transporte, entre muchos otros. Ofrece una interfaz básica
pero amigable, y es la aplicación por excelencia utilizada por profesionales
de Ingeniería Industrial y áreas administrativas para la resolución de sus modelos
de programación lineal, continua o entera.
SOLUCIÓN DE UN PROBLEMA DE PROGRAMACIÓN LINEAL CON WINQSB

El primer paso para resolver un problema de programación lineal (PL) consiste en


el modelamiento matemático, y es en esta fase en la que el profesional de
Ingeniería Industrial debe desarrollar su mayor habilidad y destreza.
Problema. Un herrero con 80 Kg. de acero y 120 Kg. de aluminio quiere hacer
bicicletas de paseo y de montaña que quiere vender, respectivamente a 20.000 y
15.000 pesos cada una para sacar el máximo beneficio. Para la de paseo
empleará 1 Kg. De acero y 3 Kg. de aluminio, y para la de montaña 2 Kg. de
ambos metales. ¿Cuántas bicicletas de paseo y de montaña deberá fabricar para
maximizar las utilidades?

Declaración de variables
x = Cantidad de bicicletas de paseo a producir
y = Cantidad de bicicletas de montaña a producir

Restricciones de capacidad
Aluminio:
x + 2y <= 80
Acero:
3x + 2y <= 120

Función Objetivo
Z max = 20000x + 15000y

Una vez demos clic en "Nuevo Problema (New Problem)" se abrirá un menú
emergente que nos permitirá ingresar los parámetros básicos del problema:
Una vez se registren los parámetros y al dar clic en el botón OK, se mostrará
la siguiente ventana, en aras de utilizar las mismas variables que en el modelo,
mostraremos el método de renombrar las variables:

Desde el menú EDIT, también podremos modificar el nombre de las restricciones,


tal como se aprecia en la siguiente imagen:

La interfaz para ingresar los valores que controlan el problema es la siguiente:


En ella hemos registrado los datos que controlan nuestro problema de estudio. El
siguiente paso, consiste en resolver el problema, para ello damos clic en el botón
"Solve and Analize": Este comando resuelve el problema. Si se especifica alguna
variable como un entero o binario, el programa utilizará automáticamente el
método de Branch and Bound (Rama y Cotas) para resolver el problema.
Esta opción mostrará automáticamente un tabulado resumen de la solución si el
problema tiene una solución óptima, mostrará la inviabilidad de análisis si el
problema no es factible, o mostrará si el análisis no acotación si el problema no
está acotado en función objetivo o valores de las variables.

Este mensaje nos indica que el problema ha sido resuelto, y que existe una
solución óptima que ha sido encontrada. Al dar clic en Aceptar, nos llevará al
cuadro resumen de la solución:
Interpretar cada uno de los valores del cuadro solución, es cuan o más importante
que obtener la solución óptima, dado que de dicha interpretación se logra extraer
un buen análisis de sensibilidad.

Bibliografía

https://www.ingenieriaindustrialonline.com/herramientas-para-el-ingeniero-
industrial/investigaci%C3%B3n-de-operaciones/programaci%C3%B3n-lineal-en-
winqsb/
http://materias.fi.uba.ar/7114/Docs/ApunteHeuristicas.pdf

http://www.gestiondeoperaciones.net/programacion-entera/ejemplo-del-algoritmo-
de-branch-and-bound-ramificacion-y-acotamiento/

También podría gustarte