Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Método Simplex
28 de julio de 2022
El problema consiste en determinar un patrón de envı́o desde los orı́genes hacia los
destinos que minimice el costo total de transporte.
Juan Diego Borchert Problema de Transporte 28 de julio de 2022 5 / 65
Definición
Minimizar
c11 x11 + · · · + c1n x1n + c21 x21 + · · · + c2n c2n + · · · + cm1 xm1 + · · · + cmn xmn
sujeto a
x11 + · · · + x1n = s1
x21 + · · · + x2n = s2
.. ..
. .
xm1 + · · · + xmn = sm
x11 + x21 ... + xm1 = d1
.. .. .. ..
. . . .
x1n + x2n ... + xmn = dn
x11 , . . . , x1n , x21 , . . . , x2n , . . . , xm1 , . . . , xmn ≥ 0
Llamando
x = (x11 , x12 , ..., x1n , x21 , ..., x2n , ..., xmn )t
c = (c11 , c12 , ..., c1n , c21 , ..., c2n , ..., cmn )
b = (s1 , s2 , ..., sm , −d1 , −d2 , ..., −dn )t
A = (a11 , a12 , ..., a1n , a21 , ..., a2n , ..., amn )
aij = ei − em+j
ei , em+j ∈ R m+n unitarios con ”1” en las posiciones i-ésima y m + j-ésima, resp.
El problema puede escribirse en forma matricial:
Minimizar cx
sujeto a Ax = b
x≥0
m n
X X si dj
Llamando d = si = dj veamos que xij = , i = 1, ..., m, j = 1, ..., n es solución
d
i=1 j=1
factible del problema de transporte. En efecto:
m m m
X X s i dj dj X dj
xij = = si = d = dj
d d d
i=1 i=1 i=1
n n n
X X s i dj si X si
xij = = dj = d = si
d d d
j=1 j=1 j=1
La celda (i.j) forma un ciclo con las celdas (i, k), (l, k), (l, s), (u, s) y (u, j).
Las celdas (i, k), (l, k), (l, s), (u, s) y (u, j) forman una cadena en la tabla entra las celdas
(i, k) y (u, j).
Las celdas básicas que no aparecen en la representación de aij no se muestran en la tabla.
Nótese que los signos de los coeficientes se alternan a lo largo de la cadena.
Juan Diego Borchert Problema de Transporte 28 de julio de 2022 23 / 65
Unimodularidad Total de la Matriz A0 - Ejemplo
En este caso, la primera fila y columna no varı́an. La tabla y el grafo resultante son:
Los nodos terminales ahora son el nodo origen O3 y los nodos destino D1 y D2 .
Elegimos el nodo terminal D2 y eliminamos éste, junto con su arco incidente, el cual
corresponde a la variable x22 .
Cada celda no básica junto con un subconjunto de celdas básicas forman un ciclo. Estas
celdas básicas nos dan la representación para la celda no básica.
El conjunto de todas las celdas básicas forman un árbol generador en la tabla de
transporte.
Existe una única cadena entre cualquier par de celdas en el árbol, de lo contrario,
existirı́an ciclos.
Para generar la representación adecuada para una celda no básica dada, simplemente
determinamos el único ciclo en el grafo básico que contiene el arco asociado con la celda
en cuestión.
Todas las celdas básicas de la tabla de transporte asociadas con los arcos del ciclo en el
grafo básico son los requeridos para la representación de la celda no básica.
Para determinar las celdas básicas directamente de la tabla, usamos sólo las celdas de la
cadena que se encuentran en las esquinas del ciclo.
Vemos que el único ciclo del grafo es (1, 4), (3, 4), (3, 1), (1, 1).
Eliminando el arco no básico (1, 4), queda la única cadena (3, 4), (3, 1), (1, 1).
Sabiendo que se alternan los coeficientes +1 y −1, queda la siguiente representación:
a14 = a11 − a31 + a34
Juan Diego Borchert Problema de Transporte 28 de julio de 2022 39 / 65
Vectores No-Básicos en Términos de Vectores Básicos
Los pasos generales en la aplicación del método simplex a un programa lineal son los
siguientes:
1. Encontrar una solución factible básica inicial.
2. Computar zj − cj para cada variable no básica. Parar o elegir una columna entrante.
3. Determinar una columna saliente.
4. Obtener la nueva solución factible básica y repetir el paso 2.
A continuación mostraremos cómo cada uno de estos pasos puede realizarse directamente en
la tabla del problema de transporte.
Comenzando en la celda (1, 1) hacemos x11 = mı́n{ŝ1 , dˆ1 } y reemplazamos ŝ1 por ŝ1 − x11
y dˆ1 por dˆ1 − x11 .
Si ŝ1 > 0, nos movemos a la celda (1, 2), hacemos x12 = mı́n{ŝ1 , dˆ2 } y reemplazamos ŝ1
por ŝ1 − x12 y dˆ2 por dˆ2 − x12 .
Si ŝ1 = 0, nos movemos a la celda (2, 1), hacemos x21 = mı́n{ŝ2 , dˆ1 } y reemplazamos ŝ2
por ŝ2 − x21 y dˆ1 por dˆ1 − x21 .
Si s1 = d1 , después de computar x11 tendrı́amos ŝ1 = dˆ1 = 0. Luego, al movernos a la
celda (2, 1) (aunque también podrı́amos ir a la celda (1, 2)), quedarı́a x21 = 0. Es decir, la
solución serı́a degenerada.
En general, después de hacer xkl = mı́n{ŝk , dˆl }, reemplazamos ŝk por ŝk − xkl y dˆl por
dˆl − xkl .
Si (k, l) = (m, n), terminamos.
En caso contrario, si ŝk > 0, nos movemos a la celda (k, l + 1), hacemos
xk(l+1) = mı́n{ŝk , dˆl+1 } y reemplazamos ŝk por ŝk − xk(l+1) y dˆl+1 por dˆl+1 − xk(l+1) .
Si ŝk = 0, nos movemos a la celda (k + 1, l), hacemos x(k+1)l = mı́n{ŝk+1 , dˆl } y
reemplazamos ŝk+1 por ŝk+1 − x(k+1)l y dˆl por dˆl − x(k+1)l .
Si sk = dl , después de computar xkl tendrı́amos ŝk = dˆl = 0. Luego, al movernos a la
celda (k + 1, l), quedarı́a x(k+1)l = 0. Siendo ésta una variable básica degenerada.
Este proceso de asignar a cada variable el mı́nimo entre el suministro y la demanda
restantes, ajustar ambos y moverse a la derecha o hacia abajo una celda a la vez,
continúa hasta que todos los suministros y demandas están cubiertos.
El criterio de optimalidad para el problema de transporte está dado por zij − cij ≤ 0 para
cada variable no básica xij .
Una celda (k, l) es candidata a entrar en la base si zkl − ckl > 0.
Este procedimiento para calcular zij − cij utiliza la forma:
zij − cij = cB B−1 aij − cij = cB yij − cij .
El vector yij se determina construyendo el único ciclo que contiene a la celda (i, j) y
algunas de las celdas básicas, de la forma vista anteriormente.
Es por esto que este método se denomina el método del ciclo.
Una vez elegida la celda que entrará en la base (supongamos (k, l)), es sencillo ver qué
celda es la que debe salir.
Recordemos que los coeficientes en la representación básica para dicha celda son los
negativos de las tasas de cambio de las correspondientes variables básicas con un
incremento de una unidad en la variable no básica entrante.
Luego, si entrada en la columna ykl correspondiente a una variable básica es −1, entonces
la variable básica crecerá en la misma proporción en que lo haga la variable no básica
entrante xkl .
Si la entrada es +1, entonces la variable básica decrecerá en la misma proporción en que
la variable xkl aumente.
Una vez calculado ∆, procedemos a ajustar los valores de las variables a lo largo del ciclo
en esta cantidad y de acuerdo con el signo de los coeficientes en la representación.