Professional Documents
Culture Documents
UNIVERSIDAD SIMON
Decanato de Estudios de Postgrado
Maestra en Matematicas
TRABAJO DE GRADO
por
Abril 2009
BOLIVAR
UNIVERSIDAD SIMON
Decanato de Estudios de Postgrado
Maestra en Matematicas
Abril 2009
RESUMEN
En el area de la programacion matematica, el problema de flujo de mnimo costo en
redes (FMC) ha logrado separarse del grupo clasico de problemas lineales, esto debido a
sus aplicaciones en diferentes areas de la industria, la existencia de algoritmos altamente
eficientes para su resolucion y la representacion grafica asociada a ellos; por lo que se ha
generado gran interes en el area. La generalizacion de este problema clasico que consiste
en reemplazar la funcion objetivo por una no lineal tambien es de gran interes por sus
variadas aplicaciones.
Una tecnica desarrollada para la resolucion de estos u
ltimos problemas consiste en
aproximar la funcion no lineal con una funcion lineal a trozos y generar subproblemas
lineales. Estos subproblemas lineales han sido resueltos con un algoritmo cuyo tiempo de
ejecucion teorico no es polinomial. En procura de alcanzar una mejora tanto en el tiempo
de ejecucion como en los resultados, se planteo resolver los subproblemas lineales con un
algoritmo que tenga un tiempo de ejecucion polinomial, manteniendo el procedimiento que
permite aproximar la funcion no lineal.
La tecnica elegida fue la de escalamiento de costos. Se implemento todo el procedimiento de resolucion, desde la obtencion de un punto inicial, el procedimiento para generar las
aproximaciones hasta dos versiones muy distintas de la tecnica de escalamiento; lo que
permitio ademas, realizar una breve comparacion entre dichas tecnicas. Se obtuvieron
resultados aceptables pero no se logro mejorar los tiempos de ejecucion.
Indice general
1. Introducci
on
2. Marco Te
orico
2.1. Preliminares . . . . . . . . . . . . . . . . . . . .
2.2. Aproximacion Lineal Separable a Trozos . . . .
2.3. Flujo en Redes . . . . . . . . . . . . . . . . . .
2.3.1. Optimalidad Aproximada . . . . . . . .
2.4. Flujo de Mnimo Costo . . . . . . . . . . . . . .
2.4.1. Tecnica out-of-kilter con Flujo Maximal
2.4.2. Escalamiento de costo . . . . . . . . . .
.
.
.
.
.
.
.
5
5
6
9
11
13
13
23
3. Implementaci
on
3.1. Algoritmo FMC1 (FMC.1) . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Algoritmo FMC2 (FMC.2) . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
27
31
4. Resultados Num
ericos
4.1. Problemas Resueltos . . .
4.1.1. Grupo 1 . . . . . .
4.1.2. Grupo 2 . . . . . .
4.1.3. Grupo 3 . . . . . .
4.2. Variantes del FMC.2 . . .
4.3. Resultados . . . . . . . . .
4.3.1. Problema Grupo 1
4.3.2. Problemas Grupo 2
4.3.3. Problemas Grupo 3
34
36
36
37
37
40
40
41
44
44
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5. Conclusiones y Recomendaciones
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
47
Indice de figuras
2.1.
2.2.
2.3.
2.4.
.
.
.
.
7
10
12
19
37
39
ii
. . . . . . .
. . . . . . .
para el arco
. . . . . . .
. . .
. . .
(i,j)
. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Indice de cuadros
4.1.
4.2.
4.3.
4.4.
4.5.
4.6.
4.7.
4.8.
iii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
42
43
43
44
44
45
46
46
Captulo 1
Introducci
on
En el area de la Programacion Matematica, el problema de flujo de mnimo costo en
redes (FMC) ha logrado destacarse del grupo clasico de problemas lineales, esto debido a
sus aplicaciones en diferentes areas de la industria, la existencia de algoritmos altamente
eficientes para su resolucion y la representacion grafica asociada a ellos (lo que permite un
rapido entendimiento del problema), lo que los hace de gran interes en el area. Resolver
un problema FMC consiste en determinar una distribucion de un insumo a traves de una
red, satisfaciendo las demandas y ofertas de los nodos y respetando las capacidades de los
arcos, de manera de minimizar el costo total de distribucion. Para obtener un tratamiento
completo sobre este problema y sus aplicaciones se puede consultar, por ejemplo, Ahuja,
Magnanti y Orlin [1].
La generalizacion de este problema clasico que consiste en reemplazar la funcion objetivo por una no lineal, tambien es de gran interes por sus variadas aplicaciones. En
particular, nos interesan problemas de la forma:
mn f (x)
s.a. Ax = b
x0
(FMCNL)
Para resolver estos problemas se han desarrollado diversos metodos que tratan de
aprovechar la estructura de red presente en las restricciones. Uno de los primeros fue el
metodo de Frank-Wolfe, que es un proceso iterativo que usa la linearizacion de la funcion
objetivo alrededor del iterado actual. Los subproblemas que se generan son todos de
tipo FMC y se resuelven eficientemente. A pesar de su sencillez, no se considera practico
aplicarlo en problemas de gran escala por su muy lenta convergencia.
Posteriormente se desarrollan metodos con tecnicas ligeramente mas complejas, como
la de aproximaciones lineales a trozos y otras que utilizan informacion de primer orden y
tambien de segundo orden.
La primera de dichas tecnicas se ha usado con el proposito de mejorar la calidad de la
aproximacion y mantener los subproblemas dentro de la clase FMC. Aqu se encuentran
las aproximaciones globales lineales a trozos y las aproximaciones locales lineales a trozos.
En la de aproximaciones globales, la funcion objetivo se aproxima por una funcion
lineal a trozos, basada en el iterado actual y cubriendo todo el dominio de la funcion.
Dicha aproximacion se va refinando en cada iteracion reduciendo el tama
no de paso. Esto
trae como consecuencia que la dimension de los subproblemas y el n
umero de evaluaciones
funcionales se incrementa vertiginosamente, disminuyendo la eficiencia del algoritmo y
presentando problemas de almacenamiento. Esta tecnica mantiene
los subproblemas
en
n
P
la clase FMC solo en el caso de funcion objetivo separable es decir, f (x) = fi (xi ) ,
i=1
resolviendose eficientemente.
Con el uso de las aproximaciones locales se solventa el problema de la dimensionalidad
asociado a las aproximaciones globales lineales a trozos. Autores como Meyer [9], Kao
y Meyer [7] proponen metodos que para el caso separable, producen subproblemas que
tienen un tama
no fijo que depende del n
umero de segmentos en la aproximacion y que
poseen estructura de red. Su principal desventaja es que el progreso de un iterado al
siguiente esta limitado a un peque
no entorno alrededor del primero. Posteriormente, con
la finalidad de resolver esta dificultad, Kamesan y Meyer [6] para el caso separable, usan
2
f (x) =
n
P
fi (x) , y fi (x + w) = fi (x)
i=1
es exponencial; sin embargo, en la practica es un algoritmo altamente competitivo. Tambien existen algoritmos cuya tasa de convergencia es polinomial, entre estos se encuentran
los algoritmos de Escalamiento de Costo que consisten en generar y resolver problemas
auxiliares con variacion en los costos originales.
El objetivo general del presente trabajo es alcanzar una mejora tanto en el resultado
como en el tiempo de ejecucion al resolver problemas del tipo FMCNL
Para esto, se plantea como metodologa combinar las tecnicas desarrolladas por Feijoo
y Meyer [4],[5] para funciones no separables, con la tecnica de Escalamiento de Costos
para resolver los subproblemas que se originan en cada iteracion.
En el captulo 2 se explicara en detalle el marco teorico necesario para implementar la
tecnica de linealizacion separable a trozos, as como tambien dos versiones del metodo de
Escalamiento de Costo. En un principio se planifico trabajar con una sola version, pero
debido a los resultados numericos obtenidos se decidio implementar una segunda version.
En el tercer captulo se presenta el detalle de los algoritmos implementados. En el
captulo siguiente se encuentran los resultados numericos y en el quinto captulo las conclusiones del presente trabajo.
Captulo 2
Marco Te
orico
2.1.
Preliminares
Para familiarizar al lector con terminos, definiciones y resultados generales sobre grafos,
se presentan los utilizados en este trabajo.
Un grafo dirigido G = (N, A) consiste de un conjunto N de n nodos y de un conjunto
A de m arcos cuyos elementos son pares ordenados de nodos.
Un arco (i, j) tiene dos extremos, i y j. El nodo i es la cola (nodo inicial) y el nodo j
es la cabeza (nodo terminal). Se dice que (i, j) es incidente a i y tambien a j. Tambien se
dice que (i, j) es un arco saliente de i y un arco entrante a j.
Una matriz de incidencia nodo-arco E asociada a un grafo G = (N, A) es una matriz
n m que representa el grafo completo de forma matricial, donde cada columna Eij de E
corresponde al arco (i, j) y tiene un 1 en la fila i, un 1 en la fila j y el resto de entradas
son ceros.
Un grafo G0 = (N 0 , A0 ) es un subgrafo de un grafo G = (N, A) si N 0 N y A0 A.
Un camino en un grafo dirigido G = (N, A) es un subgrafo de G que consiste de una
secuencia de nodos y arcos sin repeticiones, es decir, una secuencia i1 a1 i2 a2
ir1 ar1 ir que satisface la propiedad de que para 1 k r 1, o bien ak = (ik , ik+1 )
A (arco a favor del camino) o bien ak = (ik+1 , ik ) A (arco en contra del camino). Para
5
2.2.
Aproximaci
on Lineal Separable a Trozos
mn
f (x)
sujeto a: x F
(2.1)
Sea z una solucion factible del problema (2.1) la aproximacion separable de hz se define
de la siguiente manera:
sz (x) :=
n
X
s(i)
z (xi )
i=1
(i)
donde sz (xi ) = hz (xi ei ) y ei es el i esimo vector unitario canonico, es decir, todas las
componentes excepto la i esima son 0 y la i esima es 1.
fi (z, , xi ) =
(i)
sz (zi + (k 1)i ) +
(i)
sz (zi (k 1)i ) +
Por otro lado, al calcular la pendiente del segmento [a, b] se tiene que
(i)
Cik
(i)
Ci+k =
(i)
Cik
(i)
s (z ki ) sz (zi (k 1)i )
= z i
i
con ki y con ki0 escogidos de tal manera que ki i = ui y ki0 i = li . (Por simplicidad
notacional, se asume que en cualquier iteracion todos los segmentos usados para construir
fi son iguales, aunque en la practica el tama
no de los segmentos cerca de las cotas definidas
por li y ui es generalmente menor que i ).
2.3.
Flujo en Redes
Los problemas de flujos en redes son problemas de optimizacion sobre grafos, en los
que se busca encontrar flujos que minimizan o maximizan cierta funcion objetivo.
Dentro de estos se encuentran los problemas de Flujo de Mnimo Costo (FMC), en los
cuales se trata de distribuir alg
un insumo desde nodos de oferta a nodos de demanda a
traves de nodos intermedios, sin exceder las capacidades de las conexiones; con el objetivo
de minimizar el costo total de movilizar dicho insumo (los nodos de oferta y de demanda
pueden ser tambien intermediarios de alguna cantidad de insumo). Tambien se encuentran
los problemas de Flujo Maximal (FM), los cuales consisten en determinar el maximo flujo
que puede moverse desde un nodo fuente hasta un nodo de destino. Los problemas FMC
y FM son lineales, por lo que son casos particulares de problemas de programacion lineal.
En los grafos donde se representa la estructura del problema, tambien se pueden presentar los datos y las variables del mismo. Para el caso FMC, dada G = (N, A), cada arco
(i, j) A tiene asociado un flujo xij que es el n
umero de unidades de flujo (insumo) que
van del nodo i al nodo j; una capacidad uij y una cota inferior lij que denotan la maxima y mnima cantidad de flujo que puede atravesar el arco, respectivamente; un costo cij
(constante) que representa lo que cuesta enviar una unidad de flujo del nodo i al nodo j,
este costo es unitario y lineal en el flujo. A su vez, cada nodo i N tiene asociado un
n
umero bi , que de ser positivo, representa la oferta del nodo y de ser negativo, se entiende
que se trata de una demanda de bi unidades de flujo. A los nodos de oferta nula se les
llama nodos de transbordo o intermedios.
Existen otros autores que interpretan el signo de bi de otra forma, como por ejemplo
en [3] si el valor es positivo significa que es la demanda a satisfacer y si el valor es negativo
que es la oferta existente.
En la siguiente figura (figura 2.2) se puede observar un problema de tipo FMC de 4
nodos y 6 arcos. En este ejemplo el arco (3, 2) tiene una capacidad de 1 unidad, presenta
9
10
mn
cij xij
P
xji = bi i N (a)
(i,j)A
Sujeto a:
xij
{j:(i,j)A}
(2.2)
{j:(j,i)A}
(b)
Es de notar, que en el caso de usar la otra convencion de signos para los valores bi , los
sumandos de la ecuacion (2.2.a) cambian de signo.
Una condicion necesaria pero no suficiente para que estos problemas sean factibles
n
P
(exista un vector x que satisfaga las restricciones) es que se cumpla bi = 0, es decir, que
i=1
las ofertas y demandas esten balanceadas; una condicion que tiene sentido en la practica.
A cada nodo i N se asocia un n
umero i llamado el potencial del nodo i. Dado un
vector de potenciales = { 1 , 2 , . . . , i } se define el costo reducido (respecto a ) de un
arco (i, j) como cij = cij i + j .
Un flujo (solucion) factible x de (2.2) es aquel que cumple con las restricciones del
problema (2.2.a y 2.2.b). Se conoce que dicho flujo sera optimo si y solo s existe Rn
tal que para todos los arcos en A se cumplen las siguientes condiciones de optimalidad:
xij = uij
(a) si cij < 0
2.3.1.
(2.3)
Optimalidad Aproximada
i = bi +
xji
{j:(j,i)A}
11
xij
{j:(i,j)A}
para todo i N.
Si i > 0, se tiene un exceso en el nodo i y se dice que el nodo esta activo; si i < 0,
se tiene un deficit en el nodo i; y si i = 0, se tiene un balance en el nodo i.
Un flujo x o un seudoflujo x es llamado o ptimo para alg
un > 0 si para alg
un
vector de potenciales , el par (x, ) satisface las siguientes condiciones de optimalidad:
xij = uij
(a) si
cij <
(b) si
cij >
xij = lij
(2.4)
Estas condiciones son una relajacion de las condiciones de optimalidad (2.3) y que
llegan a ser equivalentes cuando = 0. Esta definicion recibe el nombre de optimalidad
aproximada. [1].
En la figura 2.3 se pueden comparar graficamente ambas condiciones. Las condiciones de optimalidad exacta implica que cualquier combinacion de (xij , cij ) que se encuentre sobre la lnea delgada mostrada en (2.3.a) es optima. Por otro lado, las condiciones
optimalidad implican que cualquier combinacion de (xij , cij ) que se encuentre sobre la
lnea o dentro de la region formada en (2.3.b) es optima.
12
2.4.
Para resolver esta clase de problemas existen varias tecnicas, entre las que se encuentran
una adaptacion del Metodo Simplex para la estructura de datos particulares de estos
problemas (Simplex para redes), escalamiento de capacidades, escalamiento de costos,
entre otros. En esta seccion se explicaran las tecnicas utilizadas en el presente trabajo,
como lo son out of kilter con Flujo Maximal y Escalamiento de Costos.
2.4.1.
T
ecnica out-of-kilter con Flujo Maximal
Esta tecnica consiste en modificar el flujo y los potenciales de la red de forma iterativa, satisfaciendo obligatoriamente en cada iteracion solo la ecuacion del balance de
masa (2.2.b), permitiendo que soluciones intermedias violen las restricciones de capacidad
(2.2.c). El nombre refleja el hecho de que cualquier arco que satisfaga (2.3) esta en buen
estado (in-kilter ) o de lo contrario, esta en mal estado (out-of-kilter ).
Una especializacion de esta tecnica aparece en [3], en la cual se transforma el problema
original a un problema donde solo un arco esta en mal estado y se resuelven subproblemas
FM hasta encontrar la solucion optima. Dicha especializacion se describe a continuacion.
Suponga que se tienen vectores x Zm y Zn tal que cumplen con (2.2.a y 2.2.b)
y que
La condicion (2.3) es satisfecha por todos los arcos excepto uno: (t, s)
(2.5)
(2.6)
(2.7)
el caso
13
xij
e
{j:(i,j)A}
xji = 0
e
{j:(j,i)A}
e
si (i, j) A
e
si (i, j) A\A
xij + zij
xij
De esta forma se actualiza solo el flujo en el arco (t, s) y en los arcos que cumplen con
(2.3.c).
Luego, si zts = u
ets se ha conseguido que el arco (t, s) cambie de mal estado a buen
estado, dado que : cts < 0 y xts = uts
14
Recuerdese que la otra manera de obtener que el arco (t, s) cambie a buen estado, es
que el valor de cts cambie a 0, por lo cual, para el caso que zts < u
ets se debe intentar
actualizar el valor de cts para alcanzar el valor deseado, sin desmejorar aquellos valores de
cij donde (i, j) cumple con (2.3.a) o (2.3.b). Esto se puede lograr modificando los valores
de cuidadosamente.
Para variar los valores de hay que tomar en cuenta que los arcos que cumplen con
(2.3.a) seguiran en buen estado mientras su valor respectivo de cij no supere la cota
superior de 0, es decir, cij se mantenga menor o igual a 0 y los arcos que cumplen con
(2.3.b) seguiran en buen estado mientras su valor respectivo de cij se mantenga mayor o
igual a 0. Para el caso de los arcos que cumplen con (2.3.c) no se puede determinar un
comportamiento a priori, debido a que en estos casos depende directamente del flujo, si
xij = uij , cij debe mantener o disminuir su valor (cumplir con cij 0); si xij = lij , cij
debe mantener o aumentar su valor (cumplir con cij 0); y si lij < xij < uij , cij no puede
variar.
Sera de utilidad el teorema de maximo flujo/mnimo corte que establece que si z es un
flujo maximal sobre (t, s) y zts < uts , entonces existe [S, T ] un corte s t saturado por z
en la red, es decir, zij = uij para todo arco (i, j) (S, T ) y zij = lij para todo arco reverso
(j, i) (T, S)\{(t, s)}.
Por tanto, la actualizacion de los valores de se puede hacer mediante la siguiente
regla:
i =
i
i
si i S
si i T
15
De esta manera, los arcos con cola y cabeza en S o en T mantienen su respectivo valor
cij , y para el resto de los arcos se tiene:
Para los arcos (i, j) (S, T ) :
cij = cij
i +
j = cij i + j = cij
(2.8)
(2.9)
i =
i
si i S
si i T
solo sobre los potenciales de los nodos que pertenecen a S se obtienen los mismos resultados
(2.8 y 2.9).
Se debe determinar de manera tal que los nuevos valores cij no desmejoren el n
umero
de arcos que estan en buen estado, es decir, que no debe existir ning
un arco que cambie
de buen estado a mal estado.
e
Partiendo del teorema de maximo flujo/mnimo corte, aplicado a todo arco (i, j) A,
se tiene que:
(2.10)
todo arco (i, j) (T, S)\{(t, s)} cumple que xij = lij
(2.11)
De (2.8) se obtiene que cij disminuye su valor, lo que implica que cij < 0 y de (2.10)
que xij = uij , con lo cual, se sigue satisfaciendo (2.3) y el arco sigue en buen estado. Se
obtiene un resultado analogo al tomar (2.9) y (2.11), de donde se tiene que cij > 0 y
xij = lij .
16
Para determinar el maximo valor de se debe tomar en cuenta que para los arcos
e se tiene los siguientes casos:
(i, j) A\A
Si (i, j) (S, T ).
De (2.8) se tiene que cij = cij , entonces si cij < 0, cij < 0, por lo tanto,
el arco correspondiente xij (cuyo valor es uij ) se mantiene invariante (sigue
en buen estado). En cambio si cij > 0 al aplicar la actualizacion (2.8),
el menor valor que puede tomar cij para mantener el arco respectivo en
buen estado es cero, por lo tanto, el maximo valor que puede tomar es
cij .
Si (i, j) (T, S).
De un analisis similar se concluye que el maximo valor que puede tomar
es cij . (Este analisis aplica tambien para el arco (t, s)).
Entonces,
1
2
= mn{1 , 2 }
= mn{cij : (i, j) (S, T ), cij > 0}
= mn{cij : (i, j) (T, S), cij < 0}
(2.12)
Se puede observar que 1 y 2 siempre son distintos de 0, debido a que se excluyen los
valores de cij = 0, por lo tanto, tambien es distinto de 0.
Si = ct,s se consigue que el arco (t, s) cambie a buen estado, por lo que se alcanzara
una solucion optima. Por el contrario, si < ct,s solo el arco (t, s) seguira violando (2.3).
En este caso, se define un nuevo subproblema de maximo flujo con respecto a x y
actualizados. Al suponer la integralidad de cij y de , se puede concluir que en cualquier
etapa de este proceso, en el peor de los casos, ct,s se incrementara en = 1, por lo que el
n
umero de subproblemas de maximo flujo a resolver antes de que las actualizaciones de x
y satisfagan (2.3) es a lo sumo el actual valor de ct,s , dado que 1 1 ct,s .
17
Es evidente que el caso (2.7) puede ser tratado de manera similar, resolviendo problemas de mnimo flujo y calculando adecuadamente el valor de .
Es importante destacar que los problemas de Mnimo Flujo pueden ser resueltos con
algoritmos para resolver problemas de Maximo Flujo. Para ello, se deben aplicar los siguientes cambios:
- Revertir el sentido de (t, s)
- Remplazar xts por xts , lts por uts y uts por lts
de esta manera, los flujos pueden ser negativos, lo cual representa que el flujo de dicho
arco se mueve en sentido contrario (si xij < 0 significa que hay xij unidades de flujo que se
mueven del nodo j al nodo i), en otras palabras, se puede decir que existe un arco artificial
(que no esta en la red original) (j, i) con un flujo de xij unidades.
El procedimiento anterior permite resolver el problema FMC cuando un arco esta en
mal estado (out-of-kilter ). Sin embargo, cuando se tiene una red general y un flujo factible
no es sencillo encontrar potenciales para los cuales se satisfaga (2.5), es decir, que solo
un arco no cumpla con las condiciones de optimalidad (2.3). Para conseguir esto se aplica
una transformacion a la red R = (G, c, l, u, b) con x factible y cualquier , a una red
R0 = (G0 , c0 , l0 , u0 , b0 ) con los vectores x0 y 0 0 y G0 = (N 0 , A0 ).
La construccion es como sigue:
18
0
= 0, u0si = x0si y
Por cada nodo i con i < 0 se a
nade el arco (s, i) con x0si = i , lsi
c0si = 0
Por cada nodo i con i > 0 se a
nade el arco (i, t) con flujo x0it = i , lit0 = 0, u0it = x0it
y c0it = 0
El arco (t, s) se a
nade con x0ts =
{ i : i > 0} =
0
= 0, u0ts = x0ts
{ i : i < 0}, lts
b0s = 0,
b0t = 0
19
c0ij x00ij =
{(i,j)A0 }
{(i,j)A}
cij x00ij +
(cij i + j )x00ij
{(i,j)A}
cij x00ij
{(i,j)A}
i bi
{iN }
donde la u
ltima igualdad se logra reorganizando los distintos sumandos de la segunda
sumatoria de la igualdad anterior.
20
Por otro lado, cualquier flujo factible x en R se puede extender a un flujo factible x en
R0 al fijar xij = 0 para todo (i, j) A0 \A y xA = x, por lo que x cumple con
X
c0ij xij =
{(i,j)A0 }
Como
cij xij
{(i,j)A}
i bi
{iN }
{iN }
(2.13)
(2.14)
se demuestra que
c0ij
(i,j)P +
c0ij
(i,j)P
con terminos positivos a c(P 0 ); los arcos (i, j) A con c0ij < 0 y x0ij = u0ij pertenecen al
conjunto P y tambien contribuyen con terminos positivos a c(P 0 ). Estos son arcos en los
cuales la condicion (2.3) es satisfecha por x y .
0
Los arcos (i, j) A con c0ij > 0 y x0ij > lij
pertenecen al conjunto P y los arcos
(i, j) A con c0ij < 0 y x0ij < u0ij pertenecen al conjunto P + , ambos contribuyen con
terminos negativos a c(P 0 ) de magnitud c0ij en cada caso. Estos son los arcos que violan
las condiciones (2.3).
Por otro lado, en el camino P 0 puede haber a lo sumo n 1 arcos y cada tama
no de la
violacion es a lo maximo = max{cij : (i, j) A y cada cij < 0 y xij < uij , o cij > 0 y
xij > lij }.
Luego, fijando c0ts en una cota superior estricta sobre el negativo del mnimo costo de
un camino de aumento entre los nodos s y t con respecto a x0 , es suficiente para forzar
0
en la solucion optima.
que x0ts = lts
22
Por lo tanto, xts = 0 para cada flujo optimo x en R0 , lo que implica que x00A es un flujo
optimo para R.
2.4.2.
Escalamiento de costo
Otra tecnica utilizada con exito en la resolucion de problemas FMC es la de Escalamiento de Costo, que consiste en generar y resolver problemas auxiliares con variacion en
los costos originales (C).
Una manera de manejar esta tecnica es generando una secuencia de costos que convergen a C. Al denominar d los nuevos costos, la secuencia {dk }qk=0 tiene las siguientes
propiedades:
Es facil hallar un flujo optimo (x0 , 0 ) para el problema con costos d0 .
Un flujo optimo (xk+1 , k+1 ) para el problema con costo dk+1 , puede ser
calculado facilmente del flujo optimo (xk , k ) del problema con costo dk .
El entero q es peque
no con respecto al tama
no de los valores de C.
Uno de los escalamientos a usar en este trabajo es el propuesto en [3], que consiste en:
0
para
k dij = 0, k
todo (i, j) A
dij = |cij | /2
, para todo (i, j) A
k
dij cij 0
con = 1 + blog2 max {|cij | : (i, j) A}c
(2.15)
Este escalamiento genera en un comienzo muchos costos 0, por lo que los primeros
problemas que se resuelven son los de menos dificultad, aumentando esta a medida que se
va iterando y que los costos se van acercando a los originales.
Otra manera de usar esta tecnica de escalamiento es la presentada en [1]; en la cual
usan como parametro de escalamiento e iterativamente se obtienen flujos optimos
23
24
Captulo 3
Implementaci
on
La implementacion se realizo en lenguaje FORTRAN 90, en un equipo computacional con un procesador Intel(R) Core2Duo de 1.800 Ghz y 2.0 Gb de memoria RAM. El
programa usado para la compilacion fue Compaq Visual Fortran(R) 2000.
Dicha implementacion se hizo bajo el paradigma de programacion estructurada, siendo
el modulo de enlace y ejecucion el Algoritrmo Principal. Los procedimientos contenidos
en este son LINEAL, rutina que genera el subproblema lineal, y MINCOST, rutina que
resuelve el problema lineal FMC.
Entrada: Red R = (G, f, l, u, b) con G = (N, A), n
umero de segmentos p, flujo
factible z, factor de reduccion y n
umero de iteraciones a realizar n iter
Fijar N
umero de iteraciones iter = 1
Calcular 1
Mientras iter n iter hacer
iter
, x,
) = LINEAL(R, z, iter , p)
(Rpl
(y iter ) = MINCOST
Calcular tama
no de paso
xiter = xiter1 + y iter
iter+1 = iter
iter = iter + 1
Fin
Retornar (xn iter , n iter )
Algoritmo 3.1: Algoritmo Principal
El factor de reduccion , en el Algoritmo Principal, es un valor del intervalo (0, 1).
25
Entrada: (R, z, , p)
Para todo (i, j) A, // calcular nuevas cotas
lij = lij xij
uij = uij xij
Fin
Para cada (i, j) A
// a~
nadir p arcos al subproblema lineal P L
// arcos a la derecha de z
De k = 1 a p/2 hacer
ij
ckij = (sij
z (kij ) sz ((k 1)ij ))/ij
i = 0
Fin
Rpl = (Gpl , c, l, u, b)
Retornar (Rpl , x,
)
Algoritmo 3.2: Procedimiento LINEAL
El procedimiento MINCOST tiene dos versiones. Esto se debe a que con la primera
version realizada (Bland y Jensen [3]) no se obtuvo el resultado esperado en el u
ltimo
grupo de problemas de prueba, tal como se evidencia en el captulo siguiente (Resultados
Numericos). La segunda version es la presentada en Ahuja, Magnanti y Orlin [1]. En las
siguientes secciones se detallan ambas versiones.
26
3.1.
out-of-kilter. Este
u
ltimo procedimiento llama a la rutina TRANSFORMA, con la cual se
obtiene la red con las condiciones necesarias para aplicarle la tecnica antes mencionada,
y a un procedimiento FLUJOMINIMO que resuelve los problemas de Mnimo Flujo que
se generan. Seg
un los autores, se puede aplicar cualquier metodo polinomial para estos
tipos de problemas, garantizando as la ejecucion en tiempo polinomial del algoritmo. Sin
embargo, por el tipo de problemas lineales que se generan al calcular la Aproximacion
Lineal antes descrita, resulta mucho mejor resolver los problemas de FM con metodos
basicos, esto se debe a que los metodos polinomicos se basan en el escalamiento de cotas,
lo que origina muchos problemas no factibles.
El tiempo de ejecucion que presenta este algoritmo es O(T (n, m)n log C), donde T (n, m)
denota el tiempo para resolver un problema de Mnimo flujo con n nodos, m arcos y C el
mayor de los costos en valor absoluto del problema.
27
28
Entrada: (Riter, x, )
Para todo i N
(i) = 2(i)
Fin
(R0 , x0 , 0 ) = TRANSFORMA (Riter, x, )
Mientras x0 (t, s) > 0 hacer
e = (N
e , A)
e y cotas u
// Definir subgrafo G
e,e
l con respecto a (x0 , 0 )
e =N
N
e
A = {(t, s)} {(i, j) A : cij = 0}
e = (N
e , A)
e
G
e
Para todo (i, j) A
e
lij = lij xij
u
eij = uij xij
Fin
e u
(z, T, ) = FLUJOMINIMO (G,
e, e
l);
e
Para todo (i, j) A
x0ij = x0ij + zij
Fin
Para todo i T
0i = 0i +
Fin
Fin
Para todo (i, j) A
xij = x0ij
Fin
Para todo i N
i = i + 0i
Fin
Retornar (x, )
Algoritmo 3.4: Procedimiento REOPT
29
Entrada: (Riter, x, )
Para todo (i, j) A
0
u0ij =
uij , lij
= lij , c0ij = cij
0
si c0ij > 0
lij
si c0ij < 0
u0
x0ij =
ij
xij
si c0ij = 0
Fin
Para todo i PN
P 0
xij
i = bi +
x0ji
{j:(j,i)A}
{j:(i,j)A}
Fin
// A~
nadir dos nodos extras s y t.
Para todo i N
Si i < 0 entonces
a
nadir arco (s, i) a A0 con x0si = i
Si i > 0 entonces
a
nadir arco (i, t) a A0 con x0it = i
Fin
Fin
P
P
A
nadir arco (t, s) a A0 con x0ts =
i =
i
{ i >0}
{ i <0}
30
3.2.
{j:(i,j)A}
Fin
Mientras exista i : i > 0 hacer
Seleccionar nodo activo i.
Si la red contiene un arco (i, j)
o (j, i) admisible entonces
Calcular el rango de movimiento ri del arco admitido
Calcular = mn{ i , rij }
Inyectar unidades de flujo del nodo i al nodo j
Sino
i = i + /2 // reetiquetar
Fin
Fin
= /2
Fin
Retornar x
Algoritmo 3.6: Procedimiento MINCOST FMC.2
Consideracion de integralidad:
Como el algoritmo comienza con = C y se reduce en un factor de 2 en cada fase de
escalamiento hasta alcanzar = 1/n, puede convertirse en no entero durante la ejecucion
del algoritmo. Una ligera modificacion en el algoritmo puede asegurar que permanezca
entero durante toda la ejecucion. Para esto, se multiplican todos los costos de los arcos
(cij ) por n y se fija el primer valor de en 2dlog nCe y el algoritmo se detiene cuando < 1.
32
Para esta version se probaron dos maneras diferentes de seleccionar el nodo activo i, la
primera de ella utilizando la nocion de una pila, es decir, se recorre la lista de nodos desde
el principio y se toma el primer nodo activo que se encuentre, luego de operar con dicho
nodo, se vuelve a recorrer la lista desde el principio hasta encontrar el nuevo nodo activo,
permitiendo as que el nodo que acaba de ser examinado vuelva a ser seleccionado si se
mantiene activo. La segunda manera es con la nocion de cola, en la que se recorre la lista
hasta encontrar un nodo activo y posteriormente se contin
ua la b
usqueda del siguiente
nodo activo partiendo de la posicion en que se encontraba el anterior nodo activo, as,
para que un nodo vuelva a ser seleccionado se debe haber recorrido toda la lista de nodos.
33
Captulo 4
Resultados Num
ericos
En un principio solo se programo el procedimiento FMC.1 siguiendo el plan de trabajo.
Sin embargo, los resultados no fueron satisfactorios por lo cual se decidio investigar en
busca de otro algoritmo que permitiera mejorar los resultados y que se ajustara a las
especificaciones originales del presente trabajo, es decir, que fuese un algoritmo polinomial
para el problema de Flujo de Mnimo Costo. Finalmente se decidio por otro algoritmo que
usa la misma tecnica de Escalamiento de Costo y que su implementacion no implicaba
muchos cambios al codigo que ya se tena, este algoritmo es el que definen en [1].
Cabe destacar que se consiguieron mejores resultados con el FMC.2, a su vez, su complejidad algortmica es mucho menor comparada con el FMC.1, lo que implico que su
entendimiento e implementacion tomo muchsimo menos tiempo que el empleado para el
FMC.1.
El factor de reduccion , que reduce en cada iteracion del algoritmo principal es
determinante para alcanzar las mejores soluciones. Se realizaron pruebas con valores de
0,4 a 0,9 con intervalos de 0,05. Con todas las pruebas realizadas se pudo determinar que
dicho parametro no puede ser menor a 0,55, debido a que con valores menores se presentan
problemas numericos en la ejecucion del algoritmo, llegando a detenerse por dichos errores,
ciclar infinitamente o dar resultados con un flujo no factible.
Otro punto menos crtico que el anterior, es el calculo de 1 (Algoritmo Principal) en
34
valor max tal que lij < xij + max yij < uij para todo (i, j) A, y luego es el
maximo valor tal que f (xij + yij ) < f (xij ), en donde toma los valores del intervalo
{ mahx 1, mahx 2, , mahx h}, con el valor de h fijado en 10, que en la practica ha
dado muy buenos resultados. Aqu tambien se probaron diferentes valores entre 10 y 50,
generando poca variacion de los resultados en la gran mayora de los casos. En los resultados que se veran a continuacion se hace mencion a un caso en que la diferencia fue
notable.
4.1.
Problemas Resueltos
4.1.1.
Grupo 1
1 5
2
CK
fK + CK
fK
donde fK representa el flujo total en el arco k (i.e. la suma total de los flujos de cada
producto que usan ese arco), y C 1 y C 2 vectores constantes dados.
36
4.1.2.
Grupo 2
El segundo grupo consta de problemas cuya funcion es cuadratica del tipo
xt Qx + ct x
4.1.3.
Grupo 3
Este grupo esta formado por problemas creados por Toint y Tuyttens [12] para realizar
pruebas numericas de algoritmos de optimizacion no lineal para flujo en redes.
Los problemas se construyen con la especificacion de tres parametros:
l : n
umero de ciclos que contiene la red a ser generada (l 1).
37
La red es una grilla cuadrada plana con n = (2l + 2)2 nodos y m = 2(2l + 1)(2l + 2)
arcos. En la figura 4.2 se observa la red para l = 2. El vector oferta - demanda esta dado
por: b1 = 1; bi = 0 (i = 2, . . . , n 1); bn = 10
En la red se distinguen 2l ciclos de la siguiente manera. Los primeros l ciclos se forman
al escoger los arcos de dos sucesivas lneas horizontales (sin tomar la primera y la u
ltima)
y los dos arcos verticales que las unen en las lneas mas a la izquierda y mas a la derecha.
Estos ciclos son numerados desde 1 hasta l, de abajo hacia arriba y son llamados ciclos
horizontales. Un conjunto de l ciclos verticales tambien son formados simetricamente y
son enumerados de izquierda a derecha. Los ciclos horizontales y verticales son destacados
con lneas discontinuas en la figura 4.2.
Luego, se define jk para k = 1, . . . , n como:
jk =
s
0
si el k
esimo arco pertenece al ciclo s
si el k
esimo arco no pertenece al ciclo s
1
100
n
P
k x2k +
k=1
1
a
100
f1 +
1
1200
10 +
n
P
k=1
con
f1 =
n1
Pp
k=1
38
(1)k xk
4 !
si jk 1
si jk = 0
generando as 9 problemas.
La cota superior para todos los arcos se fijo en 50.
39
4.2.
4.3.
Resultados
La version FMC.1 arrojo buenos resultados en los dos primeros grupos de problemas,
sin embargo no sucedio lo mismo para el tercer grupo. Una posible causa a esto puede ser
el hecho de que los costos que se generan en la Aproximacion Lineal son todos positivos
y en su mayora menores a 1, por lo que al aplicar el escalamiento, los nuevos costos son
iguales a 0, generando as problemas lineales donde la funcion objetivo es nula. La manera
de intentar resolver los problemas fue no aplicar dicho escalamiento, lo que no garantiza
la ejecucion en tiempo polinomial.
Para calcular un punto inicial factible de los problemas se implemento un metodo de
dos fases, haciendo uso de un problema auxiliar para encontrar dicho punto.
Cabe destacar que en el problema del grupo 1 se evidencio un estancamiento y una
lenta convergencia hacia la solucion con el punto inicial que se genera con el mismo progra40
ma, por lo que se realizaron otras pruebas con otro punto generado con otra herramienta
computacional, logrando mejores resultados. En los problemas del grupo 2 y 3 solo se trabajo con el punto inicial calculado con el mismo programa, obteniendo buenos resultados.
En cuanto a los tiempos de ejecucion, el algoritmo aqu programado es extremadamente
lento en el tiempo y en comparacion con el algortimo de Feijoo y Meyer [5]. Entre las dos
versiones del FMC se observa que la version 2 es menos lenta a la version 1. La caracterstica
de la lentitud en el FMC.1 es reportada por sus autores.
Para hacer referencia a todas o a cualquier version del FMC.2 se usara la letra X en el
espacio correspondiente a la version, con lo que queda FMC.2.X. El algoritmo de Feijoo y
Meyer con el que se comparan los resultados se referencia con AFyM.
Cuando se menciona un n
umero de iteraciones o se presenta la columna iter. en las
tablas de resultados, se hace referencia a la u
ltima iteracion en la cual la funcion objetivo
fue mejorada.
En general, se obtuvieron resultados aceptables, pero siempre los mejores resultados
(por diferencias menores de 0,001) los alcanza el algoritmo AFyM.
En el cuadro 4.1 se presenta un resumen de los 12 problemas resueltos.
4.3.1.
Problema Grupo 1
Grupo Tama
no
P1
1
40 56
P2
2
100 200
P3
2
100 500
Grupo
P4
3
P5
3
P6
3
P7
3
P8
3
P9
3
P10
3
P11
3
P12
3
valor c
2
10
100
2
10
100
2
10
100
valor a Tama
no
0,25
324 612
0,25
324 612
0,25
324 612
0,5
324 612
0,5
324 612
0,5
324 612
0,75
324 612
0,75
324 612
0,75
324 612
42
La idea computacional que se probo mejoro ligeramente los resultados, sin embargo,
por la ausencia de una razon teorica que la soporte, solo se hizo esta u
nica prueba.
En general, los mejores resultados se obtuvieron con un valor de entre 0,80 y 0,85
El mejor resultado obtenido y la comparacion con AFyM se muestra a continuacion.
Para ser consistente con las comparaciones y mantener el mismo criterio en todas ellas, el
resultado que se expresa en este cuadro (cuadro 4.2) corresponde al algoritmo con h = 10
y punto inicial calculado por el mismo programa. Sin embargo, el mejor resultado obtenido
se puede apreciar en el cuadro siguiente (cuadro 4.3). Para la version FMC.2.X el mejor
resultado fue 1013217,59166350 con = 0,70 en 50 iter. (en todas las versiones se obtuvo
el mismo resultado)
Version
iter
FMC.1 0,85 50
f (xoptimo )
AFyM
1011482,799999 1010540,640739138
En el cuadro 4.3 se observan los resultados con distintos valores de para la prueba con
el punto inicial calculado y con h = 30 para FMC.1 y h = 50 para FMC.2.X (aqu todas
las versiones dieron los mismos resultados). Se puede apreciar claramente la diferencia de
los resultados para distintos valores de
0,65
0,70
0,75
0,80
0,85
0,90
FMC.1. h = 30
FMC.2.X. h = 50
optimo
iter
f (x
)
iter
f (xoptimo )
50 1011126,826160 50 1012631,51110520
50 1012105,564878 50 1012359,49684831
50 1012837,773326 50 1012659,55002220
34 1013347,539843 25 1013853,40244722
46 1010574,305737 48 1010540,66227131
45 1014044,078541 50 1013867,80028369
43
4.3.2.
Problemas Grupo 2
Tal como era de esperarse, los resultados obtenidos con las distintas versiones del FMC
dieron resultados muy parecidos; en la mayora de los casos alcanzaron el mismo valor en la
funcion objetivo, salvo en peque
nas diferencias en los decimales. Para los casos FMC.2.X
se tienen exactamente los mismos resultados.
En los cuadros siguientes se aprecia el mejor resultado y la comparacion con AFyM
tanto para P2 como para P3.
Version
FMC.2.X
iter
0,55 23
f (xoptimo )
AFyM
5144368,15425 5144368,16924
Version
iter
FMC.1 0,65 38
f (xoptimo )
AFyM
17544848,2832 17544848,3966
Para P2, el mejor resultado en FMC.1 fue 5144368,15458 para = 0,70 en 42 iter.
y para P3, el mejor resultado en FMC.2.X fue 17544848,2856 para = 0,60 en 29 iter.
Viendo estos resultados y el de los cuadros 4.4 y 4.5 , se verifica la poca o casi inexistente
diferencia de los resultados con las distintas versiones del FMC.
4.3.3.
Problemas Grupo 3
lineales son menores a 1, por lo cual al aplicar el escalamiento, estos costos se transforman
en 0. Prueba de que el principio del algoritmo, sin el escalamiento en s, es coherente y
confiable se puede apreciar en el cuadro 4.6, en donde se observan los resultados para el
problema P8 con el algoritmo FMC.1 con el escalamiento aplicado y sin dicho escalamiento.
0,65
0,70
0,75
0,80
0,85
0,90
FMC.1.
iter
9
12
13
50
50
41
con escalamiento
f (xoptimo )
56,65751161
50,17731337
56,59974045
26,25696771
27,43629377
43,05514317
FMC.1.
iter
50
50
45
50
50
50
Sin Escalamiento
f (xoptimo )
16,59485787
14,24961626
14,24182630
14,24183215
14,24445463
15,06440914
Por otro lado, con FMC.2 se logro alcanzar los resultados esperados. En este grupo de
problemas s se aprecia una variacion de los resultados al comparar las distintas versiones
de FMC.2, una variacion que se presenta a partir del tercer decimal. En el cuadro 4.7 se
observan los mejores resultados alcanzados y la comparacion con AFyM. En dicho cuadro
se puede apreciar que la mayora de los mejores resultados se alcanzaron usando FMC.2.2
con un valor de = 0,80, por lo que se puede concluir que la version mas confiable para
resolver cualquiera de los problemas es dicha version conjuntamente con ese valor de .
Se realizo una prueba con la mejor version del FMC.2 aumentando el n
umero de iteraciones de 50 a 75 sin conseguir mejoras representativas (las mejoras son del orden de
106 ). Esto se puede observar en el cuadro 4.8 as como tambien los resultados obtenidos
para todos los problemas de este grupo.
45
Version
P4 FMC.2.2
P5 FMC.2.2
P6 FMC.2.4
P7 FMC.2.2
P8 FMC.2.2
P9 FMC.2.3
P10 FMC.2.1
P11 FMC.2.2
P12 FMC.2.2
iter
0.80 39
0.80 50
0.75 48
0.85 50
0.80 48
0.80 50
0.80 42
0.80 50
0.80 50
f (xoptimo )
6.792228
12.326012
52.004152
8.691859
14.242509
53.997968
10.586130
16.155107
55.989293
AFyM
6.791117
12.325154
52.003760
8.690508
14.241826
53.997553
10.584984
16.154452
55.988931
P4
P5
P6
P7
P8
P9
P10
P11
P12
iter
0,80 53
0,80 64
0,80 66
0,80 75
0,80 75
0,80 55
0,80 41
0,80 57
0,80 51
f (xoptimo )
6,792196714291
12,326009520446
52,004787039131
8,707386157511
14,242504005356
53,997981927170
10,586365220598
16,155106094221
55,989276675371
46
Captulo 5
Conclusiones y Recomendaciones
Las dificultades numericas resueltas en el transcurso de este trabajo fueron incontables,
destacando la presentada al intentar resolver los problemas del tercer grupo con el primer
algoritmo para FMC planteado. El determinar la posible causa a esos errores fue todo
un reto, as como tambien los intentos en resolverlo, desencadenando finalmente con la
programacion de otro algortimo para dichos problemas, saliendo de los objetivos planteados
en un principio.
El algoritmo aqu desarrollado plantea una tecnica funcional para resolver problemas
de flujo en redes con costos no lineales, sin embargo, los tiempos de ejecucion no son nada
competitivos por lo cual no se recomienda profundizar en su implementacion.
Los problemas lineales que se generan con el algoritmo planteado en este trabajo son
de gran tama
no y con un rango muy grande para los valores de los costos, por lo que
al aplicarle algoritmos de escalamiento generan subproblemas lineales escalados de gran
tama
no no factibles, por lo que se emplea mucho tiempo de ejecucion en determinar la
no factibilidad de dichos problemas, generando gran costo tanto computacional como de
tiempo.
Con el trabajo adicional de programar otro algoritmo para resolver los problemas lineales, se pudo realizar una comparacion implcita de dichos algoritmos, con lo cual se concluye
que el algoritmo planteado por Bland y Jensen [3] es mucho mas complicado y complejo,
47
48
Bibliografa
[1] AHUJA, R. K., MAGNANTI, T. L. y ORLIN, J. B., (1993), Network Flows: Theory,
Algorithms, and Applications, USA, Prentice Hall.
[2] BECK, P., LASDON, L. y ENGQUIST, M., (1983), Reduced Gradient Algorithm
for Nonlinear Network Problems, ACM Transactions on Mathematical Software, V.
9, No. 1, 57-70.
[3] BLAND, R. G. y JENSEN, D. L., (1992), On the computacional behavior of a
polynomial-time network flow algorithm, Mathematical Programming, V. 54, 1-39.
[4] FEIJOO, B. y MEYER, R. R, (1985), Optimization on the CRYSTAL Multicomputer, Computing 85: A Broad Perspective of Current Developments, Elsevier Science
Publishers B.V., 37-42.
[5] FEIJOO, B. y MEYER, R.R., (1988), Piecewise-linear approximation methods for
nonseparable convex optimization, Management Science, V. 34, No. 3, 411-419.
[6] KAMESAN, P. V. y MEYER, R. R., (1984), Multipoint Methods for Separable
Nonlinear Networks, Mathematical Programming Study, V. 22, 185-205.
[7] KAO, C. Y. y MEYER, R. R., (1981), Secant Aproximation Methods for Convex
Optimization, Mathematical Programming Study, V. 14, 143-162.
[8] KLINGMAN, D., NAPIER, A. y STUTZ, J., NETGEN: A Program for Generating
Large Scale Capacitated Assignment, Transportation, and Mini- mum Cost Flow
Network Problems, Management Science, Vol. 20, No. 5 (1974), 814-821.
[9] MEYER R. R., (1983), Computational Aspects of Two-Segment Separable Programming, Mathematical Programming, V. 26, 21-39.
[10] MURTAG, B. A. y SAUNDERS, M. A., (1983), MINOS 5.0 Users Guide, Technical Report SOL 83-20R, Systems Optimization Laboratory, Stanford University,
Stanford, CA.
[11] SOLORZANO, R., (2006), Un Generador de Problemas Cuadraticos de Redes y Experimentacion en NSNET, Universidad Sim
on Bolvar, Licenciatura en Matematicas, Proyecto de Grado.
49
[12] TOINT, Ph. L. y TUYTTENS, D.,(1990), On large scale nonlinear network optimization, Mathematical Programming, V. 48, 125-159.
[13] TOINT, Ph. L. y TUYTTENS, D.,(1992), LSNNO, A FORTRAN subroutine for
solving large-scale nonlinear network optimization problems, ACM Transactions on
Mathematical Software, V. 18, No. 3, 308-328.
50
Bernardo Feijoo
SOBRESALIENTE:
N DE PAGS:
MAESTRA EN:
50