Está en la página 1de 21

Flujo de Costo Mı́nimo

Optimización I

Rosa Medina

1 de junio de 2015
Rev. 7 de junio de 2023 por M. Vega

1
Problema prototipo
Una empresa tiene dos plantas productivas (A y B), tres centros de
distribución (C, D y E) y una sala de ventas (F). Cada mes la planta A puede
producir hasta 20 unidades de productos y la planta B hasta 10 unidades. La
sala de ventas tiene una demanda de 30 unidades mensuales para vender. El
costo de transporte de los productos varı́a dependiendo del canal que se utilice.

Costos unitarios
de los canales de envı́o
A B C D E F
A - 4 3 - - -
B - - - 3 2 -
C - - - - 3 -
D - - 2 - - 2
E - - - - - 2
F - - - - - -

Se debe decidir cómo enviar los productos a través de la red para satisfacer la
demanda, de manera que los costos de transporte sean mı́nimos.
2
Grafo del problema, G(N, A)

3
Observaciones

▶ Por convención, las demandas se consideran como ofertas negativas.


▶ Para que el problema sea factible, la oferta y demanda debe estar
balanceada. X
bi = 0
i∈N

Si no, se deben agregar nodos con la cantidad que corresponda y arcos


con costos cero, entre los nodos ofertas y demanda.

4
Modelo matemático

Variables de decisión:
xij : flujo de productos por el arco (i, j) ∈ A

Parámetros:
cij : costo unitario del arco (i, j) ∈ A)
 del nodo i ∈ V
bi : oferta
Oi
 si el nodo i es planta productiva
bi = −Di si el nodo i es sala de ventas

0 si el nodo i es centro de distribución (transbordo)

Restricciones: Balance de nodos


Todo lo que sale de un nodo, menos lo que entra al nodo, es lo que produce el
nodo.

5
Modelo matemático

Modelo:
P
mı́n cij xij
(i,j)∈A
P P
s.a xij − xji = bi , ∀i ∈ N
j∈δi+ j∈δi−
xij ≥ 0 ∀(i, j) ∈ A

con
δi+ = {j ∈ N : (i, j) ∈ A} δi− = {j ∈ N : (j, i) ∈ A}

(nodos adyacentes a i) (nodos incidentes a i)


Modelo matemático
Matriz de Coeficientes (Matriz de incidencia nodo-arco): para el
problema prototipo
xAB xAC xBD xBE xCE xDC xDF xEF
A 1 1 0 0 0 0 0 0
B -1 0 1 1 0 0 0 0
C 0 -1 0 0 1 -1 0 0
D 0 0 -1 0 0 1 1 0
E 0 0 0 -1 -1 0 0 1
F 0 0 0 0 0 0 -1 -1

▶ Cada columna tiene un 1 y un -1.


▶ El arco (i, j) tiene un 1 en la fila i y un -1 en la fila j, esto es, en cada
columna aij = ei − ej , con ei el i-ésimo vector de la base canónica de
RN .
▶ Matriz totalmente unimodular.
▶ La suma de las filas es cero. ¿Cuánto es el rango de la matriz?
Modelo matemático

¿Existe una matriz de rango |N | − 1?

(A, C) (B, D) (C, E) (D, F ) (E, F )


A 1 0 0 0 0 Eliminando la última fila, encontramos
B 0 1 0 0 0
una matriz triangular inferior con
C -1 0 1 0 0
D 0 -1 0 1 0 elementos en la diagonal distintos de
E 0 0 -1 0 1 cero.
F 0 0 0 -1 -1

▶ Rango de la matriz es el número de nodos menos uno, |N | − 1.

8
Modelo matemático: Teorema
Caracterización de una matriz de base
Dado un Problema de Flujo de Costo Mı́nimo definido en un grafo dirigido
conexo, G, con un arco raı́z. Entonces B es una matriz básica para el
problema si, y sólo si, es la matriz de incidencia nodo-raı́z de un árbol de
cobertura con raı́z de G.
(A, C) (B, D) (C, E) (D, F ) (E, F ) F
A 1 0 0 0 0 0
B 0 1 0 0 0 0
C -1 0 1 0 0 0
D 0 -1 0 1 0 0
E 0 0 -1 0 1 0
F 0 0 0 -1 -1 1

La raı́z corresponde a un semiarco


saliendo del nodo que hemos eliminado
para encontrar el rango de la matriz.
Modelo matemático
Representación de los vectores no básicos en términos de los básicos:
xAB xAC xBD xBE xCE xDC xDF xEF Los arcos no básicos forman un ciclo
A 1 1 0 0 0 0 0 0 en el árbol de cobertura. Tomando
B -1 0 1 1 0 0 0 0
como sentido de ciclo el arco que
C 0 -1 0 0 1 -1 0 0
D 0 0 -1 0 0 1 1 0
queremos representar, los arcos en el
E 0 0 0 -1 -1 0 0 1 mismo sentido se restan y los arcos en
F 0 0 0 0 0 0 -1 -1 el sentido opuesto se suman.

Ejemplo: arco DC
axDC = −axCE − axEF + axDF

10
Modelo matemático

Problema Dual:

P
máx bi wi
i∈N
s.a wi − wj ≤ cij , ∀(i, j) ∈ A
wi irrestrictas ∀i ∈ N

Holguras complementarias:
▶ wi (
P P
xij − xji − bi ) = 0, ∀i ∈ N
j∈δi+ j∈δi−
▶ xij (wi − wj − cij ) = 0, ∀(i, j) ∈ A

11
Simplex en redes

Inicialización:
1. Encontrar base factible inicial.
Iteraciones:
1.1 Calcular los costos reducidos de las variables no básicas.
1.2 Seleccionar la variable no básica de entrada. Si no existe, la solución es
óptima.
1.3 Seleccionar la variable básica de salida.
1.4 Actualizar la base e ir a 1.1.

12
Simplex en redes
Inicialización:
1. Encontrar base factible inicial. Árbol de cobertura con raı́z factible para
el problema
Iteraciones:
1.1 Calcular los costos reducidos de las variables no básicas.
1.2 Seleccionar la variable no básica de entrada. Si no existe, la solución es
óptima.
1.3 Seleccionar la variable básica de salida.
1.4 Actualizar la base e ir a 1.1.

Variables básicas:

xBD = 10 xDF = 10

xAC = 20 xCE = 20 xEF = 20

13
Simplex en redes
Inicialización:
1. Encontrar base factible inicial.
Iteraciones:
1.1 Calcular los costos reducidos de las variables no básicas. Se usan las
variables duales y T. de Holguras Complementarias, asignando cero a la
variable dual del nodo raiz: wi − wj = cij . Costos reducidos:
c′ij = cij − (wi − wj ).
1.2 Seleccionar la variable no básica de entrada. Si no existe, la solución es
óptima.
1.3 Seleccionar la variable básica de salida.
1.4 Actualizar la base e ir a 1.1.

wB − wD = cBD = 3 wB = 5
wD − wF = cDF = 2 wD = 2
wA − wC = cAC = 3 wA = 8
wC − wE = cCE = 3 wC = 5
wE − wF = cEF = 2 wE = 2
wF = 0 wF = 0
Simplex en redes
Inicialización:
1. Encontrar base factible inicial.
Iteraciones:
1.1 Calcular los costos reducidos de las variables no básicas. Se usan las
variables duales y T. de Holguras Complementarias, asignando cero a la
variable dual del nodo raiz: wi − wj = cij . Costos reducidos:
c′ij = cij − (wi − wj ).
1.2 Seleccionar la variable no básica de entrada. Si no existe, la solución es
óptima.
1.3 Seleccionar la variable básica de salida.
1.4 Actualizar la base e ir a 1.1.

c′AB = cAB − wA + wB = 4 − 8 + 5 = 1

c′BE = cBE −wB +wE = 2−5+2 = −1


c′DC = cDC − wD + wC = 2 − 2 + 5 = 5
Simplex en redes
Inicialización:
1. Encontrar base factible inicial.
Iteraciones:
1.1 Calcular los costos reducidos de las variables no básicas.
1.2 Seleccionar la variable no básica de entrada. Mı́nimo de los costos
reducidos. Si no existe, la solución es óptima. Todos los costos reducidos
son mayores o iguales que cero
1.3 Seleccionar la variable básica de salida.
1.4 Actualizar la base e ir a 1.1.

c′BE = mı́n{c′ij < 0 : xij no básica}


= −1

Luego, xBE entra a la base.


Simplex en redes

Inicialización:
1. Encontrar base factible inicial.
Iteraciones:
1.1 Calcular los costos reducidos de las variables no básicas.
1.2 Seleccionar la variable no básica de entrada. Si no existe, la solución es
óptima.
1.3 Seleccionar la variable básica de salida. Ver en el ciclo que se forma al
agregar la variable no básica, la primera variable que se hace cero. Arcos a
favor del ciclo, aumentan. Arcos en contra, disminuyen.
1.4 Actualizar la base e ir a 1.1.

Obs.: Si más de una se hace cero, elegir sólo una arbitrariamente, para
mantener el árbol de cobertura conexo. Corresponde a una solución
degenerada.

17
Simplex en redes
Inicialización:
1. Encontrar base factible inicial.
Iteraciones:
1.1 Calcular los costos reducidos de las variables no básicas.
1.2 Seleccionar la variable no básica de entrada. Si no existe, la solución es
óptima.
1.3 Seleccionar la variable básica de salida. Ver en el ciclo que se forma al
agregar la variable no básica, la primera variable que se hace cero. Arcos a
favor del ciclo, aumentan. Arcos en contra, disminuyen.
1.4 Actualizar la base e ir a 1.1.

Luego, xBD y xDF pueden salir de la


base, haciendo ∆ = 10. Elegimos
arbitrariamente xDF para que salga de
la base (solución degenerada).
[Ejercicio: ver qué ocurre si sale xBD ]

18
Simplex en redes
Inicialización:
1. Encontrar base factible inicial.
Iteraciones:
1.1 Calcular los costos reducidos de las variables no básicas.
1.2 Seleccionar la variable no básica de entrada. Si no existe, la solución es
óptima.
1.3 Seleccionar la variable básica de salida.
1.4 Actualizar la base e ir a 1.1. Las variables se actualizan partiendo por las
hojas. Arcos a favor del ciclo, aumentan. Arcos en contra, disminuyen. Los
arcos que no pertenecen al ciclo no modifican su valor.

Variables básicas:

xBD = 0 xBE = 10

xAC = 20 xCE = 20 xEF = 30

19
Simplex en redes
Inicialización:
1. Encontrar base factible inicial.
Iteraciones:
1.1 Calcular los costos reducidos de las variables no básicas. Se usan las
variables duales y T. de Holguras Complementarias, asignando cero a la
variable dual del nodo raiz: wi − wj = cij . Costos reducidos:
c′ij = cij − (wi − wj ).
1.2 Seleccionar la variable no básica de entrada. Si no existe, la solución es
óptima.
1.3 Seleccionar la variable básica de salida.
1.4 Actualizar la base e ir a 1.1.

c′AB = cAB − wA + wB = 4 − 8 + 4 = 0

c′DC = cDC − wD + wC = 2 − 1 + 5 = 6
c′DF = cDF − wD + wF = 2 − 1 + 0 = 1
Simplex en redes
Inicialización:
1. Encontrar base factible inicial.
Iteraciones:
1.1 Calcular los costos reducidos de las variables no básicas.
1.2 Seleccionar la variable no básica de entrada. Mı́nimo de los costos
reducidos. Si no existe, la solución es óptima. Todos los costos reducidos
son mayores o iguales que cero
1.3 Seleccionar la variable básica de salida.
1.4 Actualizar la base e ir a 1.1.
c′ij ≥ 0, ∀xij no básica
=⇒ Óptimo Encontrado

Costo mı́nimo:

3 · 20 + 3 · 20 + 2 · 30 + 3 · 0 + 2 · 10 = 200

También podría gustarte