miércoles, 30 de octubre de 2019
martes, 29 de octubre de 2019
El algoritmo de Dijkstra
El algoritmo de Dijkstra
El algoritmo de Dijkstra te permite calcular la ruta más corta entre un nodo (tú eliges cuál) y todos los demás nodos en el grafo. Encontrarás una descripción del algoritmo al final de esta página, pero ¡vamos a estudiarlo con un ejemplo explicado! Calcularemos la distancia más corta entre el nodo C y los demás nodos del grafo:
Durante la ejecución del algoritmo, iremos marcando cada nodo con su distancia mínima al nodo C (nuestro nodo elegido). Para el nodo C, esta distancia es 0. Para el resto de nodos, como todavía no conocemos esa distancia mínima, empieza siendo infinita (∞):
También tendremos un nodo actual. Inicialmente, el nodo actual será C (nuestro nodo elegido). En la imagen, marcaremos el nodo actual con un punto rojo.
Ahora, revisaremos los vecinos de nuestro nodo actual (A, B y D) en cualquier orden. Empecemos con B. Sumamos la mínima distancia del nodo actual (en este caso, 0) con el peso de la arista que conecta al nodo actual con B (en este caso, 7), y obtenemos 0 + 7 = 7. Comparamos ese valor con la mínima distancia de B (infinito); el valor más pequeño es el que queda como la distancia mínima de B (en este caso, 7 es menos que infinito):
Bien. Ahora revisaremos al vecino A. Sumamos 0 (la distancia mínima de C, nuestro nodo actual) con 1 (el peso de la arista que conecta nuestro nodo actual con A) para obtener 1. Comparamos ese 1 con la mínima distancia de A (infinito) y dejamos el menor valor:
OK. Repetimos el procedimiento para D:
Genial. Hemos revisado todos los vecinos de C. Por ello, lo marcamos como visitado. Representemos a los nodos visitados con una marca de verificación verde:
Ahora debemos seleccionar un nuevo nodo actual. Ese nodo debe ser el nodo no visitado con la menor distancia mínima, es decir, el nodo con el menor número y sin marca de verificación verde. En este caso, ese nodo es A. Vamos a marcarlo con el punto rojo:
Ahora, repetimos el algoritmo. Revisamos los vecinos de nuestro nodo actual, ignorando los visitados. Esto significa que solo revisaremos B.
Para B, sumamos 1 (la distancia mínima de A, nuestro nodo actual) con 3 (el peso de la arista conectando a A con B) para obtener 4. Comparamos ese 4 con la distancia mínima de B (7) y dejamos el menor valor: 4.
Después, marcamos A como visitado y elegimos un nuevo nodo: D, que es el nodo no visitado con la menor distancia mínima.
Repetimos el algoritmo de nuevo. Esta vez, revisamos B y E.
Para B, obtenemos 2 + 5 = 7. Comparamos ese valor con la distancia mínima de B (4) y dejamos el menor valor (4). Para E, obtenemos 2 + 7 = 9, lo comparamos con la distancia mínima de E (infinito) y dejamos el valor menor (9).
Marcamos D como visitado y establecemos nuestro nodo actual en B.
Casi terminamos. Sólo debemos verificar E. 4 + 1 = 5, que es menos que la distancia mínima de E (9), así que dejamos el 5. Marcamos B como visitado y establecemos E como el nodo actual.
E no tiene vecinos no visitados, así que no verificamos nada. Lo marcamos como visitado.
Como no hay nodos no visitados, ¡terminamos! La distancia mínima de cada nodo ahora representa la mínima distancia entre ese nodo y el nodo C (el nodo que elegimos como nodo inicial).
Aquí está una descripción del algoritmo:
- Marca el nodo inicial que elegiste con una distancia actual de 0 y el resto con infinito.
- Establece el nodo no visitado con la menor distancia actual como el nodo actual
A.
- Para cada vecino
V
de tu nodo actualA
: suma la distancia actual deA
con el peso de la arista que conecta aA
conV
. Si el resultado es menor que la distancia actual deV
, establécese como la nueva distancia actual deV
. - Marca el nodo actual
A
como visitado. - Si hay nodos no visitados, ve al paso 2.
miércoles, 23 de octubre de 2019
domingo, 13 de octubre de 2019
miércoles, 9 de octubre de 2019
Método de Transporte de Vogel
Método de Aproximación de Vogel (Algoritmo de Transporte en Programación Lineal)
El Método de Aproximación de Vogel es una versión mejorada del Método del Costo Mínimo y el Método de la Esquina Noroeste que en general produce mejores soluciones básicas factibles de inicio, entendiendo por ello a soluciones básicas factibles que reportan un menor valor en la función objetivo (de minimización) de un Problema de Transporte balanceado (suma de la oferta = suma de la demanda).
Los pasos que requiere la aplicación del Método de Aproximación de Vogel son los siguientes:
Paso 1: Determinar para cada fila (columna) una medida de penalización restando el elemento de costo unitario mínimo en la fila (columna) del elemento con costo unitario siguiente al mínimo de la misma fila (columna).
Paso 2: Identificar la fila o columna con la mayor penalización. Romper los empates (de existir) de forma arbitraria. Asignar todo lo posible a la variable que tenga el mínimo costo unitario de la fila o columna seleccionada. Ajusta la oferta y la demanda y tachar la fila o la columna ya satisfecha. Si se satisfacen una fila y una columna en forma simultánea, sólo se tacha uno de los dos y al que queda se le asigna oferta o demanda cero.
Paso 3:
- Si queda sin tachar exactamente una fila o columna con cero oferta o demanda, detenerse.
- Si queda sin tachar una fila (columna) con oferta (demanda) positiva, determinar las variables básicas en la fila (columna) con el Método del Costo Mínimo. Detenerse.
- Si todas las filas y columnas que no se tacharon tienen cero oferta y demanda (restante), determinar las variables básicas cero por el Método del Costo Mínimo. Detenerse.
- En cualquier otro caso, seguir en el Paso 1.
Ejemplo Método de Aproximación de Vogel
Consideremos nuevamente un problema de transporte balanceado que tiene 3 fuentes de oferta (silos) y 4 fuentes de demanda (molinos). Los valores numéricos en la esquina superior derecha de cada cuadro, en adelante representan el costo unitario de transporte desde el silo i al molino j. Por ejemplo es el costo unitario de transporte desde el silo 1 al molino 1.
Según lo descrito anteriormente el primer paso consiste en calcular el factor de penalización para cada fila y columna de la tabla que representa el problema de transporte anterior. Por ejemplo, en la fila 1 el mínimo costo es $2 y y el costo unitario siguiente al mínimo es $10. En consecuencia la penalización de dicha fila es $8 ($10-$2). Se replica el mismo cálculo para cada fila y columna de la tabla lo cual es trivial y reporta los siguientes resultados (se han marcado las penalizaciones de las respectivas filas y columnas con color naranjo para mayor claridad):
Como la fila 3 tiene la máxima penalización ($10) y la celda correspondiente a tiene el costo unitario mínimo de esa fila, se asigna 5 unidades a (más no es necesario aún cuando la capacidad del silo 3 lo permite dado que la demanda del molino 1 es de sólo 5 unidades). Con esto la columna 1 se debe tachar (lo hemos marcado con color amarillo) y se procede a calcular las nuevas penalizaciones como se aprecia a continuación:
Ahora la penalización máxima es $9 ($11-$2) lo cual se alcanza en la fila 1. En consecuencia se asigna la máxima cantidad posible a la variable , con lo que se obtiene , y al mismo tiempo se satisfacen tanto la fila 1 como la columna 2. En forma arbitraria se tacha la columna 2 y se ajusta a cero la oferta en la fila 1.
Al continuar de la misma forma, ahora la fila 2 es la que produce la máxima penalización correspondiente a $11 ($20-$9), por tanto se asigna , con lo que se tacha la columna 3 y quedan 10 unidades en la fila 2. Sólo queda la columna 4 y tiene 15 unidades de oferta positiva. Al aplicar el Método del Costo Mínimo a esa columna, se asigna de forma sucesiva (se recomienda verificar dichos resultados). Notar adicionalmente que hay otras soluciones posibles que dependen de cómo se rompen los empates.
El valor de la función objetivo asociado a esta solución factible inicial es Z=15(2)+0(11)+15(9)+10(20)+5(4)+5(18)=$475 que es similar a lo alcanzado por el Método del Costo Mínimo, no obstante, en general el Método de Aproximación de Vogel reporta mejor solución de inicio.
domingo, 6 de octubre de 2019
Método Transporte
Método Transporte
En general los problemas de transporte se ocupan (en forma literal o imaginaria) de la
distribución desde cualquier grupo de centros de suministro, llamados orígenes, a
cualquier grupo de centros de recepción, llamados destinos, de modo que se minimice el
costo total de distribución.
Suposición de requerimientos: cada origen tiene un suministro fijo de unidades, donde
este suministro completo tiene que distribuirse entre los destinos. De manera similar,
cada destino tiene una demanda fija de unidades, donde esta demanda completa tiene
que recibirse desde los orígenes.
Propiedades de soluciones factibles: un problema de transporte tendrá soluciones
factibles si y sólo la suma de sus recursos es igual a la suma de sus demandas (equilibrio
entre suministro total de todos los orígenes y la demanda total de todos los destinos).
En algunos problemas reales, los recursos en realidad representan cantidades máximas
(y no cantidades fijas) para distribuir.
Suposición de costo : el costo de distribuir unidades de cualquier origen a cualquier
destino dado es directamente proporcional al número de unidades distribuidas. Por lo
tanto, este costo es justo el costo unitario de distribución por el número de unidades
distribuidas.
El modelo: cualquier problema (involucre o no transporte) se ajusta al modelo de un
problema de transporte si se puede describir por completo en términos de una tabla de
parámetros (origen-destino: costos, recursos, demanda) y satisface tanto la suposición
de requerimientos como la suposición de costo. El objetivo es minimizar el costo total
de distribuir las unidades. Todos lo parámetros del modelo están incluidos en la tabla de
parámetros.
¡ Se requiere solo llenar una tabla de parámetros para formular el problema de
transporte. !
Ejemplo :
La compañía X produce su producto líder en tres fábricas diferentes, los cuales se
envían por camión a cuatro bodegas de distribución las cuales se encargan de su venta.
La producción por fábrica es la siguiente (se utiliza como unidad de medida – camiones
de producto):
Fábrica Producción
1 75 camiones
2 125 camiones
3 100 camiones
Total 300 camiones
La capacidad de cada bodega es la siguiente (se utiliza como unidad de medida –
camiones de producto):
Bodega Capacidad
1 80 camiones
2 65 camiones
3 70 camiones
4 85 camiones
Total 300 camiones
Los costos asociados a enviar productos desde las diferentes fabricas a las bodegas, es el
siguiente:
La empresa actualmente utiliza el siguiente plan, donde se muestra la cantidad de
camiones que envía de cada fábrica a cada bodega
Este plan genera el siguiente costo de envío: $ 165.595
75 ($464) + 5 ($352) + 65 ($416) + 55 ($690) + 15 ($388) + 85 ($685)
La empresa desea conocer si existe un plan de envío diferente al de uso actual, el
cual permita minimizar el costo total.
Formulación del problema en términos de programación lineal
Se necesita identificar las actividades y los requerimientos de este problema para
formularlo como un problema de programación lineal. En este caso se han mencionado
dos tipos de actividades – la producción de un nuevo producto en las dos fábricas y el
envío de los productos a través de varias rutas.
Sin embargo, se conocen las cantidades específicas que debe producir cada fábrica, de
modo que no se requiere tomar decisiones sobre las actividades de producción. La toma
de decisiones se ocupa de los niveles de las actividades de envío, cuánto enviar a través
de cada ruta.
Se utilizará las variables Fi, para identificar la fábrica i (i desde 1 hasta 3), y la variable
Bj para identificar la bodega j (j desde 1 hasta 4).
E(F1-B1): Cantidad de unidades enviadas desde la F1 hasta la B1
E(F1-B2): Cantidad de unidades enviadas desde la F1 hasta la B2
E(F1-B3): Cantidad de unidades enviadas desde la F1 hasta la B3
E(F1-B4): Cantidad de unidades enviadas desde la F1 hasta la B4
E(F2-B1): Cantidad de unidades enviadas desde la F2 hasta la B1
E(F2-B2): Cantidad de unidades enviadas desde la F2 hasta la B2
E(F2-B3): Cantidad de unidades enviadas desde la F2 hasta la B3
E(F2-B4): Cantidad de unidades enviadas desde la F2 hasta la B4
E(F3-B1): Cantidad de unidades enviadas desde la F3 hasta la B1
E(F3-B2): Cantidad de unidades enviadas desde la F3 hasta la B2
E(F3-B3): Cantidad de unidades enviadas desde la F3 hasta la B3
E(F3-B4): Cantidad de unidades enviadas desde la F3 hasta la B4
Minimizar Costo = costo total de enviar los productos
Costo = 464*E(F1- B1) + 352*E(F2-B1) + 995*E(F3-B1) + 513*E(F1-B2) + 416*E(F2-B2) +
682*E(F3-B2) + 654*E(F1-B3) + 690*E(F2-B3) + 388*E(F3-B3) + 867*E(F1-B4) + 791*E(F2-B4)
+ 685*E(F3-B4)
Sujeta a las siguientes restricciones:
1. Restricciones de requerimientos fijos:
E(F1-B1) + E(F1 - B2) + E(F1-B3) + E(F1 -B4) = 75
E(F2-B1) + E(F2 - B2) + E(F2-B3) + E(F2 -B4) = 125
E(F3-B1) + E(F3 - B2) + E(F3-B3) + E(F3 -B4) = 100
E(F1-B1) + E(F2 - B1) + E(F3-B1) = 80
E(F1-B2) + E(F2 - B2) + E(F3-B2) = 65
E(F1-B3) + E(F2 - B3) + E(F3-B3) = 70
E(F1-B4) + E(F2 - B4) + E(F3-B4) = 85
2. Restricciones de no negatividad:
E(F1-B1), E(F1-B2), E(F1-B3), E(F1-B4), E(F2-B1), E(F2- B2), E(F2-B3), E(F2 -B4), E(F3-B1), E(F3-B2),
E(F3-B3), E(F3-B4) >= 0
B1 B2 B3 B4 Producción
F1 0 20 0 55 75 = 75
F2 80 45 0 0 125 = 125
F3 0 0 70 30 100 = 100
Total 80 65 70 85 152.535
Capacidad 80 65 70 85
Video Explicación:
En general los problemas de transporte se ocupan (en forma literal o imaginaria) de la
distribución desde cualquier grupo de centros de suministro, llamados orígenes, a
cualquier grupo de centros de recepción, llamados destinos, de modo que se minimice el
costo total de distribución.
Suposición de requerimientos: cada origen tiene un suministro fijo de unidades, donde
este suministro completo tiene que distribuirse entre los destinos. De manera similar,
cada destino tiene una demanda fija de unidades, donde esta demanda completa tiene
que recibirse desde los orígenes.
Propiedades de soluciones factibles: un problema de transporte tendrá soluciones
factibles si y sólo la suma de sus recursos es igual a la suma de sus demandas (equilibrio
entre suministro total de todos los orígenes y la demanda total de todos los destinos).
En algunos problemas reales, los recursos en realidad representan cantidades máximas
(y no cantidades fijas) para distribuir.
Suposición de costo : el costo de distribuir unidades de cualquier origen a cualquier
destino dado es directamente proporcional al número de unidades distribuidas. Por lo
tanto, este costo es justo el costo unitario de distribución por el número de unidades
distribuidas.
El modelo: cualquier problema (involucre o no transporte) se ajusta al modelo de un
problema de transporte si se puede describir por completo en términos de una tabla de
parámetros (origen-destino: costos, recursos, demanda) y satisface tanto la suposición
de requerimientos como la suposición de costo. El objetivo es minimizar el costo total
de distribuir las unidades. Todos lo parámetros del modelo están incluidos en la tabla de
parámetros.
¡ Se requiere solo llenar una tabla de parámetros para formular el problema de
transporte. !
Ejemplo :
La compañía X produce su producto líder en tres fábricas diferentes, los cuales se
envían por camión a cuatro bodegas de distribución las cuales se encargan de su venta.
La producción por fábrica es la siguiente (se utiliza como unidad de medida – camiones
de producto):
Fábrica Producción
1 75 camiones
2 125 camiones
3 100 camiones
Total 300 camiones
La capacidad de cada bodega es la siguiente (se utiliza como unidad de medida –
camiones de producto):
Bodega Capacidad
1 80 camiones
2 65 camiones
3 70 camiones
4 85 camiones
Total 300 camiones
Los costos asociados a enviar productos desde las diferentes fabricas a las bodegas, es el
siguiente:
La empresa actualmente utiliza el siguiente plan, donde se muestra la cantidad de
camiones que envía de cada fábrica a cada bodega
La capacidad de cada bodega es la siguiente (se utiliza como unidad de medida –
camiones de producto):
Bodega Capacidad
1 80 camiones
2 65 camiones
3 70 camiones
4 85 camiones
Total 300 camiones
Los costos asociados a enviar productos desde las diferentes fabricas a las bodegas, es el
siguiente:
La empresa actualmente utiliza el siguiente plan, donde se muestra la cantidad de
camiones que envía de cada fábrica a cada bodega
Este plan genera el siguiente costo de envío: $ 165.595
75 ($464) + 5 ($352) + 65 ($416) + 55 ($690) + 15 ($388) + 85 ($685)
La empresa desea conocer si existe un plan de envío diferente al de uso actual, el
cual permita minimizar el costo total.
Formulación del problema en términos de programación lineal
Se necesita identificar las actividades y los requerimientos de este problema para
formularlo como un problema de programación lineal. En este caso se han mencionado
dos tipos de actividades – la producción de un nuevo producto en las dos fábricas y el
envío de los productos a través de varias rutas.
Sin embargo, se conocen las cantidades específicas que debe producir cada fábrica, de
modo que no se requiere tomar decisiones sobre las actividades de producción. La toma
de decisiones se ocupa de los niveles de las actividades de envío, cuánto enviar a través
de cada ruta.
Se utilizará las variables Fi, para identificar la fábrica i (i desde 1 hasta 3), y la variable
Bj para identificar la bodega j (j desde 1 hasta 4).
E(F1-B1): Cantidad de unidades enviadas desde la F1 hasta la B1
E(F1-B2): Cantidad de unidades enviadas desde la F1 hasta la B2
E(F1-B3): Cantidad de unidades enviadas desde la F1 hasta la B3
E(F1-B4): Cantidad de unidades enviadas desde la F1 hasta la B4
E(F2-B1): Cantidad de unidades enviadas desde la F2 hasta la B1
E(F2-B2): Cantidad de unidades enviadas desde la F2 hasta la B2
E(F2-B3): Cantidad de unidades enviadas desde la F2 hasta la B3
E(F2-B4): Cantidad de unidades enviadas desde la F2 hasta la B4
E(F3-B1): Cantidad de unidades enviadas desde la F3 hasta la B1
E(F3-B2): Cantidad de unidades enviadas desde la F3 hasta la B2
E(F3-B3): Cantidad de unidades enviadas desde la F3 hasta la B3
E(F3-B4): Cantidad de unidades enviadas desde la F3 hasta la B4
Minimizar Costo = costo total de enviar los productos
Costo = 464*E(F1- B1) + 352*E(F2-B1) + 995*E(F3-B1) + 513*E(F1-B2) + 416*E(F2-B2) +
682*E(F3-B2) + 654*E(F1-B3) + 690*E(F2-B3) + 388*E(F3-B3) + 867*E(F1-B4) + 791*E(F2-B4)
+ 685*E(F3-B4)
Sujeta a las siguientes restricciones:
1. Restricciones de requerimientos fijos:
E(F1-B1) + E(F1 - B2) + E(F1-B3) + E(F1 -B4) = 75
E(F2-B1) + E(F2 - B2) + E(F2-B3) + E(F2 -B4) = 125
E(F3-B1) + E(F3 - B2) + E(F3-B3) + E(F3 -B4) = 100
E(F1-B1) + E(F2 - B1) + E(F3-B1) = 80
E(F1-B2) + E(F2 - B2) + E(F3-B2) = 65
E(F1-B3) + E(F2 - B3) + E(F3-B3) = 70
E(F1-B4) + E(F2 - B4) + E(F3-B4) = 85
2. Restricciones de no negatividad:
E(F1-B1), E(F1-B2), E(F1-B3), E(F1-B4), E(F2-B1), E(F2- B2), E(F2-B3), E(F2 -B4), E(F3-B1), E(F3-B2),
E(F3-B3), E(F3-B4) >= 0
B1 B2 B3 B4 Producción
F1 0 20 0 55 75 = 75
F2 80 45 0 0 125 = 125
F3 0 0 70 30 100 = 100
Total 80 65 70 85 152.535
Capacidad 80 65 70 85
Video Explicación:
miércoles, 2 de octubre de 2019
Suscribirse a:
Entradas (Atom)