trabajo fin de m aster -...
TRANSCRIPT
Trabajo Fin de Master
Problemas de rutas de vehıculosestocasticos
Juan Carlos Goncalves Dosantos
Master en Tecnicas Estadısticas
Curso 2016-2017
iii
Propuesta de Trabajo Fin de Master
Tıtulo en galego: Problemas de rutas de vehıculos estocasticos
Tıtulo en espanol: Problemas de rutas de vehıculos estocasticos
English title: Problems of stochastic vehicle routes
Modalidad: Modalidad A
Autor: Juan Carlos Goncalves Dosantos, Universidad de Santiago de Compostela
Directora: Balbina Virginia Casas Mendez, Universidad de Santiago de Copostela
Breve resumen del trabajo:
En este Trabajo Fin de Master se incluira una introduccion a la Programacion Estocastica yse revisara el formato SMPS utilizado en el modelado de este tipo de problemas. A continua-cion, se estudiaran algunos modelos y soluciones existentes en la literatura de los problemasde rutas de vehıculos estocasticos.
v
Dona Balbina Virginia Casas Mendez, de la Universidad de Santiago de Copostela, informan que elTrabajo Fin de Master titulado
Problemas de rutas de vehıculos estocasticos
fue realizado bajo su direccion por don Juan Carlos Goncalves Dosantos para el Master en TecnicasEstadısticas. Estimando que el trabajo esta terminado, dan su conformidad para su presentacion ydefensa ante un tribunal.
En Santiago de Compostela, a 3 de septiembre de 2017.
La directora:
Dona Balbina Virginia Casas Mendez
El autor:
Don Juan Carlos Goncalves Dosantos
Indice general
Resumen IX
Introduccion XI
1. Introduccion a la optimizacion estocastica 11.1. Problemas de optimizacion determinista . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1. El problema del granjero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.1.2. Dualidad en programacion lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. Programacion estocastica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.1. Problema del granjero con incertidumbre . . . . . . . . . . . . . . . . . . . . . . 71.2.2. Propiedades basicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3. Metodos de solucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2. El formato SMPS 232.1. Archivo principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.2. Archivo de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.3. Archivo estocastico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.4. Un ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3. Problemas de rutas de vehıculos (VRP) 293.1. El problema de rutas de vehıculos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.2. El algoritmo de ahorros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.1. Un ejemplo de rutas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3. Panoramica sobre los problemas de rutas de vehıculos estocasticos . . . . . . . . . . . . 353.4. VRP con demanda estocastica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.4.1. Modelado de VRP con demanda estocastica . . . . . . . . . . . . . . . . . . . . . 363.4.2. Propiedades de las rutas con fallos . . . . . . . . . . . . . . . . . . . . . . . . . . 383.4.3. Heurıstica para VRP con demanda estocastica . . . . . . . . . . . . . . . . . . . 39
4. Una aplicacion 414.1. Descripcion del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.2. Resultados en el caso determinista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.3. Resultados en el caso estocastico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5. Conclusiones 55
A. Codigo en lenguaje SMPS 57
B. Codigo en lenguaje R 61
vii
Resumen
Resumen en espanol
En la actualidad, existe una mejora significativa en la recogida de todo tipo de datos. Esto haprovocado que la mayorıa de problemas tratados en investigacion operativa pasen a ser mas realistasy dinamicos.
Entre ellos destacamos los problemas de rutas de vehıculos, que han incorporado nuevas restriccio-nes aplicadas a datos en tiempo real y parametros estocasticos. Un caso concreto de esta situacion esconsiderar las demandas de los clientes como elementos aleatorios. Es por ello, que para comprenderel modelado de este tipo de problemas es necesaria una Introduccion a la Programacion Estocasti-ca, ası como, algun lenguaje de programacion que la soporte. Nosotros haremos mencion del formatoSMPS, Stochastic Mathematical Programming System, para modelar un problema de programa-cion. Para ası despues resolver estos problemas mediante algun solver disponible en el conocido servidorde optimizacion NEOS.
Pero dado el elevado coste computacional que requieren este tipo de problemas, nuestra intencion esutilizar algun metodo heurıstico que nos ayude a obtener soluciones factibles para nuestros problemas entiempos razonables. Para ello,vamos a considerar una adaptacion de la heurıstica del caso determinista,el conocido algoritmo de ahorros de Clarke y Wright, a nuestro contexto estocastico. Mostraremos sufuncionamiento en un problema real tomado del ambito de la logıstica agrıcola y programamos en Rambos algoritmos (determinista y estocastico). Finalmente, disenamos una interfaz grafica en R quefacilita la introduccion de los datos, la llamada a los algoritmos, la visualizacion de los resultados y larealizacion de analisis de post-optimalidad de manera rapida.
English abstract
Nowadays, there is a significant improvement in the data collection of every kind. This has causedthat the majority of problems treated in operative investigation pass to be more realistic and dynamic.
Between them we emphasize the problems of routes of vehicles which had incorporated new res-trictions applied to data in real time and stochastic parameters. A specific case of this situation isto consider the clients´demands as random elements. For this reason, to understand the modelling ofthese kinds of problems it is necessary an Introduction to the Stochastic Programming, as well as, someprogramming language which can support it. We will mention the format SMPS, Stochastic Mathe-matical Programming System, in order to model a problem of programming. In this way, later we willbe able to resolve these problems by some available solver in the well-known server of optimizationNEOS.
But given the elevated computational cost that these kinds of problems require, our intention is touse some heuristic method which can help us to obtain feasible solutions to our problems in reasonabletimes. In order to do this, we will consider an adaptation of the heuristic from the deterministic case,the well-known savings algorithm of Clarke and Wright, to our stochastic context. We will show itsworking in a real problem taken from the field of the agricultural logistic and we programme in R bothalgorithms (deterministic and stochastic). Finally, we design a graphic interface in R which facilitates
ix
x RESUMEN
the introduction of data, the call of the algorithms, the visualization of the results and the realizationof an analysis of post-optimality in a faster way.
Introduccion
En 1959, [DR59], bajo el nombre de “El problema de despachos de camiones”, propusieron unaserie de problemas con el objetivo de disenar una ruta optima de una serie de camiones de reparto degasolina entre un terminal y un gran numero de estaciones.
A dıa de hoy, conocemos estos modelos como problemas de rutas de vehıculos, V RP , y son unade las areas mas investigadas en programacion entera, que es una clase de problemas de investiga-cion operativa, dadas sus muchas aplicaciones en el mundo real, como el transporte y la logıstica dedistribucion.
El principal objetivo de este tipo de problemas es minimizar el coste total de una serie de rutas,disenadas para que un conjunto de vehıculos, desde un almacen, puedan satisfacer la demanda de unaserie de clientes, regresando al almacen de partida.
A lo largo de la literatura se han propuesto multiples versiones del modelo V RP original, a finde adaptarse lo mas posible a la realidad, y los diversos problemas que nos podemos encontrar. Sinembargo, muchos de estos modelos, aun dadas una cantidad imponente de restricciones, no tienen encuenta un aspecto importante, ya que no consideran el hecho de que los parametros que constituyenel problema en la vida real son aleatorios.
A diferencia de los V RP deterministas, los problemas de rutas de vehıculos estocasticos cuentan conuna literatura bastante dispersa y no organizada. Principalmente dado su alto coste computacional.
Es por ello, que en este trabajo nuestro interes es adentrarnos en los SV RP , problemas de rutasde vehıculos estocasticos, con la finalidad de proponer un metodo de solucion cuando las demandas delos clientes visitados son aleatorias.
De esta forma, la primera parte de este trabajo consistira en una introduccion a la programacionestocastica, con una pequena resena a la optimizacion determinista. Ademas, incluiremos varios ejem-plos, tanto con variables aleatorias discretas como continuas. Por ultimo, revisaremos un algoritmopara resolver problemas de programacion estocastica.
A continuacion, hablaremos sobre una de las formas de implementar problemas lineales estocasticoscon el fin de resolverlos mediante algun solver online almacenado en NEOS.
Para ya adentrarnos en el interes principal de este trabajo, los problemas de rutas de vehıculosestocasticos, empezaremos con una revision de los V RP deterministas, presentando una heurıstica pararesolverlos. Es entonces, cuando haremos una panoramica de los V RP estocasticos, para centrarnosen los casos donde la demanda es aleatoria. Llegados a este punto, adaptaremos la heurıstica del casodeterminista al modelo estocastico.
Una vez completado el capıtulo referente a la metodologıa de los problemas de rutas de vehıculos,continuaremos con una aplicacion de los algoritmos estudiados a un ejemplo de la vida real. Com-pletaremos el estudio del caso real con la realizacion de diversas simulaciones, mediante las cualescomparamos los resultados obtenidos en ambos casos, determinista y estocastico.
Finalizamos con una seccion en la cual presentamos las conclusiones a este trabajo de fin de master.
xi
Capıtulo 1
Introduccion a la optimizacionestocastica
En este capıtulo vamos a presentar los problemas de optimizacion estocastica, que son aquellos en losque uno o varios parametros del modelo son aleatorios. Entre las metas que pretende alcanzar nuestroestudio se haya el de encontrar una solucion que sea factible en todos, o casi todos, los determinadosescenarios posibles.
Para empezar, y para mayor claridad, haremos una breve introduccion a los problemas de opti-mizacion deterministas, que son aquellos donde todos los parametros del modelo son conocidos conanterioridad.
A continuacion, presentaremos los problemas de optimizacion estocastica, ası como algun ejemplocon variables discretas y continuas. Por ultimo, presentaremos algunas propiedades basicas que seranutiles y necesarias en el algoritmo de resolucion presentado.
1.1. Problemas de optimizacion determinista
En esta seccion, nuestro interes es hacer un breve recordatorio de algunos elementos de la opti-mizacion determinista. Empezamos mostrando la formulacion matematica de este tipo de problemas,y a continuacion, mencionamos las condiciones necesarias y suficientes para la existencia de solucionoptima. Para terminar, haremos referencia a los problemas duales en programacion lineal.
Los problemas de optimizacion buscan minimizar (mın) o maximizar (max) una funcionf : S ⊂ Rn → R, sujeta a un conjunto de restricciones establecido. Dado que maximizar una funcionf(x), es equivalente a minimizar −f(x), podemos restringirnos a los problemas de minimizacion. Elproblema de minimizacion se expresa como:
mın f(x)
Sujeto a x ∈ S.
En los problemas expresados de esta manera, la funcion f(x) es conocida como funcion objetivo, y elconjunto S como conjunto factible.
Un punto x ∈ S es una solucion optima global, si se verifica que para todo y ∈ S se tiene que f(x) ≤f(y). Una solucion optima local, x, es aquella tal que existe ε > 0 donde para todo y ∈ B(x, ε) ∩ S, setiene que f(x) ≤ f(y). Aquı B(x, ε) denota a todos los puntos que distan de x una distancia menor aε.
Pero en este tipo de problemas, normalmente, existe un conjunto de relaciones que se deben cumplir,llamadas restricciones. Estas son representadas por funciones gi : S ⊂ Rn → R, con
1
2 CAPITULO 1. INTRODUCCION A LA OPTIMIZACION ESTOCASTICA
i ∈ 1, ...,m, y hj : S ⊂ Rn → R, con j ∈ 1, ..., p. Por tanto, nuestro problema de optimizacion sepuede expresar de la forma:
mın f(x)
Sujeto a gi(x) ≤ 0 i ∈ 1, ...,mhj(x) = 0 j ∈ 1, ..., p.
Si en un problema de optimizacion la funcion objetivo es lineal, y las restricciones se expresan median-te un sistema de ecuaciones o inecuaciones tambien lineales, entonces estamos ante un denominadoproblema de programacion lineal.
A continuacion, el siguiente teorema nos aporta condiciones necesarias para la existencia de opti-malidad.
Teorema 1 ([KT51]) Consideremos un problema de programacion lineal en la forma anteriormenteexpuesta. Sean las funciones f , gi con i ∈ 1, ...,m y hj con j ∈ 1, ..., p continuamente diferencia-bles. Supongamos que x es una solucion optima local y los vectores gradiente Ogi(x), para todo i talque gi(x) = 0, y Ohj(x) son linealmente independientes. Entonces existen escalares λi, i ∈ 1, ...,m,y µj, j ∈ 1, ..., p, tales que:
Of(x) +
m∑i=1
λiOgi(x) +
p∑j=1
µjOhj(x) = 0
λigi(x) = 0 i ∈ 1, ...,mλi ≥ 0 i ∈ 1, ...,mgi(x) ≤ 0 i ∈ 1, ...,mhj(x) = 0 j ∈ 1, ..., p.
Ademas, las siguientes condiciones son suficientes para la existencia de un optimo global.
Teorema 2 ([KT51]) Consideremos un problema de programacion lineal en la forma anteriormen-te expuesta. Sean las funciones f y gi con i ∈ 1, ...,m continuamente diferenciables y convexas.Consideremos x ∈ Rn. Si existen escalares λi, i ∈ 1, ...,m, y µj, j ∈ 1, ..., p, tales que:
Of(x) +
m∑i=1
λiOgi(x) +
p∑j=1
µjOhj(x) = 0
λigi(x) = 0 i ∈ 1, ...,mλi ≥ 0 i ∈ 1, ...,mgi(x) ≤ 0 i ∈ 1, ...,mhj(x) = 0 j ∈ 1, ..., p,
entonces x es un optimo global.
Veamos ahora un ejemplo de optimizacion determinista para ilustrar lo visto en esta seccion queademas sirve de motivacion a los problemas estocasticos.
1.1.1. El problema del granjero
El siguiente problema es introducido en [BL11]. Un granjero cultiva maız, trigo y remolacha en sus500 hectareas de tierra. Durante el invierno, debe decidir cuanta tierra asignar a cada cultivo. Estesabe que necesita, al menos, 200 toneladas de trigo y 240 de maız para alimentar su ganado. Estascantidades pueden ser cultivadas en la granja o compradas a un mayorista. Los excesos de produccionse venden al precio de 170 y 150 dolares por tonelada de trigo y maız, respectivamente. Los precios
1.1. PROBLEMAS DE OPTIMIZACION DETERMINISTA 3
de compra son 238 y 210 dolares por tonelada, respectivamente. La remolacha se vende a 36 dolarespor tonelada, aunque cualquier produccion mayor a las 6000 toneladas sera vendida por 10 dolares.Por su experiencia, sabe que la produccion de cada cultivo por hectarea es de 2.5, 3 y 20 toneladaspara el trigo, maız y remolacha, respectivamente. Sabiendo que el coste por hectarea es de 150, 230 y260 dolares por trigo, maız y remolacha, respectivamente, nos interesa planificar la asignacion a cadacultivo para obtener el mayor beneficio posible.
Consideremos las siguientes variables del problema de optimizacion:
x1 = hectareas de tierra dedicadas al trigo,
x2 = hectareas de tierra dedicadas al maız,
x3 = hectareas de tierra dedicadas a la remolacha,
w1 = toneladas de trigo vendidas,
w2 = toneladas de maız vendidas,
w3 = toneladas de remolacha vendidas a 36 dolares,
w4 = toneladas de remolacha vendidas a 10 dolares,
y1 = toneladas de trigo compradas,
y2 = toneladas de maız compradas.
El problema queda formulado de la siguiente manera:
mın 150x1 + 230x2 + 260x3 + 238y1 − 170w1 + 210y2 − 150w2 − 36w3 − 10w4
Sujeto a x1 + x2 + x3 ≤ 500
2.5x1 + y1 − w1 ≥ 200
3x2 + y2 − w2 ≥ 240
w3 + w4 ≤ 20x3
w3 ≤ 6000
x1, x2, x3, y1, y2, w1, w2, w3, w4 ≥ 0.
Si resolvemos este problema, vease Apendice A, obtenemos los resultados que aparecen en el Cuadro1.1:
Trigo Maız Remolacha
Hectareas Cultivadas 120 80 300
Toneladas Obtenidas 300 240 6000
Toneladas Vendidas 100 −A 36$: 6000
A 10$: −
Toneladas Compradas − −
Ganancias Netas: 118600
Cuadro 1.1: Solucion al problema del granjero.
4 CAPITULO 1. INTRODUCCION A LA OPTIMIZACION ESTOCASTICA
Por tanto, de la solucion deducimos que el granjero debe utilizar suficientes hectareas para laremolacha de manera que no se sobrepase el lımite de 6000 toneladas. El resto de hectareas es repartidaentre trigo y maız de manera que se cubran los mınimos posibles, y las hectareas sobrantes se utilizanen aquel producto que proporcione mayores beneficios.
1.1.2. Dualidad en programacion lineal
En esta seccion presentaremos el denominado problema dual, ya que la solucion de este sera utilizadaen el algoritmo que presentaremos al final de este capıtulo.
Aunque, entre el problema original y el dual, existen una serie de relaciones interesantes y de granutilidad para la obtencion de solucion ante modelos aparentemente no factibles, en esta seccion soloharemos mencion de la transformacion de nuestro problema en su version dual, para ası obtener lasolucion de este.
Consideremos el siguiente problema lineal, tambien llamado primal,
mın cTx
Sujeto a Ax = b
x ≥ 0
donde A es una matriz de dimension m × n, c y x vectores de Rn, y b ∈ Rm. Entonces el problemadual asociado al primal es de la forma
max πT b
Sujeto a πTA ≤ cT
donde las variables π son llamadas variables duales, o en determinados contextos, precios sombra omultiplicadores.
El problema dual tiene solucion optima si y solo si el problema dual tiene solucion optima. Ademas,en ambos problemas la funcion objetivo, en el optimo, tomara el mismo valor.
A continuacion podemos observar en el Cuadro 1.2 las relaciones primal dual, que nos indica el tipode desigualdad, o igualdad, que debemos tomar en cada restriccion y variable al pasar del problemaprimal al dual.
1.2. Programacion estocastica
En esta seccion veremos la formulacion del modelo general de un problema de programacion es-tocastica. En este tipo de problemas alguno o todos los parametros son variables aleatorias, pero seconoce una distribucion de probabilidad asociada a los mismos.
En los programas estocasticos bietapa, presentados originalmente por [Dan55] y [Bea55], existen unconjunto de decisiones que deben tomarse sin la informacion completa de algunos eventos aleatorios,es decir, antes del experimento aleatorio. Estas decisiones son llamadas decisiones de primera etapa ylas representamos por x, donde x ∈ Rn, y el perıodo donde estas decisiones son tomadas lo llamaremosprimera etapa. Por ejemplo, en el problema del granjero, las decisiones de primera etapa pueden sercuantas hectareas dedicar a cada cultivo.
Mas tarde, toda la informacion se recibe a traves de algun vector aleatorio ξ, se utilizara la letranegrita para denotas los vectores aleatorios y ası distinguirlos de sus realizaciones. Tras esto, sontomadas las decisiones de segunda etapa y, correspondientes al perıodo de segunda etapa. Estasdecisiones difieren como resultado del experimento aleatorio y de las decisiones de primera etapa.(Notese que para cada realizacion de ξ el problema estocastico se convierte en determinista, por tanto,puede no existir un vector x que sea optimo, ni siquiera factible, para todas las realizaciones de los
1.2. PROGRAMACION ESTOCASTICA 5
Problema de minimizacion Problema de maximizacion
Restricciones Variables
≥ ≥ 0
= Sin restriccion
≤ ≤ 0
Variables Restricciones
≥ 0 ≤
Sin restriccion =
≤ 0 ≥
Cuadro 1.2: Relaciones primal dual.
parametros aleatorios). En el problema del granjero, el vector aleatorio es el conjunto de rendimientosy las decisiones de segunda etapa (“acciones correctivas”) son las compras y ventas de los productos.A veces usaremos notacion funcional ξ(w) o y(s) para mostrar explıcitamente la dependencia de algunelemento subyacente.
La formulacion matematica del denominado problema de programacion estocastica en dos etapascon recursos es como sigue:
mın cTx+ EξQ(x, ξ)
Sujeto a Ax = b
x ≥ 0
donde c ∈ Rn es el vector de costes, A la matriz de restriccion de dimension m1×n , b ∈ Rm1 el vectorde recursos y Eξ denota la esperanza matematica respecto a ξ. Ademas:
Q(x, ξ) = mın qTy
Sujeto a Wy = h− Txy ≥ 0
donde ξ esta formado por las componentes q, h y T de dimensiones n1, m2 y m2×n, respectivamente,donde cada componente de q,h y T es una realizacion de la variable aleatoria ξ. Asumimos que W es
una matriz, de dimension m2 × n1, fija, de manera que ξT =(qT ,hT ,T 1·, ...,Tm1·
)tiene dimension
N = n1 +m2 + (m2 × n), donde T i· es la fila i−esima de T para i ∈ 1, ...,m2.En el problema del granjero supondremos que el vector aleatorio es discreto con 3 valores distintos.
Solo T es aleatorio. El problema de segunda etapa para un escenario particular s se puede escribir ası:
Q(x, ξ) = mın238y1 − 170w1 + 210y2 − 150w2 − 36w3 − 10w4
Sujeto a t1(s)x1 + y1 − w1 ≥ 200; t2(s)x2 + y2 − w2 ≥ 240
w3 + w4 ≤ t3(s)x3; w3 ≤ 6000
y, w ≥ 0
6 CAPITULO 1. INTRODUCCION A LA OPTIMIZACION ESTOCASTICA
donde ti(s) representa el rendimiento del cultivo i bajo el escenario s (en este caso, estado de lanaturaleza s).
Si consideramosQ(x) = EξQ(x, ξ) como el valor de la funcion o funcion recurso, podemos considerarel problema estocastico de la siguiente forma, aun mas condensada:
mın cTx+Q(x)
Sujeto a Ax = b
x ≥ 0
(1.1)
Cualquiera de los modelos que acabamos de introducir se denominan representaciones implıcitasdel problema estocastico.
Si las decisiones de primera etapa y/o segunda etapa son enteras, las restricciones x ≥ 0 y/o y ≥ 0se sustituyen por:
x ∈ X, y ∈ Y
donde X = Zn+ e Y = Zn1+ .
Estos problemas son llamados programas de recurso, porque en ellos se pueden tomar decisiones oacciones de recurso despues de que se divulgue la incertidumbre. En estos, tomamos x con la presenciade incertidumbre sobre las realizaciones futuras, aun ası, se tiene en cuenta sus efectos futuros a travesde Q(x), que calcula el valor esperado de tomar la decision x. En la segunda etapa, el valor real de ξes conocido, y se pueden tomar algunas acciones correctivas o decisiones de recurso.
Vistos los problemas de programacion estocastica bietapa, podemos formular aquellos en los cualesexisten un numero finito de posibles decisiones futuras, de la manera siguiente:
mın cT1 x1 + Eξ1
[mın cT2 x
2 + ...+ EξH−1(mın cTHxH)]
Sujeto a W 1x1 = h1
T 1x1 +W 2x2 = h2
···TH−1xH−1 +WHxH = hH
x1,xt ≥ 0, t = 2, ...,H
donde c1 ∈ Rn1 , h1 ∈ Rm1 y ξtT
=(ct+1
T ,ht+1T ,T t1·, ...,Ttmt·
)para t = 1, ...,H − 1. Las variables
de la t−esima etapa estan indexados por el resultado de los eventos aleatorios ocurridos en etapasanteriores para todo t = 2, ...,H. Asumimos que W t es una matriz, de dimension mt × nt, fija paratodo t = 1, ...,H.
Como se puede ver, en el modelo matematico del problema de programacion estocastico multietapa,modelar problemas de gran escala puede llevar una dificultad computacional demasiado elevada. Es porello, que muchas veces se reemplazan las variables aleatorias por sus valores esperados para resolverlos.Pero, este tipo de soluciones, puede alejarse del optimo del problema estocastico. Con esto surgen dosconceptos asociados a las soluciones.
El valor esperado de la informacion perfecta, (EV PI), representa la perdida de beneficios debido ala presencia de incertidumbre. Este valor es la diferencia entre la informacion perfecta, (WS), que esel valor optimo que se obtiene cuando conoces lo que va a pasar, y la solucion optima, (RP ), obtenidaal considerar la incertidumbre y resolver el problema. Por tanto,
EV PI = WS −RP.
1.2. PROGRAMACION ESTOCASTICA 7
Notese que si el problema es de minimizar se invierten los elementos de la operacion.EL valor de la solucion estocastica, (V SS), representa las perdidas por usar la solucion del valor
esperado, (EEV ), al utilizar la media de las variables aleatorias y no considerar la incertidumbre. Portanto,
V SS = EEV −RP.
Notese que si el problema es de minimizar se invierten los elementos de la operacion.Veamos ahora un ejemplo para poner en practica los conceptos vistos en esta seccion, para ello
continuaremos con el ejemplo del granjero pero ahora vamos a considerar incertidumbre en los rendi-mientos de los diferentes cultivos. A tal fin, vamos a considerar dos casos, uno con variables discretasy otro con continuas.
1.2.1. Problema del granjero con incertidumbre
Consideremos entonces nuevamente el problema del granjero visto anteriormente. En este, comohemos dicho en la seccion anterior, podemos considerar que las decisiones de primera etapa son lashectareas dedicadas a cada cultivo, mientras que, las decisiones de segunda etapa son las compras yventas de cada cultivo.
1) Caso discreto.
Supongamos que el rendimiento para cada cultivo puede darse en tres escenarios distintos, con igualprobabilidad. En el primer escenario el rendimiento es un 20 % menos de lo que supone el granjero,en el segundo escenario los rendimientos son los supuestos por el granjero y por ultimo, en el tercerescenario, son un 20 % mas. Por tanto tenemos los rendimientos para cada tipo de escenario recogidosen el Cuadro 1.3:
Trigo Maız Remolacha
Rendimientos primer escenario 2 2.4 16
Rendimientos segundo escenario 2.5 3 20
Rendimientos tercer escenario 3 3.6 24
Cuadro 1.3: Rendimientos para cada cultivo en los diferentes escenarios.
Podemos calcular, de manera independiente, las soluciones para cada escenario. El codigo utilizadopuede ser visto en el Apendice A, y obtenemos las soluciones de los Cuadros 1.4 y 1.5.
8 CAPITULO 1. INTRODUCCION A LA OPTIMIZACION ESTOCASTICA
Primer escenario Trigo Maız Remolacha
Hectareas 100 25 375
Toneladas Obtenidas 200 60 6000
Toneladas Vendidas − −A 36$: 6000
A 10$: −
Toneladas Compradas − 180
Ganancias Netas: 59950
Cuadro 1.4: Solucion al problema del granjero para el primer escenario.
Tercer escenario Trigo Maız Remolacha
Hectareas 183.33 66.67 250
Toneladas Obtenidas 550 240 6000
Toneladas Vendidas 350 −A 36$: 6000
A 10$: −
Toneladas Compradas − −
Ganancias Netas: 167667
Cuadro 1.5: Solucion al problema del granjero para el tercer escenario.
1.2. PROGRAMACION ESTOCASTICA 9
Estas soluciones pueden ser calculadas si el granjero sabe con anterioridad lo que va a pasar. Sinembargo, debido a la incertidumbre de cada escenario, este, debe maximizar los beneficios sin saberque rendimientos obtendra de su cosecha.
Para ello vamos a crear un nuevo ındice, s = 1, 2, 3, correspondiente a cada escenario para lasdecisiones de segunda etapa. De manera que tenemos wis y yjs con i = 1, 2, 3, 4, j = 1, 2 y s = 1, 2, 3,con significado analogo al utilizado en el apartado 1.1.1.
Entonces el problema a minimizar es:
mın 150x1 + 230x2 + 260x3 +1
3(+238y11 − 170w11 + 210y21 − 150w21 − 36w31 − 10w41)
+1
3(+238y12 − 170w12 + 210y22 − 150w22 − 36w32 − 10w42)
+1
3(+238y13 − 170w13 + 210y23 − 150w23 − 36w33 − 10w43)
Sujeto a x1 + x2 + x3 ≤ 500
2x1 + y11 − w11 ≥ 200, 2.5x1 + y12 − w12 ≥ 200
3x1 + y13 − w13 ≥ 200, 2.4x2 + y21 − w21 ≥ 240
3x2 + y22 − w22 ≥ 240, 3.6x2 + y23 − w23 ≥ 240
w31 + w41 ≤ 16x3, w31 ≤ 6000, w32 + w42 ≤ 20x3
w32 ≤ 6000, w33 + w43 ≤ 24x3, w33 ≤ 6000
x1, x2, x3, yjs, wis ≥ 0, j = 1, 2; i = 1, 2, 3, 4; s = 1, 2, 3;
Notese, que esta forma de escribir el problema de programacion estocastica, se llama forma extensivaya que describe las decisiones de segunda etapa para todos los escenarios posibles.
La solucion optima, (RP ), se puede ver en el Cuadro 1.6, con los diferentes rendimientos obtenidosen cada escenario. El codigo utilizado se muestra en el Apendice A.
Trigo Maız Remolacha
Decisiones de primera etapa Hectareas 170 80 250
Primer escenario Toneladas Obtenidas 340 192 4000
Segundo escenario Toneladas Obtenidas 425 240 5000
Tercer escenario Toneladas Obtenidas 510 288 6000
Ganancias Netas: 108390
Cuadro 1.6: Solucion al problema del granjero con incertidumbre, 3 escenarios.
Visto esto podemos calcular el valor esperado de la informacion perfecta, (EV PI). Para ello nece-sitamos conocer la informacion perfecta, (WS). Si suponemos que el clima es cıclico, el granjero puedetomar primero la solucion del Cuadro 1.4, despues la del Cuadro 1.1 y por ultimo el Cuadro 1.5. Yası volver a empezar. Obteniendo unos beneficios, a largo plazo, de 115406. Por tanto EV PI = 7016,que equivalen a las perdidas por no conocer lo que va a pasar.
10 CAPITULO 1. INTRODUCCION A LA OPTIMIZACION ESTOCASTICA
Ademas, podemos calcular la solucion del valor esperado. Para ello, utilizaremos las hectareasobtenidas en la solucion de la produccion media, segundo escenario, con los diferentes rendimientossegun el tipo de escenario. Estos resultados, ası como, la ganancia media pueden ser vistos en el Cuadro1.7.
Trigo Maız Remolacha
Decisiones de primera etapa Hectareas 120 80 300
Primer escenario Toneladas Obtenidas 240 192 4800
Segundo escenario Toneladas Obtenidas 300 240 6000
Tercer escenario Toneladas Obtenidas 360 288 7200
Ganancias Netas: 107240
Cuadro 1.7: Solucion del valor esperado al problema del granjero.
Por tanto el valor de la solucion estocastica, (V SS), es 1150, que equivalen a las perdidas por nocalcular la solucion al problema estocastico.
2) Caso continuo.
Ahora supongamos que, si los rendimientos para los diferentes cultivos son independientes, estossiguen una distribucion uniforme para cada uno de ellos. El rango de cada cultivo viene dado por [li, ui]donde i = 1, 2, 3 con 1 trigo, 2 maız y 3 remolacha, y que li es el 80 % del rendimiento y ui el 120 %.Por ejemplo, para la remolacha el rendimiento seguira una distribucion uniforme de rango [16, 24]. Ası,tenemos que la media de cada cultivo es la produccion original, propuesta por el agricultor.
Como suponemos que los rendimientos son independientes, podemos considerar:
EξQ(x, ξ) =
3∑i=1
EξQi(xi, ξ) =
3∑I=1
Qi(xi)
donde Qi(xi, ξ) es el valor optimo de la segunda etapa de las compras y ventas del cultivo i. Podemoscalcular la expresion analıtica del valor Qi(xi) para cada i. Veamos, paso a paso, como obtener Q3(x3)para la remolacha. Tenemos:
Q(x3, ξ) = mın −36w3(ξ)− 10w4(ξ)
Sujeto a w3(ξ) + w4(ξ) ≤ t3(ξ)x3
w3(ξ) ≤ 6000
w3(ξ), w4(ξ) ≥ 0
donde t3(ξ) es el rendimiento aleatorio de la produccion de remolacha por hectarea. Sabemos que w3
viene dado por la maxima venta a buen precio, mientras que, w4 son las ventas al superar las 6000unidades vendidas. Entonces:
w3(ξ) = mın6000, t3(ξ)x3w4(ξ) = maxt3(ξ)x3 − 6000, 0
1.2. PROGRAMACION ESTOCASTICA 11
Por tanto:
Q3(x3, ξ) = −36 mın6000, t3(ξ)x3 − 10 maxt3(ξ)x3 − 6000, 0
Visto esto, nos podemos encontrar en tres situaciones. Primero supongamos que:
l3x3 ≤ 6000 ≤ u3x3 ⇔ l3 ≤6000
x3≤ u3
Entonces se tiene:
Q3(x3) = EξQ3(x3, ξ3)
= −∫ 6000
x3
l3
36tx3f(t)dt
= −∫ u3
6000x3
(216000 + 10tx3 − 60000)f(t)dt
donde f(t) es la funcion de densidad de t3(ξ). Como este sigue una distribucion uniforme en el intervalo[16, 24] se tiene que:
Q3(x3) = −720x3 +13(24x3 − 6000)2
8x3.
Ahora veamos que ocurre cuando l3x3 > 6000. Las decisiones de segunda etapa son:
w3(ξ) = 6000
w4(ξ) = t3(ξ)x3 − 6000
para cualquier realizacion de ξ. Por tanto:
Qξ(x3, ξ) = −216000− 10(t3(ξ)x3 − 6000) = −156000− 10t3(ξ)x3
y tenemos que el valor esperado es:
Q3(x3) = −156000− 200x3.
En la ultima situacion, suponemos que u3x3 < 6000. Por tanto las decisiones de segunda etapa son:
w3(ξ) = t3(ξ)x3
w4(ξ) = 0
para cualquier realizacion de ξ. Por tanto:
Qξ(x3, ξ) = −36t3(ξ)x3
y tenemos que el valor esperado es:
Q3(x3) = −720x3.
Por tanto tenemos que el valor esperado para el cultivo de la remolacha es:
Q3(x3) =
−720x3 si x3 < 250
−720x3 + 13(24x3−6000)2
8x3si 250 ≤ x3 ≤ 375
−156000− 200x3 si x2 > 375.
12 CAPITULO 1. INTRODUCCION A LA OPTIMIZACION ESTOCASTICA
De igual manera, obtenemos para los otros dos cultivos sus valores esperados. Para el trigo:
Q1(x1) =
47600− 595x1 si x1 < 200/3
119 (200−2x1)2
x1− 85 (200−3x1)2
x1si 200/3 ≤ x3 ≤ 100
34000− 425x1 si x1 > 100.
Y para el maız:
Q2(x2) =
50400− 630x2 si x2 < 200/3
87.5 (240−2.4x2)2
x2− 62.5 (240−3.6x2)2
x2si 200/3 ≤ x2 ≤ 100
36000− 450x2 si x2 > 100.
Entonces el problema de optimizacion es de la forma:
mın 150x1 + 230x2 + 260x3 +Q1(x1) +Q2(x2) +Q3(x3)
Sujeto a x1 + x2 + x3 ≤ 500
x1, x2, x3 ≥ 0
Ante el problema que nos encontramos podemos destacar que es convexo y diferenciable, ya que lasdecisiones de primera etapa son lineales y las tres funciones, respectivas a la segunda etapa, sonconvexas, continuas y diferenciables. Por el Teorema 2, disponemos de condiciones que son necesariasy suficientes para la existencia de un optimo global. Aplicando las condiciones de Kuhn − Tuckertenemos:
ci +∂Qi(xi)∂xi
+ λ = 0
λ (x1 + x2 + x3 − 500) = 0
x1 + x2 + x2 ≤ 500
λ, x1, x2, x3 ≥ 0
donde ci es el coeficiente que representa el coste de produccion de cada cultivo por hectarea y λ elmultiplicador asociada a la restriccion. Si asumimos que la solucion es tal que x1 ≥ 100, 200
3 ≤ x2 ≤ 100y 250 ≤ x3 ≤ 375 con λ 6= 0, entonces se tiene:
−275 + λ = 0
−76− 1.44 · 106
x22
+ λ = 0
476− 5.85 · 107
x23
+ λ = 0
x1 + x2 + x3 = 0
Y obtenemos la solucion del Cuadro 1.8.
1.2. PROGRAMACION ESTOCASTICA 13
Trigo Maız Remolacha
Hectareas 135.83 85.07 279.10
Ganancias Netas: 111237.4
Cuadro 1.8: Solucion al problema del granjero con incertidumbre.
1.2.2. Propiedades basicas
Las siguientes propiedades que vamos a presentar son especificas del caso discreto, es decir, cuandoξ es una variable aleatoria discreta. Ademas, vamos a considerar las decisiones de primera y segundaetapa variables continuas.
Estas propiedades enuncian condiciones importantes y necesarias para la solucion algorıtmica denuestro problema que veremos mas adelante.
Definimos el conjunto determinado por las restricciones fijas
K1 = x/Ax = b, x ≥ 0.
Vease que este conjunto no depende del valor aleatorio.Para cualquier ξ dado, definimos el conjunto de factibilidad elemental como
K2(ξ) = x/ existe y ≥ 0 sujeto a W (w)y = h(w)− T (w)x
donde w ∈ Ω es el conjunto de todos los resultados posibles del experimento aleatorio que se realizanen la segunda etapa. Por tanto, para cada realizacion w tenemos W (w), h(w) y T (w) conocidos.
Dado que ξ es discreta, podemos definir el conjunto de factibilidad de segunda etapa como
K2 =⋂ξ∈Ξ
K2(ξ)
tal que Ξ ⊂ N es el soporte de ξ, es decir, el conjunto mas pequeno que verifica Pξ ∈ Ξ = 1.A mayores, definimos la envoltura positiva de W como
posW = t/Wy = t, y ≥ 0
que representa el conjunto de lados derechos que pueden obtenerse mediante una combinacion nonegativa de W .
Despues de introducir estos conjuntos, podemos enunciar los siguientes teoremas.
Teorema 3 ([BL11])
Para un valor de ξ dado, el conjunto K2(ξ) es un poliedro convexo.
Cuando ξ es una variable aleatoria discreta finita, K2 es un poliedro convexo.
Teorema 4 ([BL11]) Para un ξ dado, el valor de Q(x, ξ) es
una funcion lineal convexa por partes en (h, T ),
una funcion lineal concava por partes en q,
una funcion lineal convexa por partes en x para todo x ∈ K2.
14 CAPITULO 1. INTRODUCCION A LA OPTIMIZACION ESTOCASTICA
Cuando ξ es una variable aleatoria discreta finita, Q(x) es una funcion lineal convexa por partes enK2.
Tal y como se esperarıa en la mayorıa de los casos, supongamos que existe una solucion optimade nuestro problema de programacion estocastica. De las condiciones vistas en los Teoremas 1 y 2obtenemos el siguiente resultado.
Teorema 5 ([BL11]) Supongamos que (1.1) tiene un valor optimo finito. Una solucion x ∈ K1 es
optimo de (1.1) si y solo si existen λ ∈ Rm1 , µ ∈ Rn+ con µT x = 0, tal que,
+AT λ+ µ ∈ ∂Q(x).
En algunos ejemplos, puede suceder que una o mas restricciones no se mantengan casi seguro comohemos mencionado hasta ahora. En su lugar, pueden estar sujetas a alguna probabilidad o nivel deconfianza. Estas restricciones son de la forma
Pg(x,y, ξ) ≤ 0 ≥ α
donde 0 < α < 1. Ademas, la restriccion que g(·) ≤ 0 puede contener varias restricciones bajo unarepresentacion vectorial, tales como g(x,y, ξ) = h−Ax, o g(x,y, ξ) = h− Tx−Wy.
Suponemos que ξ es una variable aleatoria discreta con un numero finito de escenarios. Represen-
tamos las realizaciones por ξ1, ..., ξK , donde cada escenario k tiene probabilidad pk, y
K∑k=1
pk = 1.
Considerando la funcion indicadora
η(a) =
0 si a ≤ 0
1 si ∃ ai > 0, i = 1, ..., n,
la restriccion sujeta a probabilidad es equivalente a
K∑k=1
pkη(g(x, yk, ξk)) ≤ 1− α.
Entonces, si existe para cada escenario k un vector uk tal que g(x, yk, ξk) ≤ uk para todo x, ykfactibles, se tiene que la restriccion de probabilidad puede ser transformada en
K∑k=1
pkwk ≤1− α
g(x, yk, ξk) ≤ukwk k = 1, ...,K
wk ∈ 0, 1 k = 1, ...,K
donde la variable binaria wk hace el rol de la funcion indicadora. Por tanto, hemos visto como trans-formar una restriccion de probabilidad en un problema de programacion entero mixto.
1.3. METODOS DE SOLUCION 15
1.3. Metodos de solucion
En la seccion 1.2.1 hemos visto el problema del granjero con incertidumbre en el caso discreto.Este era un problema estocastico con dos etapas y un numero finito de realizaciones para el vectoraleatorio. A traves de la forma extensiva, hemos convertido nuestro problema estocastico en un modelodeterminista. El problema surge cuando el vector aleatorio esta formado por muchas realizaciones, yaque se convierte en un problema demasiado extenso para resolver de manera directa.
Para evitar estos tiempos de computacion, el metodo mas utilizado se basa en aproximar el terminono lineal en el objetivo, funcion de recurso, de estos problemas a traves de una linealizacion externa.Debido a que la funcion de recurso implica una solucion de todos los programas lineales de segundaetapa, queremos evitar numerosas evaluaciones de funciones en la misma. Por tanto, utilizaremos esetermino para construir un problema maestro en x, pero solo evaluaremos la funcion de recurso comosi se tratase de un subproblema.
Esta tecnica de planos de corte se llama el metodo L− shaped en programacion estocastica.Para aplicar este algoritmo vamos a suponer que ξ es una variable aleatoria discreta, donde ξ1, ..., ξK
son las posibles realizaciones con probabilidades pk, ∀k ∈ 1, ...,K.En el Cuadro 1.9 podemos ver el esquema de nuestro algoritmo, para ello, vamos a suponer un
problema formulado como en la Seccion 1.2 .
16 CAPITULO 1. INTRODUCCION A LA OPTIMIZACION ESTOCASTICA
Metodo L− shapedPASO 0Tomamos r = v = s = 0.PASO 1Sea v = v + 1. Resolvemos el problema lineal (maestro)
mın z =cTx+ θ (1.2)
Sujeto a Ax = b (1.3)
Dlx ≥ dl l = 1, ..., r (1.4)
Elx+ θ ≥ el l = 1, ..., s (1.5)
x ≥ 0 θ ∈ R (1.6)
Obtenemos la solucion optima (xv, θv). Si s = 0 tomamos θv = −∞ y resolvemos el problema linealsin considerar esta variable.PASO 2Si xv ∈ K2 ir al PASO 3. En caso contrario, anadir una restriccion (1.4) como sigue.
Para todo k = 1, ...,K resolvemos el problema lineal
mınw′
=eT v+ + eT v−
Sujeto a Wy + Iv+ − Iv− = hk − Tkxv
y ≥ 0, v+ ≥ 0, v− ≥ 0
donde eT = (1, ..., 1) e I es la matriz identidad, hasta que, para algun k, el valor optimo, w′, sea
estrictamente mayor que cero. Tras esto, sean σv los multiplicadores sımplex asociados y definimos
Dr+1 = (σv)TTk
dr+1 = (σv)Thk
y ya tenemos la restriccion (1.4) creada, esta restriccion se llama corte de factibilidad. Tomamosr = r + 1 y volvemos al PASO 1. Si para todo k, w
′= 0 pasamos al PASO 3.
PASO 3Para todo k = 1, ...,K, resolvemos el problema lineal
mınw =qTk y
Sujeto a Wy = hk − Tkxv
y ≥ 0
Considerando πvk los multiplicadores sımplex asociados a la solucion optima del problema anterior paratodo k, definimos
Es+1 =
K∑k=1
pk(πvk)TTk
es+1 =
K∑k=1
pk(πvk)Thk
Sea wv = es+1 − Es+1xv. Si θv ≥ wv, la solucion optima del problema estocastico es xv. En caso
contrario, s = s+ 1, se anade una restriccion (1.5) y volver al PASO 1.
Cuadro 1.9: Esquema del algoritmo L− shaped
1.3. METODOS DE SOLUCION 17
Como podemos observar, el algoritmo busca aproximar el programa estocastico a traves del pro-grama maestro, utilizando una linealizacion externa de Q. A traves de los cortes de factibilidad (1.4)determinamos el conjunto K2, y los cortes de optimalidad (1.5) buscan aproximar Q en su dominio definitud.
Ahora, vamos a resolver el siguiente ejemplo a traves del metodo L − shaped. Con el, ademas,ilustramos los cortes de optimalidad.
mın z =100x1 + 150x2 + Eξ(q1y1 + q2y2)
Sujeto a x1 + x2 ≤ 120
6y1 + 10y2 ≤ 60x1
8y1 + 5y2 ≤ 80x2
y1 ≤ d1y2 ≤ d2x1 ≥ 40, x2 ≥ 20,y1,y2 ≥ 0
donde ξT = (d1,d2, q1, q2) toma los valores (500, 100,−24,−28) y (300, 300,−28,−32) con probabili-dades 0.4 y 0.6, respectivamente.
En nuestra situacion, para todo x1 ≥ 40 y x2 ≥ 20 siempre existe un vector y factible. Comotenemos que d ≥ 0, podemos tomar los valores y1 = 0 e y2 = 0. Entonces, x ∈ K2 para todo x factiblede nuestro problema. Por tanto, podemos omitir el PASO 2 del algoritmo.
Ahora el metodo sigue de la siguiente manera.
Iteracion 1
Tomamos r = v = s = 0.
PASO 1
Sea v = v + 1. Dado que s = 0, θv = −∞, e ignoramos el valor de θ del problema maestro.Resolvemos
mın z =100x1 + 150x2
Sujeto a x1 + x2 ≤ 120
x1 ≥ 40, x2 ≥ 20
y obtenemos la solucion (xv)T = (40, 20).
PASO 3
Resolvemos para k = 1
mınw =− 24y1 − 28y2
Sujeto a 6y1 + 10y2 ≤ 60 · 40
8y1 + 5y2 ≤ 80 · 20
0 ≤ y1 ≤ 500
0 ≤ y2 ≤ 100
y obtenemos los multiplicadores sımplex πT1 = (0,−3, 0,−13).
Resolvemos para k = 2
18 CAPITULO 1. INTRODUCCION A LA OPTIMIZACION ESTOCASTICA
mınw =− 28y1 − 32y2
Sujeto a 6y1 + 10y2 ≤ 60 · 40
8y1 + 5y2 ≤ 80 · 20
0 ≤ y1 ≤ 300
0 ≤ y2 ≤ 300
y obtenemos la los multiplicadores sımplex πT2 = (−2.32,−1.76, 0, 0).Considerando hTk = (0, 0,d1,d2), calculamos
es+1 = 0.4 · πT1 · h1 + 0.6 · πT2 · h2 = −520.
Sea la matriz
T =
−60 0
0 −80
0 0
0 0
.
Entonces se tieneEs+1 = 0.4 · πT1 · T + 0.6 · πT2 · T = (83.52, 180.48)
Por ultimo, calculamos
wv = −520− (83.52, 180.48) · xv = −7470.4 > θv = −∞
Por tanto, consideramos s = s+ 1 y volvemos al PASO 1.
Iteracion 2Tomamos v = s = 1 y r = 0.PASO 1Sea v = v + 1. Resolvemos el problema maestro
mın z =100x1 + 150x2 + θ
Sujeto a x1 + x2 ≤ 120
x1 ≥ 40, x2 ≥ 20
83.52x1 + 180.48x2 + θ ≥ −520
y obtenemos la solucion (xv)T = (40, 80) y θv = −18299.2.PASO 3Resolvemos para k = 1
mınw =− 24y1 − 28y2
Sujeto a 6y1 + 10y2 ≤ 60 · 40
8y1 + 5y2 ≤ 80 · 80
0 ≤ y1 ≤ 500
0 ≤ y2 ≤ 100
1.3. METODOS DE SOLUCION 19
y obtenemos los multiplicadores sımplex πT1 = (−4, 0, 0, 0).Resolvemos para k = 2
mınw =− 28y1 − 32y2
Sujeto a 6y1 + 10y2 ≤ 60 · 40
8y1 + 5y2 ≤ 80 · 80
0 ≤ y1 ≤ 300
0 ≤ y2 ≤ 300
y obtenemos los multiplicadores sımplex πT2 = (−3.2, 0,−8.8, 0).Calculamos
es+1 = 0.4 · πT1 · h1 + 0.6 · πT2 · h2 = −1584
yEs+1 = 0.4 · πT1 · T + 0.6 · πT2 · T = (211.2, 0)
Por ultimo, calculamos
wv = −1584− (211.2, 0) · xv = −100032 > θv = −18299.2
Por tanto, consideramos s = s+ 1 y volvemos al PASO 1.
Iteracion 3Tomamos v = s = 2 y r = 0.PASO 1Sea v = v + 1. Resolvemos el problema maestro
mın z =100x1 + 150x2 + θ
Sujeto a x1 + x2 ≤ 120
x1 ≥ 40, x2 ≥ 20
83.52x1 + 180.48x2 + θ ≥ −520
211.2x1 + θ ≥ −1584
y obtenemos la solucion (xv)T = (66.828, 53.172) y θv = −15697.994.PASO 3Resolvemos para k = 1
mınw =− 24y1 − 28y2
Sujeto a 6y1 + 10y2 ≤ 60 · 66.828
8y1 + 5y2 ≤ 80 · 53.172
0 ≤ y1 ≤ 500
0 ≤ y2 ≤ 100
y obtenemos los multiplicadores sımplex πT1 = (0,−3, 0,−13).Resolvemos para k = 2
mınw =− 28y1 − 32y2
Sujeto a 6y1 + 10y2 ≤ 60 · 66.828
8y1 + 5y2 ≤ 80 · 53.172
0 ≤ y1 ≤ 300
0 ≤ y2 ≤ 300
20 CAPITULO 1. INTRODUCCION A LA OPTIMIZACION ESTOCASTICA
y obtenemos los multiplicadores sımplex πT2 = (−3.2, 0,−8.8, 0).Calculamos
es+1 = 0.4 · πT1 · h1 + 0.6 · πT2 · h2 = −2104
yEs+1 = 0.4 · πT1 · T + 0.6 · πT2 · T = (115.2, 96)
Por ultimo, calculamos
wv = −2104− (115.2, 96) · xv = −14907.0976 > θv = −15697.994
Por tanto, consideramos s = s+ 1 y volvemos al PASO 1.
Iteracion 4Tomamos v = s = 3 y r = 0.PASO 1Sea v = v + 1. Resolvemos el problema maestro
mın z =100x1 + 150x2 + θ
Sujeto a x1 + x2 ≤ 120
x1 ≥ 40, x2 ≥ 20
83.52x1 + 180.48x2 + θ ≥ −520
211.2x1 + θ ≥ −1584
115.2x1 + 96x2 + θ ≥ −2104
y obtenemos la solucion (xv)T = (40, 33.75) y θv = −9952.PASO 3Resolvemos para k = 1
mınw =− 24y1 − 28y2
Sujeto a 6y1 + 10y2 ≤ 60 · 40
8y1 + 5y2 ≤ 80 · 33.75
0 ≤ y1 ≤ 500
0 ≤ y2 ≤ 100
y obtenemos los multiplicadores sımplex πT1 = (−2.08,−1.44, 0, 0).Resolvemos para k = 2
mınw =− 28y1 − 32y2
Sujeto a 6y1 + 10y2 ≤ 60 · 40
8y1 + 5y2 ≤ 80 · 33.75
0 ≤ y1 ≤ 300
0 ≤ y2 ≤ 300
y obtenemos los multiplicadores sımplex πT2 = (−3.2, 0,−8.8, 0).Calculamos
es+1 = 0.4 · πT1 · h1 + 0.6 · πT2 · h2 = −1584
yEs+1 = 0.4 · πT1 · T + 0.6 · πT2 · T = (165.12, 46.08)
1.3. METODOS DE SOLUCION 21
Por ultimo, calculamos
wv = −1584− (165.12, 46.08) · xv = −9744 > θv = −9952
Por tanto, consideramos s = s+ 1 y volvemos al PASO 1.
Iteracion 5Tomamos v = s = 4 y r = 0.PASO 1Sea v = v + 1. Resolvemos el problema maestro
mın z =100x1 + 150x2 + θ
Sujeto a x1 + x2 ≤ 120
x1 ≥ 40, x2 ≥ 20
83.52x1 + 180.48x2 + θ ≥ −520
211.2x1 + θ ≥ −1584
115.2x1 + 96x2 + θ ≥ −2104
165.12x1 + 46.08x2 + θ ≥ −1584
y obtenemos la solucion (xv)T = (46.667, 36.25) y θv = −10960.PASO 3Resolvemos para k = 1
mınw =− 24y1 − 28y2
Sujeto a 6y1 + 10y2 ≤ 60 · 46.667
8y1 + 5y2 ≤ 80 · 36.25
0 ≤ y1 ≤ 500
0 ≤ y2 ≤ 100
y obtenemos los multiplicadores sımplex πT1 = (0,−3, 0,−13).Resolvemos para k = 2
mınw =− 28y1 − 32y2
Sujeto a 6y1 + 10y2 ≤ 60 · 46.667
8y1 + 5y2 ≤ 80 · 36.25
0 ≤ y1 ≤ 300
0 ≤ y2 ≤ 300
y obtenemos la los multiplicadores sımplex πT2 = (−3.2, 0,−8.8, 0).Calculamos
es+1 = 0.4 · πT1 · h1 + 0.6 · πT2 · h2 = −2104
yEs+1 = 0.4 · πT1 · T + 0.6 · πT2 · T = (115.2, 96)
Por ultimo, calculamoswv = −2104− (115.2, 96) · xv = −10960 = θv
Por tanto el algoritmo finaliza. Y tenemos que la solucion optima a nuestro problema estocastico esxT = (46.667, 36.25).
Capıtulo 2
El formato SMPS
En este capıtulo veremos una de las formas de implementar programas lineales estocasticos, paradespues resolverlos mediante algun solver disponible en el servidor de NEOS, [CMM98]; [Dol01];[GM97]. Podemos encontrar el enlace a internet en [NEO17]. NEOS es un servicio, con acceso gratuito,que permite resolver problemas de optimizacion numerica, incluyendo programacion lineal, entera yno lineal, a traves de internet mediante sus mas de 60 solvers.
EL formato SMPS que es el que presentamos en este capıtulo, [GK08], requiere de tres archivos detexto que debemos crear: un archivo principal, un archivo de tiempo y un archivo estocastico. Podemosver ejemplos de utilizacion de este lenguaje en el Apendice A.
La estructura es igual para los tres archivos:
Registro de codigo Columnas 2− 3
Primer registro de letras Columnas 5− 12
Segunda registro de letras Columnas 15− 22
Primer registro numerico Columnas 25− 36
Tercer registro de letras Columnas 40− 47
Segundo registro numerico Columnas 50− 61
Cuadro 2.1: Estructura de un archivo en lenguaje SMPS.
Ademas, se usa una cabecera con el nombre del programa.
2.1. Archivo principal
El archivo principal enumera toda la informacion determinista del problema. En el, incluimos losnombres de las filas y columnas, ası como el tipo de cada restriccion. Ademas, anadimos los valoresde las variables que despues seran reemplazados de manera estocastica, para lo cual le asignaremos unvalor que no tiene que ser significativo.
La estructura es siempre de la siguiente forma:NAME. El nombre del problema se da en el segundo registro de nombre. Este debe ser el mismo
para los archivos de tiempo y estocastico.
23
24 CAPITULO 2. EL FORMATO SMPS
ROWS. En esta seccion indicamos el nombre de la funcion objetivo, el tipo de cada restriccion ysu nombre. En el registro de codigo indicamos el tipo de restriccion y en el primer registro de letrasel nombre de la fila. De manera que, L indica restricciones de menor o igual, E de igualdad y G demayor o igual. Indicamos N para la funcion objetivo.
COLUMNS. Damos los coeficientes distintos de cero de la matriz de restriccion en orden deaparicion. El registro de codigo aparece vacıo. Entonces, en el primer registro de letras se escribe elnombre de la variable, o columna, en el segundo registro de letras el nombre de la fila en la que aparecey en el primer registro numerico el valor del coeficiente. Podemos utilizar el tercer registro de letraspara indicar otra fila, en la que aparezca, y darle el valor del coeficiente en el segundo registro numerico.
RHS. En esta seccion indicamos el valor derecho de cada restriccion. En el primer registro denombre indicamos un nombre de identificacion, (RHS), y en el segundo registro de nombre la fila ala cual, en el primer registro numerico, damos el valor de su restriccion. Al igual que en la seccionCOLUMNS podemos anadir otra fila, indicando su nombre en el tercer registro de letras y su valoren el segundo registro numerico. Notese que las restricciones iguales a cero no es necesario indicarlas.
ENDATA. Se termina el archivo principal.
2.2. Archivo de tiempo
En el archivo de tiempo dividimos cada escenario en las distintas etapas del problema. La estructuraes de la forma:
TIME. En el segundo registro de letras indicamos el nombre del problema, que debe coincidir conel del archivo principal y estocastico.
PERIODS. Como cabecera, escribimos en el primer registro de letras PERIODS. Para esta secciontenemos dos casos. Si en el archivo principal, las variables estan en orden de asignacion, entonces soloes necesario indicar en el primer registro de letras el nombre de la primera variable de cada etapa,ası como la fila, a la que pertenece, en el segundo registro de nombre. Si estas no estan en orden,debemos indicar en el segundo campo de letras de la cabecera la palabra EXPLICIT, e indicar en unalista completa de columnas y filas a la etapa que pertenecen.
ENDATA. Se termina el archivo de tiempo.
2.3. Archivo estocastico
En el archivo estocastico aportamos informacion sobre las variables aleatorias, para ası construir unproblema determinista equivalente. Tenemos diferentes formas, dependiendo del problema, de construireste archivo.
STOCH. En el segundo registro de letras indicamos el nombre del problema, que debe coincidircon el del archivo principal y de tiempo.
SCENARIOS. Este es el formato mas utilizado debido a su flexibilidad, ya que permite modelardependencia tanto entre periodos de tiempo como dentro de los mismos. Para ello, describimos unarbol de sucesos de manera explıcita.
Cada escenario, representa un camino desde un nodo raız hasta un nodo final, llamados hojas. Lasramas de un perıodo pueden ser compartidas entre escenarios, lo que permite comprimir el tamano delarchivo estocastico permitiendo no repetir informacion redundante.
Para codificar la informacion, utilizamos dos tipos de registros. Primero indicamos en el registro decodigo, SC, despues en el primer registro de letras el nombre del escenario. En el segundo registro deletras el escenario del cual se ramifica, y en el supuesto caso de ser el primer escenario, escribiremos lapalabra ROOT . En el primer registro numerico, indicamos la probabilidad de que ocurra esa ruta. Porultimo, en el tercer registro de letras se anade el perıodo de tiempo en el cual empieza la ramificacion.
Dentro de cada escenario anadiremos, en una lista, de manera que en el primer registro de letrasaparezca el nombre de la columna, en el segundo registro de letras el nombre de la fila y en el primerregistro numerico el valor de esa variable.
2.4. UN EJEMPLO 25
BLOCKS. En esta seccion, mostramos como anadir vectores aleatorios multidimensionales dondelas componentes pueden estar correlacionadas pero son independientes de otros elementos aleatoriosdel problema. En la cabecera, en el primer registro de letras indicamos la palabra BLOCKS y en elsegundo registro de letras el tipo de bloque, por ejemplo, DISCRETE o MVNORMAL.
En el caso de bloques del tipo DISCRETE, anadimos en el registro de codigo BL, en el primerregistro numerico el nombre del bloque y en el segundo registro numerico el perıodo en el que efectuamoslos cambios, por ultimo en el primer registro numerico la probabilidad de que suceda este conjunto devalores. Dentro de cada bloque anadiremos, en una lista, de manera que en el primer registro de letrasaparezca el nombre de la columna, en el segundo registro de letras el nombre de la fila y en el primerregistro numerico el valor de esa variable.
ENDATA. Se termina el archivo estocastico.
2.4. Un ejemplo
En esta seccion vamos a detallar la forma de proceder en NEOS una vez creados los 3 archivos detexto. Para ello, haremos uso del problema del granjero con incertidumbre en el caso discreto.
El archivo principal que vamos a utilizar es de la forma:
NAME FARMER
ROWS
N WEALTH
L BUDGET
G BAL1
G BAL2
L BAL3
L BAL4
COLUMNS
X1 BUDGET 1.00 BAL1 +2.5
X2 BUDGET 1.00 BAL2 +3
X3 BUDGET 1.00 BAL3 -20
Y1 BAL1 1.00
Y2 BAL2 +1.00
W1 BAL1 -1.00
W2 BAL2 -1.00
W3 BAL3 +1.00 BAL4 +1.00
W4 BAL3 +1.00
X1 WEALTH 150
X2 WEALTH 230
X3 WEALTH +260
Y1 WEALTH +238
Y2 WEALTH +210
W1 WEALTH -170
W2 WEALTH -150
W3 WEALTH -36
W4 WEALTH -10
RHS
RHS BUDGET 500 BAL1 200
RHS BAL2 240 BAL4 6000
ENDATA
26 CAPITULO 2. EL FORMATO SMPS
Como podemos ver, este esta formado por el nombre del problema, el nombre de cada restriccion,ası como, si es de igualdad, menor e igual o mayor e igual. Ademas, la fila WEALTH es la funcionobjetivo ya que en el registro de codigo indicamos N . A continuacion, se muestran las variables quecomponen cada restriccion y el valor del coeficiente que les acompana. Por ultimo, indicamos el valorderecho de cada restriccion y de no aparecer se considera el valor 0.
El archivo de tiempo es de la forma:
TIME FARMER
PERIODS
X1 BUDGET TODAY
Y1 BAL1 TOMORROW
ENDATA
Dado que las variables estan ordenadas en el archivo principal, solo debemos indicar la primeravariable de cada etapa. En este caso, desde X1 hasta X3 son las variables de la primera etapa, y apartir de Y 1, todas las demas variables pertenecen a la segunda etapa.
Por ultimo, el archivo estocastico es de la forma:
STOCH FARMER
BLOCKS DISCRETE
BL BLOCK1 TOMORROW 0.33334
X1 BAL1 2.5
X2 BAL2 3
X3 BAL3 -20
BL BLOCK1 TOMORROW 0.33333
X1 BAL1 3
X2 BAL2 3.6
X3 BAL3 -24
BL BLOCK1 TOMORROW 0.33333
X1 BAL1 2
X2 BAL2 2.4
X3 BAL3 -16
ENDATA
En este archivo hemos utilizado el tipo BLOCKS. Con igual probabilidad, hemos construido tresvectores aleatorios multidimensionales independientes, que aportan el valor de los rendimientos de losdiferentes cultivos en los tres escenarios.
Una vez creados los tres archivos de texto, accederemos a NEOS a traves del enlace que nosproporciona [NEO17]. Una vez dentro, en la seccion de solvers debemos buscar aquel relacionado conel tipo de problema que intentamos resolver, problemas lineales estocasticos. En la Figura 2.1 podemosver los solvers disponibles en NEOS para nuestro caso.
Figura 2.1: Solvers disponibles en NEOS para resolver problemas de programacion lineal estocastica.
Nosotros, en esta situacion, utilizaremos el solver bnbs ya que soporta el formato SMPS queestamos tratando en este capıtulo. A continuacion, en la Figura 2.2 apreciamos los elementos de
2.4. UN EJEMPLO 27
entrada que debemos anadir sobre nuestro problema, es decir, archivo principal, de tiempo y estocastico.Ademas, debemos indicar el LP -solver (el solver para problemas de programacion lineal) que se va autilizar, por ejemplo CPLEX.
Figura 2.2: Formulario de elementos de entrada y algoritmos para el solver bnbs.
Una vez resuelto el problema, en la Figura 2.3 podemos apreciar los resultados que proporcionaNEOS.
Figura 2.3: Resultados obtenidos en NEOS de nuestro problema.
Aquı podemos ver el valor de la funcion objetivo, optimal value, 108390. Por otra parte, en lacolumna superior derecha tenemos los valores de las variables X1, X2 y X3 comunes a los tres esce-narios, y el valor de las variables Y 1, Y 2,W1,W2,W3 y W4 en cada escenario, es decir, segun el tipode rendimiento.
Capıtulo 3
Problemas de rutas de vehıculos(VRP)
En este capıtulo hablaremos sobre los problemas de rutas de vehıculos, [GRWE08], ası como de suformulacion matematica. Mas adelante veremos un metodo heurıstico para resolverlos, ya que, debidoa la alta complejidad de estos problemas, los metodos exactos suelen ser demasiado lentos computacio-nalmente. Es por ello, que estas formas de resolucion son procedimientos simples que mediante unaaproximacion intuitiva consiguen una solucion de alta calidad. Por ultimo, aplicaremos lo visto en estecapıtulo a algun ejemplo.
Los problemas de rutas de vehıculos consisten en abastecer una demanda de servicios para unconjunto de clientes. Desde uno o varios depositos, con una flota de vehıculos, debemos encontrar rutasoptimas, es decir, con el menor coste posible, que comiencen y terminen en los depositos, visitando alos diferentes clientes una unica vez.
Las diferentes caracterısticas de los problemas de rutas dan lugar a la siguiente clasificacion:
Demanda Restricciones de capacidad Nombre del problema
NodosNo Problema del viajante (TSP )
Sı Problema de rutas de vehıculos (V RP )
ArcosNo Problema del cartero chino o rural (CPP ) o (RPP )
Sı Problema de rutas con capacidades (CARP )
Cuadro 3.1: Clasificacion de los problemas de rutas.
Ademas, existen otro tipo de restricciones, como un horario de servicio asociado a cada cliente,multiples depositos, entre otras. Nosotros vamos a centrarnos en los problemas de rutas de vehıculos(V RP ).
3.1. El problema de rutas de vehıculos
Para empezar, debemos definir la red que une tanto a los clientes entre ellos mismos como con eldeposito, ası como los costes de circular por ella.
29
30 CAPITULO 3. PROBLEMAS DE RUTAS DE VEHICULOS (VRP)
Sea la red G = (V,E,C) donde V es el conjunto de clientes, representados por nodos desde 1hasta n y 0 representa el deposito, y se tiene di como la demanda del nodo i para todo i ∈ V \0.En esta situacion E indica el conjunto de caminos que unen cada par de nodos y que tienen unoscostes asociados, es decir, (i, j) ∈ E es el camino de i hasta j con coste cij . En nuestro caso, vamos asuponer que siempre existe un camino que une cualquier par de nodos, en cuyo caso denominaremos aG completo. Por ultimo, disponemos de una flota de K vehıculos con una capacidad conocida e iguala C.
Suponiendo que cada cliente ha de ser visitado una unica vez, por un unico vehıculo, tal que todaslas rutas deben empezar y acabar en el deposito y la suma de las demandas de los clientes visitados nopuede exceder la capacidad del vehıculo, nos interesa encontrar el conjunto de rutas de mınimo coste.
Este problema puede ser descrito de la siguiente manera:
mın∑i∈V
∑j∈V
cij
K∑k=1
xijk (3.1)
Sujeto a
K∑k=1
yik = 1, ∀i ∈ V \0 (3.2)
K∑k=1
y0k = K (3.3)∑j∈V
xijk =∑j∈V
xjik = yik, ∀i ∈ V, k = 1, ...,K (3.4)
∑i∈V
diyik ≤ C, ∀k = 1, ...,K (3.5)∑i∈S
∑j /∈S
xijk ≥ yhk, ∀S ⊆ V \0, h ∈ S, k = 1, ...,K (3.6)
yik ∈ 0, 1, ∀i ∈ V, k = 1, ...,K (3.7)
xijk ∈ 0, 1, ∀i, j ∈ V, k = 1, ...,K (3.8)
donde yik = 1 si el vehıculo k, con k ∈ 1, ...,K, visita el cliente i, con i ∈ 0, ..., n, en otro casoyik = 0. Y xijk = 1 si el vehıculo k, con k ∈ 1, ...,K, viaja desde el cliente i, con i ∈ 0, ..., n, hastael cliente j, con j ∈ 0, ..., n, en otro caso xijk = 0.
Entonces se tiene que la funcion (3.1) es el coste total del problema, que buscamos minimizar. Larestriccion (3.2) indica que cada nodo sera visitado por un unico vehıculo, y (3.3) que del deposito saletoda la flota. Las restricciones (3.4) aseguran que todo cliente es visitado una unica vez en alguna ruta,y (3.5) que la demanda de los nodos visitados por un vehıculo no supere su capacidad de carga total.Por ultimo, las restricciones de la forma (3.6) eliminan cualquier posibilidad de subrutas, es decir,impide que se formen ciclos entre clientes.
Una vez visto el problema de rutas, proponemos el algoritmo de ahorros Clarke y Wright, [CW64],que es una heurıstica para resolver problemas de rutas de vehıculos.
Hay que tener en cuenta que el V RP presentado es un problema de programacion lineal entera.Los metodos de resolucion clasicos como ramificacion y acotacion o planos de corte solo son aplicablesen problemas pequenos. No obstante, tiene interes considerar estos metodos para validar el modelo opoder hacer comparaciones cuando aplicamos metodos heurısticos tanto de su exito (bondad de lassoluciones) como de su eficiencia (rapidez). [GRWE08] es una referencia adecuada para saber mas deestos metodos.
3.2. EL ALGORITMO DE AHORROS 31
3.2. El algoritmo de ahorros
Este algoritmo es uno de los mas utilizados para los problemas de rutas de vehıculos, dada susencillez y rapidez. Se basa en el calculo de los ahorros al unir dos nodos, clientes, y no tener quevolver al deposito en medio de dicho viaje. El ahorro para cualquier par i, j ∈ V \0 viene dado por:
Sij = ci0 + c0j − cij . (3.9)
Entonces la ecuacion (3.9) nos indica el coste ahorrado por viajar de i hacia j, es decir, utilizar elarco (i, j), en lugar de, utilizar los arcos (i, 0) y (0, j).
Por tanto, la descripcion algorıtmica del metodo esta representada en el Cuadro 3.2.
Algoritmo de Clarke y Wright
INICIALIZACIONPara cada cliente i ∈ V \0 crear la ruta (0, i, 0).
PASO 1Calcular los ahorros Sij = ci0 + c0j − cij para todo i, j ∈ V \0.
PASO 2Ordenar los ahorros de forma no decreciente.
PASO 3Considerar Sij = maxSij . Si Sij > 0 y considerando ri y rj , las rutas que contienen a i y j, si en
ri, i es el ultimo cliente y en rj , j es el primer cliente y ademas, las demandas de dichos clientes nosuperan la capacidad del vehıculo, la ruta es factible, eliminar los arcos (i, 0) y (j, 0) e implementar laruta (i, j). Eliminar los ahorros Sij = Sji.
PASO 4Repetir PASO 3 hasta que no existan mas fusiones posibles.
Cuadro 3.2: Esquema del algoritmo de Clarke y Wright
Notese que solo es necesario calcular los ahorros una vez para todo el algoritmo, por tanto, debenguardarse para no realizar el PASO 1 constantemente. Ademas, tengamos en cuenta que ahorros igualespueden dar lugar a soluciones distintas.
Veamos un ejemplo de problemas de rutas de vehıculos para poner a prueba esta heurıstica.
3.2.1. Un ejemplo de rutas
Un vehıculo tiene que visitar cuatro clientes, (A,B,C,D), y la ruta debe empezar y terminar en eldeposito, 0. Sabemos que el vehıculo es unico y tiene una capacidad de 10 unidades. No existe ningunotro tipo de restricciones.
Por tanto, en nuestro problema tenemos un grafo G = (V,E,C), tal que, V = 0, A,B,C,D y Ecorresponde a los arcos (i, j) de viajar desde el nodo i hasta el nodo j. Ademas, K = 1 y C = 10.
Ahora, nos dicen que los clientes A, B y D tienen una demanda igual a 2, mientras que C tieneuna demanda igual a 1.
En la Figura 3.1 podemos ver una representacion grafica de G, en la que no incluimos todos losarcos por motivos de orden.
Las distancias entre dos puntos i, j ∈ V estan representadas en la Tabla 3.3. En ella, podemosobservar que se obtiene una matriz simetrica, por tanto, esto nos dice que la distancia es igual en lasdos direcciones.
32 CAPITULO 3. PROBLEMAS DE RUTAS DE VEHICULOS (VRP)
A
B
0
C
D
Figura 3.1: Representacion del grafo G.
0 A B C D
0 − 6 4 5 3
A 6 − 4 8 4
B 4 4 − 1 4
C 5 8 1 − 3
D 3 4 4 3 −
Cuadro 3.3: Distancias entre nodos.
Ahora que tenemos todos los datos del problema, procedamos a la resolucion del mismo. Para elloutilizaremos el algoritmo de ahorros. Entonces implementamos las 4 rutas resultantes de ir desde eldeposito a cada cliente y volver, de la forma (0, i, 0) tal que i ∈ V \0. Tenemos que, el coste totalinicial de implementar este tipo de rutas es:
CT = c01 + c10 + c02 + c20 + c03 + c30 + c04 + c40 = 6× 2 + 4× 2 + 5× 2 + 3× 2 = 36.
Procedamos con el PASO 1 y calculemos los ahorros. Al ser la matriz de distancias simetrica setiene que Sij = Sji para cualquier par i, j ∈ V \0. Por tanto,
SAB = SBA = cA0 + c0B − cAB = 6 + 4− 4 = 6
SAC = SCA = cA0 + c0C − cAC = 6 + 5− 8 = 3
SAD = SDA = cA0 + c0D − cAD = 6 + 3− 4 = 5
SBC = SCB = cB0 + c0C − cBC = 4 + 5− 1 = 8
SBD = SDB = cB0 + c0D − cBD = 4 + 3− 4 = 3
SCD = SDC = cC0 + c0D − cCD = 5 + 3− 3 = 5
3.2. EL ALGORITMO DE AHORROS 33
En el PASO 2 debemos ordenador los ahorros de manera no decreciente, es decir,
SCA ≤ SAC ≤ SBD ≤ SDB ≤ SAD ≤ SDA ≤ SDC ≤ SCD ≤ SBA ≤ SAB ≤ SBC ≤ SCB
Y pasamos al PASO 3, donde debemos escoger el ahorro de mayor valor, que en nuestro caso esSCB = SBC > 0. Dado que el vehıculo tiene una capacidad de 10 unidades y las demandas de C y Bson 1 y 2, respectivamente, y ya que C es ultimo cliente en su ruta, (0, C, 0), y B primero, (0, B, 0),tenemos una ruta factible. Por tanto, eliminamos los arcos (C, 0) y (0, B) e implementamos el arco(C,B), con ruta resultante (0, C,B, 0) = (0, B,C, 0), por ser la matriz de distancias simetrica. Porultimo, eliminamos los ahorros SBC y SCB .
Cualquier eleccion de otro ahorro que contenga a C y B es factible, ya que la capacidad sobrante delvehıculo es 7. Por lo que ahora, el ahorro de mayor valor es SAB = SBA > 0. Como B es ultimo clientede la ruta (0, C,B, 0), y A primero de (0, A, 0), tenemos una ruta factible. Por tanto, eliminamos losarcos (B, 0) y (0, A) e implementamos el arco (B,A), con ruta resultante (0, C,B,A, 0) = (0, A,B,C, 0).Por ultimo, eliminamos los ahorros SAB y SBA.
La capacidad disponible de nuestro vehıculo es de 5 unidades, por lo que podemos seguir visitandoclientes. Ahora, el ahorro de mayor valor es SCD = SDC > 0. Como C es ultimo cliente de la ruta(0, A,B,C, 0), y D primero de (0, D, 0), tenemos una ruta factible. Por tanto, eliminamos los arcos(C, 0) y (D, 0) e implementamos el arco (C,D), con ruta resultante (0, A,B,C,D, 0). Por ultimo,eliminamos los ahorros SCD y SDC .
Terminamos nuestro algoritmo, al no tener mas rutas factibles a escoger. Las rutas resultantespueden verse en la Figura 3.2, y ya que la matriz de distancias es simetrica, la direccion de las rutases irrelevante. Tenemos un coste de Cvrp = 6 + 4 + 1 + 3 + 3 = 17.
A
B
0
C
D
Figura 3.2: Solucion del ejemplo del problema de rutas de vehıculos.
Ahora, supongamos que la demanda del cliente C es aleatoria. Es decir, vamos a suponer que lademanda de C es 1 o 7 con probabilidad igual a 1
2 , en cada caso. Ya que la capacidad del vehıculo esde 10 unidades, no podemos considerar la ruta obtenida con el algoritmo de ahorros, ya que cuandola demanda es de 7 unidades esa ruta no es factible. Por tanto, el tratamiento de la incertidumbredepende del momento en que este disponible la informacion. Para ello, veamos tres formas de procederque proporcionan diferentes soluciones.
La solucion informacion perfecta, (WS), es cuando se conoce la demanda antes de iniciar la ruta, ypodemos hacer la eleccion de la ruta optima despues de obtener la informacion del nivel de la demanda.
Si la demanda en C es 1, el vehıculo puede satisfacer la demanda en los 4 clientes. La solucionoptima es la calculada anteriormente de coste 17.
Si la demanda en C es 7, es necesario recorrer dos rutas ya que el vehıculo no puede llevar tantoen un solo viaje. Las rutas resultantes son (0, C,B, 0) y (0, A,D, 0) con un coste total de 23.
34 CAPITULO 3. PROBLEMAS DE RUTAS DE VEHICULOS (VRP)
Como ambas situaciones ocurren con la misma probabilidad, las rutas de costes 17 y 23 se recorrenmedio tiempo cada una. Por tanto, la media de distancia viajada es:
WS =1
2× 17 +
1
2× 23 = 20.
La solucion del valor esperado, (EEV ), es cuando la demanda no se conoce de antemano, solo alllegar a C. Si tenemos en cuenta la demanda esperada del cliente C, es decir, 1
2×1+ 12×7 = 4, tenemos
que la capacidad del vehıculo es suficiente para todos los clientes y la ruta optima es (0, A,B,C,D, 0),calculada anteriormente.
Pero esto no significa que no existe incertidumbre. La demanda de C se revela al llegar al cliente,por tanto,
Cuando la demanda de C es 1, la demanda total es 7 y el vehıculo puede satisfacer a todos losclientes. La solucion optima es la calculada anteriormente de coste 17.
Si al llegar a C la demanda es 7, la carga del vehıculo es de 4 unidades por lo que el vehıculo nopuede satisfacer al cliente C, debe volver al deposito antes de continuar con su trayecto. Por loque la solucion vendra dada de la forma (0, A,B,C, 0, C,D, 0) con un coste de 27.
Al igual que en la situacion anterior, ambos casos ocurren con la misma probabilidad, las rutas decostes 17 y 27 se recorren medio tiempo cada una. Por tanto, la media de distancia viajada es:
EEV =1
2× 17 +
1
2× 27 = 22.
La solucion optima, (RP ), busca mejorar la eleccion de la ruta al considerar la aleatoriedad.Observemos que, en esta situacion, la ruta optima obtenida (0, A,B,C,D, 0) puede ser recorrida
siguiendo el orden (0, D,C,B,A, 0) sin cambiar el coste total. En esta situacion,
Si la demanda al llegar a C es 1, el vehıculo puede satisfacer a todos los clientes. La ruta optimaes la considerada anteriormente de coste 17.
En otra situacion, si la demanda de C es 7, el vehıculo puede satisfacer a C, ya que solo havisitado D con demanda 2. Una vez en C el vehıculo debe volver al deposito y continuar sutrayecto. Por tanto, la ruta del vehıculo es de la forma (0, D,C, 0, B,A, 0) con un coste de 25.
Ya que ambas situaciones ocurren con igual probabilidad, la media de distancia viajada es:
1
2× 17 +
1
2× 24 = 21.
Tener que decidir sobre la ruta planificada es una decision de primera etapa, tomada antes deconocer los parametros aleatorios. Cuando se revela la incertidumbre son posibles acciones adicionaleso de segunda etapa.
Buscando nuevas soluciones, si planeamos la siguiente ruta (0, C,B,A,D, 0), cuando la demandade C es 1 el coste total es de 17. Sin embargo, cuando la demanda es 7 recorremos las rutas (0, C,B, 0)y (0, A,D, 0) con ruta resultante (0, C,B, 0, A,D, 0) de coste 23. Por tanto,
RP =1
2× 17 +
1
2× 23 = 20.
De todo esto, se sigue que:WS ≤ RP ≤ EEV
es decir, siempre es mejor obtener la informacion por adelantado, y en caso de no ser posible, es mejorresolver el problema estocastico que pretender que la incertidumbre no exista.
3.3. PANORAMICA SOBRE LOS PROBLEMAS DE RUTAS DE VEHICULOS ESTOCASTICOS35
3.3. Panoramica sobre los problemas de rutas de vehıculos es-tocasticos
En el ejemplo anterior, hemos visto que algunos parametros del problema V RP pueden ser alea-torios. Cuando nos encontramos en esta situacion estamos ante problemas de rutas de vehıculos es-tocasticos, SV RP . Es decir, consideramos uno o mas parametros como estocasticos o desconocidosdurante el horizonte de planificacion.
Ademas, estos pueden surgir cuando las rutas no se desean, o no se pueden, redisenar todos losdıas y debemos estimar los valores futuros.
Este tipo de problemas se aborda a traves de los V RP clasicos, formulando lo que se considera unasolucion planificada a priori, y a continuacion, se toman acciones correctivas. Es por tanto, una familiade problemas que combinan las caracterısticas de la programacion entera y estocastica de dos etapas.Dado que incluso muchas propiedades fundamentales de los V RP ya no se mantienen, a menudo seconsideran computacionalmente intratables. El metodo L− shaped presentado en el Capıtulo 1 se haadaptado a problemas enteros [LL93] o a SV RP con demandas estocasticas [SGL17].
Como se puede consultar en [EVR09], la literatura sobre los problemas de rutas de vehıculosesta creciendo exponencialmente a una tasa anual del 6.09 %. Esto conduce a una mejora en la meto-dologıa de recogida de datos, ası como, en los metodos de resolucion. Por tanto, esto ha provocado quelos V RP pasen de ser problemas estaticos a casos mas dinamicos, incorporando datos en tiempo realy parametros estocasticos.
La importancia de los problemas de rutas de vehıculos estocasticos se debe a que en los modelosclasicos V RP , generalmente, no se considera un aspecto importante del transporte real y los problemasde distribucion logıstica. Esto viene dado por el hecho de que varios parametros del modelo, talescomo, demanda, tiempo, distancia, entre otros, son estocasticos por naturaleza pero a menudo sonsimplificados y tratados como deterministas, [AE07].
En [BBKA14] podemos ver que las variantes mas comunes de SV RP son V RP con demandasestocasticas de clientes, clientes estocasticos, cliente y demanda estocastica y el tiempo de servicio oviaje estocastico.
Y son principalmente aplicados a los problemas de rutas del autobus publico urbano, recogida deresiduos, recoleccion y entrega de bienes y para el sistema de transporte en condiciones climaticasadversas.
Ademas, la principal tecnica de resolucion es a traves de algun metodo heurıstico, adaptacion dealgun metodo originalmente disenados para el caso determinista. Esto es debido principalmente, al altocoste computacional que conllevan estos problemas.
Sin embargo, en la literatura sobre SV RP existen muchas areas sin explorar. Entre ellas, nosencontramos la falta de SV RP que maximiza la utilizacion de vehıculos, numero de clientes a los quese prestara servicio o los ingresos obtenidos.
Por otro lado, en la mayorıa de modelos, los parametros estocasticos considerados en el estudiopara resolver problemas estan tomados del mundo real. Es decir, casi todos hacen una suposicion parasimplificar y tratar de encajar en un modelo probabilıstico un problema de la vida real.
Por ultimo, destacar que el software comercial no esta facilmente disponible para cualquier modeloV RP . Esto dificulta poder hacer mejoras en los metodos de solucion.
En conclusion, destacamos que el estudio de SV RP es un area de investigacion relativamente nuevay de rapido crecimiento que deberıa ganar importancia con el paso del tiempo. En comparacion con elcaso determinista, los problemas de rutas de vehıculos estocasticos estan bastante subdesarrollados. Lacual dificulta dar una respuesta a la necesidad de un sistema de orientacion en tiempo real de vehıculospara proporcionar instrucciones actualizadas a los conductores, [GLS96].
A continuacion, trataremos un metodo heurıstico para resolver problemas de rutas de vehıculoscuando la demanda es estocastica, V RPSD.
36 CAPITULO 3. PROBLEMAS DE RUTAS DE VEHICULOS (VRP)
3.4. VRP con demanda estocastica
Los problemas que trataremos en esta seccion son, sin duda, los mas estudiados de todos losSV RP . En ellos, las demandas de los clientes son variables aleatorias, generalmente consideradasindependientes.
Al igual que en el caso determinista, queremos determinar un conjunto fijo de rutas de longitudtotal esperada mınima, que corresponde a la longitud total del conjunto fijo de rutas mas el valoresperado de la distancia extra que podrıa ser requerida por una realizacion particular de las variablesaleatorias.
Las distancias adicionales se deben al hecho de que la demanda en las rutas puede exceder oca-sionalmente la capacidad del vehıculo y obligarlo a regresar al deposito antes de continuar su ruta.Esto es lo que denominaremos fallo de ruta, es decir, el retorno del vehıculo al deposito en una rutaseleccionada a priori por exceso de demanda.
Aunque pueda parecer que estamos ante un problema estocastico de 2 etapas, cuando la demandaes aleatoria, esta se va conociendo gradualmente a medida que el vehıculo completa su ruta. Por tanto,puede considerarse un problema multietapa donde el numero de etapas no es necesariamente igual alnumero de clientes, sino que puede ser mayor y ademas desconocido a priori.
Antes de continuar,mencionamos posibles polıticas de servicio.
Entrega completa, es decir, si el vehıculo llega al cliente, este debe satisfacer la demanda delmismo.
Division de entrega, cuando la demanda puede ser satisfecha por varios vehıculos, o por el mismo,en varias partes.
Ademas, respecto a la demanda podemos considerar los siguientes casos.
Informacion completa anticipada, que es cuando la demanda es conocida antes de planificar lasrutas, V RP .
Informacion tardıa, que se produce cuando la demanda es conocida cuando el vehıculo llega ala ubicacion del cliente. Esto puede ocurrir inmediatamente antes o despues de completar elservicio.
Los problemas V RPSD que nosotros vamos a tratar, son aquellos en los que la entrega es completay con informacion tardıa inmediatamente antes de ofrecer el servicio, es por ello, que vamos a suponerque la probabilidad de que la demanda de un unico cliente supere la capacidad del vehıculo sea iguala 0.
En [DLT89] se obtiene que la polıtica de servicio y la disponibilidad de la demanda determina elnumero de etapas en los problemas de rutas de vehıculos. Si la informacion es anticipada estamos anteproblemas de 1 etapa. Informacion tardıa y entrega completa genera un problema de tantas etapascomo clientes. Por ultimo, informacion tardıa y division de entregas puede generar mas etapas de losclientes a visitar.
3.4.1. Modelado de VRP con demanda estocastica
El problema de rutas de vehıculos con demanda estocastica que nosotros estamos tratando puedeser modelado como el de programacion con restricciones aleatorias propuesto por [CC59], de la siguienteforma:
3.4. VRP CON DEMANDA ESTOCASTICA 37
mın∑k
∑i,j
cijxijk
Sujeto a P∑i,j
dixijk ≤ C ≥ 1− α
k = 1, ...,K
x = [xijk] ∈ SK
donde cij es el coste de viajar del cliente i al cliente j, xijk = 1 si el vehıculo k, con k ∈ 1, ...,K, viajadesde el cliente i hasta el cliente j, y xijk = 0 en otro caso. Tenemos que di representa la demandaaleatoria del cliente i y C la capacidad maxima del vehıculo. Mientras que consideramos α como laprobabilidad maxima de que la ruta falle.
Por ultimo, destacar que SK es el conjunto de todas las soluciones factibles de los K “agentesviajeros”, problema (K−TSP ). El objetivo del problema K−TSP es construir exactamente K rutas,una para cada vehıculo, de modo que cada cliente sea visitado una unica vez por uno de los vehıculos.Ademas, cada ruta debe comenzar y finalizar en el deposito y contener a lo sumo p clientes. Estemodelo puede ser visto con mas detalle en [MTZ60].
Tambien existe la posibilidad de modelar el problema como un modelo de programacion estocasticacon recurso en el cual existe una penalizacion para cuando falla una restriccion. En [DT86] podemosver dos tipos de estos modelos.
En el primer modelo, la penalizacion asociada con el no cumplimiento de una restriccion es in-dependiente del grado de incumplimiento, correspondiente al numero de unidades por las cuales lademanda excede la capacidad del vehıculo en esa ruta. Este modelo es de la forma:
mın∑k
∑i,j
cijxijk +∑k
λkP∑i,j
dixijk > C
Sujeto a x = [xijk] ∈ SK
donde λk representa la penalizacion fija incurrida cada vez que la ruta k falla.El segundo modelo tiene una penalizacion proporcional al grado de incumplimiento de la restriccion.
El modelo es de la forma:
mın∑k
∑i,j
cijxijk +∑k
ξkE [lk]
Sujeto a x = [xijk] ∈ SK
donde ξk es la penalizacion por unidad de demanda que excede la capacidad C del vehıculo en la
ruta k. Se tiene ademas que E [lk] =
∫ ∞0
lkf(∑i,j
dixijk − C = lk)dlk es la esperanza del numero de
unidades de demanda que excede la capacidad total en la ruta k, donde f es la funcion de densidadde la variable lk, unidades en exceso de la ruta k.
Como podemos ver en ambos modelos, la funcion objetivo esta formada por dos terminos. Poruna parte, dada una ruta, las variables xijk quedan especificadas por lo que inmediatamente tenemoscalculado el primer termino de la funcion objetivo. Mientas que, el segundo termino expresa el costeesperado por cometer una infraccion en la ruta. Debemos tener en cuenta, que esta implıcito en elobjetivo que visitamos todos los clientes asignados a la ruta, pero en el caso de que el vehıculo sellene este debe regresar al deposito, lo que requiere una modificacion de la funcion objetivo, es decir,la visita de todos los clientes solo es posible si la probabilidad de fracaso hasta el penultimo cliente esdespreciable en comparacion con la localizacion del ultimo cliente.
38 CAPITULO 3. PROBLEMAS DE RUTAS DE VEHICULOS (VRP)
3.4.2. Propiedades de las rutas con fallos
Consideremos una ruta r, de la forma (0, 1, ..., n, 0) donde 0 es el deposito y 1 hasta n son losclientes visitados. Haremos referencia al cliente i de la ruta r de la forma ri, y denotaremos porPri la probabilidad de que la ruta falle en o antes del cliente i, es decir, que la demanda de losclientes visitados supere la capacidad del vehıculo. Notese que la probabilidad de fallo de una ruta esindependiente de la capacidad del vehıculo.
En [DT86] podemos ver las siguientes propiedades relacionadas con la probabilidad del fallo deruta.
Lema 1 Si las demandas de los clientes son variables aleatorias independientes con media no negativa,entonces para cualquier ruta r, P(ri)ni=1 es una sucesion no decreciente.
Antes de continuar, consideremos una sucesion finita o infinita de elementos xi, con i ∈ I tal que Ies el conjunto de elementos de la sucesion. Decimos que xi, con i ∈ I, es convexa si para todo i ∈ I setiene que xi−1−xi ≥ xi−xi+1, ademas, diremos que es estrictamente convexa si xi−1−xi > xi−xi+1
para todo i ∈ I.Se tiene el siguiente resultado:
Lema 2 Si las demandas de los clientes de una ruta r son independientes, identicamente distribuidas
con distribucion normal de media µ y varianza σ2, tal que, σ ≤ µ y µ > 0, y se tiene que E
[n∑i=1
di
]+
ε ≤ C para algun ε > 0, entonces la sucesion P(ri)ni=1 es estrictamente convexa.
Ejemplo
Ahora, veamos un ejemplo en el cual calcularemos la probabilidad de fallo de ruta en o hasta elcliente i−esimo de una ruta. Para ello vamos a considerar una ruta formada por 20 clientes y un vehıculode capacidad C = 1
2 . La demanda de todos ellos son independientes e identicamente distribuidas condistribucion normal, de tal forma que:
di : N
(C
20,
(C
40
)2)
Numero clientes Pri
9 0.0000
10 0.0000
11 0.0000
12 0.0000
13 0.0001
14 0.0007
Numero clientes Pri
15 0.0049
16 0.0228
17 0.0721
18 0.1736
19 0.3228
20 0.5000
Cuadro 3.4: Probabilidades para el fallo de una ruta.
En el Cuadro 3.4 se ilustran las probabilidades de que falle una ruta formada por un numeroconcreto de clientes, antes de llegar al ultimo cliente. Por ejemplo, la probabilidad de que en una ruta
3.4. VRP CON DEMANDA ESTOCASTICA 39
formada por 20 clientes, no visitemos el ultimo cliente es de 0.3228, es decir, el coste de ida entre elpenultimo cliente y el ultimo no ocurrira en un 32.28 % de los casos.
3.4.3. Heurıstica para VRP con demanda estocastica
La heurıstica que nosotros vamos a tratar es propuesta por [DLT89]. Los autores proponen, queen caso de fallo de ruta se toma el valor del viaje de ida y vuelta al deposito desde cada uno de losclientes restantes de la ruta inicial. Este tipo de polıtica elimina la opcion de reoptimizacion, limitandoel numero de fallos a como maximo uno por ruta, y ası, obligando al vehıculo a ser vaciado en el puntode fallo.
Esta suposicion, aunque no es la mas realista, permite una comparacion simple del coste esperadoen el peor de los casos de proporcionar servicios de emergencia a traves de entregas individuales.
Este metodo de solucion se basa en el algoritmo de ahorros para V RP determinista, [CW64]. Enesta nueva heurıstica el termino de ahorros es sustituido por Sij = c
′
i + c′
j − c′
ij . Aquı, c′
i es el coste
esperado de la ruta que contenga al cliente i, donde i ∈ V \0, y c′
ij es el coste esperado de la rutacombinada donde i precede inmediatamente a j, donde i, j ∈ V \0.
Calculamos el coste esperado de una ruta, (0, 1, ..., n, 0), de la siguiente forma:
c01 +
n−1∑j=1
[P j∑k=1
dk ≤ C,j+1∑z=1
dz > C
]·
j∑p=1
cpp+1 + cj+10 + 2 ·
n∑s=j+1
c0j
+
+Pn∑k=1
dk ≤ C ·
[n−1∑p=1
cpp+1 + cn0
]donde C es la carga maxima del vehıculo y di es la demanda aleatoria del cliente i ∈ V \0. Ademas
Pj∑
k=1
dk ≤ C,j+1∑z=1
dz > C = Pj+1∑z=1
dz > C − Pj∑z=1
dz > C.
Ejemplo
Veamos ahora un ejemplo para ilustrar el algoritmo. Para ello, vamos a considerar un deposito,0, y cinco clientes, 1, 2, 3, 4, 5. El deposito esta situado en la coordenada (0, 0) y los clientes en(5, 0), (5, 5), (0, 5), (−5, 5) y (−5, 0). Las distancias seran tomadas en linea recta. Ahora consideremosque los cliente 1, 2, 3 y 4 tienen demanda 0.15C y el cliente 5, situado en (−5, 0), demanda 0.4C siendoC la capacidad del vehıculo.
Consideremos que la ruta CR es aquella que empieza en el deposito, pasa por (5, 0), (5, 5), (0, 5), (−5, 5)y (−5, 0) para ya por ultimo volver al deposito. Denotamos por CL la ruta en sentido opuesto. Ambasrutas tienen una distancia de 30 unidades.
Ahora tomemos las demandas de los clientes como variables aleatorias normales independientes conmedia la demanda dada y coeficiente de variacion σ
µ = 0.5. Entonces el coste esperado para CR es dela forma,
c01 + Pd1 ≤ C, d1 + d2 > C · [c12 + c20 + 2(c02 + c03 + c04 + c05)] +
+Pd1 + d2 ≤ C, d1 + d2 + d3 > C · [c12 + c23 + c30 + 2(c03 + c04 + c05)] +
+Pd1 + d2 + d3 ≤ C, d1 + d2 + d3 + d4 > C · [c12 + c23 + c34 + c40 + 2(c04 + c05)] +
+Pd1 + d2 + d3 + d4 ≤ C, d1 + d2 + d3 + d4 + d5 > C · [c12 + c23 + c34 + c45 + c50 + 2c05] +
+Pd1 + d2 + d3 + d4 + d5 ≤ C · [c12 + c23 + c34 + c45 + c50]
40 CAPITULO 3. PROBLEMAS DE RUTAS DE VEHICULOS (VRP)
de igual manera calculamos el coste esperado de la ruta CL. De esta forma obtenemos que el costeesperado de la ruta CR es igual a 40.5563 y 48.8362 para CL.
Como se ha podido observar, a diferencia del caso determinista, Sij 6= Sji. Es decir, en un contextoestocastico, la seleccion de ahorros depende de la direccion del viaje. Y dado que las demandas no sonconocidas hasta ser alcanzado el cliente, las orientaciones deben ser seleccionadas a priori.
A continuacion, la descripcion algorıtmica del metodo puede verse en el Cuadro 3.5.
Algoritmo estocastico de Clarke y Wright
INICIALIZACIONTomar W conjunto de todos los posibles pares (i, j) tal que i, j ∈ V \0. Para cada cliente i ∈ V \0crear la ruta (0, i, 0).
PASO 1Calcular los ahorros Sij = c
′
i + c′
j − c′
ij para todo par (i, j) ⊂W .
PASO 2Ordenar los ahorros de forma no decreciente.
PASO 3Considerar Sij = maxSij . Si Sij > 0 y considerando ri y rj , las rutas que contienen a i y j, si en
ri, i es el ultimo cliente y en rj , j es el primer cliente y ademas, las demandas de dichos clientes nosuperan la capacidad del vehıculo, la ruta es factible, eliminar los arcos (i, 0) y (j, 0) e implementar laruta (i, j). Eliminar los ahorros Sij = Sji. Sea W = W\(i, j), (j, i).
PASO 4Repetir PASO 1, 2 y 3 hasta que no existan mas fusiones posibles.
Cuadro 3.5: Esquema del algoritmo estocastico de Clarke y Wright
Capıtulo 4
Una aplicacion
En este capıtulo, nuestro interes es hacer uso de todo lo tratado en los anteriores capıtulos. Paraello, vamos a considerar el problema de minimizar los costes de transporte, al optimizar las rutas delos vehıculos utilizados por una cooperativa agrıcola que distribuye piensos entre sus socios.
4.1. Descripcion del problema
Esta aplicacion esta motivada por un problema de caracter real, asociado a una empresa que sededica a la fabricacion y distribucion de pienso. AIRA es una cooperativa agrıcola ubicada en Taboada,un localidad gallega situada a medio camino entre las ciudades de Lugo y Ourense, en el noroeste deEspana. Produce cuatro tipos diferentes de alimentos que se distribuyen a sus clientes. La companıatiene aproximadamente 1500 agricultores (clientes) dispersos en 60 municipios adyacentes, cubriendouna amplia area de la zona.
Los agricultores realizan pedidos para distintos tipos de alimentos, que pueden ser urgentes o tienenun plazo de entrega especıfico. Para pedidos urgentes, el plazo se reduce a un solo dıa, y tales ordenessuponen un precio mas alto para el cliente. Los agricultores suelen emitir ordenes una o dos veces almes y, en condiciones normales, solo requieren un tipo de alimento.
La distribucion de los bienes es realizada por una serie de camiones que se encuentran disponiblesen la cooperativa, y cada conductor es pagado de acuerdo con la distancia recorrida y la carga. Loscamiones tienen diferentes tamanos y los requisitos legales limitan la masa transportable y la distanciarecorrida cada dıa. Los vehıculos estan compartimentados en varias tolvas (tres a cinco), cada una delas cuales tiene diferentes capacidades. Ademas, por razones tecnicas, cada contenedor puede contenersolo un tipo de alimento y no puede ser compartido entre los agricultores. Ademas, dado el tamanoy las caracterısticas de cada camion, algunos camiones no pueden transitar por ciertas carreteras oacceder a ciertas granjas, por lo que para cada vehıculo hay una lista de clientes que no pueden seratendidos.
En cuanto a los datos utilizados, conocemos las capacidades de cada contenedor, las demandas dediferentes clientes y las urgencias de los pedidos, ası como, las distancias desde la cooperativa a losclientes y entre los mismos. Tambien sabemos si un camion puede acceder a cada granja y su cargamaxima. Ademas, utilizamos la informacion sobre el precio de cada descarga y el coste variable detransportar una cierta cantidad de alimentos a una distancia determinada.
4.2. Resultados en el caso determinista
En esta seccion, vamos a optimizar las rutas de los vehıculos utilizadas cuando las demandas sonconocidas. Pero antes de continuar, haremos unas pruebas con el algoritmo de ahorros en el casodeterminista programado en R, ver Apendice B.
41
42 CAPITULO 4. UNA APLICACION
Para trabajar con mas comodidad, hemos realizado una interfaz grafica a traves de Shiny Dashboard,que es un procedimiento posible para trabajar con Shiny, un paquete de R para crear webs interactivas[CCA+15], a traves de diferentes paneles interactivos.
En la Figura 4.1 podemos ver los diferentes elementos que conforman la interfaz en el contextodeterminista. En la misma, encontramos un panel interactivo para simular problemas de rutas devehıculos aleatorios con unico elemento de entrada el numero de clientes. Ademas, podemos resolverun problema propio indicando directamente la capacidad del vehıculo, y anadiendo luego dos archivosde texto con las demandas y distancias entre clientes.
Figura 4.1: Interfaz grafica para V RP en el caso determinista.
Para hacer uso de estas simulaciones, en el Cuadro 4.2 podemos ver las demandas asociadas a100 clientes generadas aleatoriamente. Ahora, con estos datos vamos a resolver problemas de rutas devehıculos. Los resultados pueden ser vistos en el Cuadro 4.1. Para ello, la capacidad del vehıculo seha tomado como el doble de la media de la demanda de los clientes utilizados. Las distancias entredeposito y clientes, y entre ellos mismos, han sido generadas de manera aleatoria.
Como podemos apreciar el tiempo de computacion de nuestro algoritmo crece de manera exponen-cial segun aumenta el numero de clientes utilizados. Esto puede ser visto de igual manera en la Figura4.2.
Numero clientes Capacidad vehıculo Coste total Tiempo computacion
10 102 920 0.02 segundos
25 104 1194 0.14 segundos
50 106 3602 2.12 segundos
75 102 4901 11.65 segundos
100 104 6615 39.11 segundos
Cuadro 4.1: Resultados de los problemas de rutas.
4.2. RESULTADOS EN EL CASO DETERMINISTA 43
Cliente Demanda Cliente Demanda Cliente Demanda Cliente Demanda
1 27.00 26 39.00 51 48.00 76 90.00
2 38.00 27 2.00 52 87.00 77 87.00
3 58.00 28 39.00 53 44.00 78 39.00
4 91.00 29 87.00 54 25.00 79 78.00
5 21.00 30 35.00 55 8.00 80 97.00
6 90.00 31 49.00 56 10.00 81 44.00
7 95.00 32 60.00 57 32.00 82 72.00
8 67.00 33 50.00 58 52.00 83 40.00
9 63.00 34 19.00 59 67.00 84 33.00
10 7.00 35 83.00 60 41.00 85 76.00
11 21.00 36 67.00 61 92.00 86 21.00
12 18.00 37 80.00 62 30.00 87 72.00
13 69.00 38 11.00 63 46.00 88 13.00
14 39.00 39 73.00 64 34.00 89 25.00
15 77.00 40 42.00 65 66.00 90 15.00
16 50.00 41 83.00 66 26.00 91 24.00
17 72.00 42 65.00 67 48.00 92 6.00
18 100.00 43 79.00 68 77.00 93 65.00
19 39.00 44 56.00 69 9.00 94 88.00
20 78.00 45 53.00 70 88.00 95 78.00
21 94.00 46 79.00 71 34.00 96 80.00
22 22.00 47 3.00 72 84.00 97 46.00
23 66.00 48 48.00 73 35.00 98 42.00
24 13.00 49 74.00 74 34.00 99 82.00
25 27.00 50 70.00 75 48.00 100 61.00
Cuadro 4.2: Demandas para los 100 clientes.
44 CAPITULO 4. UNA APLICACION
20 40 60 80 100
010
2030
40
Número clientes
Tie
mpo
en
segu
ndos
Figura 4.2: Representacion del tiempo de computacion.
Ademas podemos resolver el ejemplo de la Seccion 3.2.1. En el, tenemos cuatro clientes con de-mandas asociadas (2, 2, 1, 2) y matriz de distancias el Cuadro 3.3. Si la capacidad del vehıculo es de10 unidades, entonces obtenemos la siguiente ruta optima:
(0, D,C,B,A, 0)
con un coste total de 17 unidades de distancia. Obteniendo el mismo resultado que habrıamos calculadoanteriormente pero tomando la ruta en sentido opuesto.
Ahora continuamos con los datos del problema real. Estos se dividen en dos dıas de diferentespedidos. Ademas vamos a considerar exclusivamente, para evitar restricciones adicionales, la capacidadmaxima de masa transportable, permitiendo a los agricultores el uso compartido de las tolvas. Se tomaesa carga maxima como C = 15300 kilogramos.
En el primer dıa, 19 clientes hacen un pedido de un unico tipo de alimento. Las demandas enkilogramos de estos 19 clientes son, respectivamente,
3300, 6041, 5959, 2951, 4885, 3003, 3016, 4478, 5413, 3490
5283, 15078, 10017, 10176, 3954, 10013, 4526, 5119, 5000.
Tales demandas pueden ser vistas en la Figura 4.3.En el Cuadro 4.3 podemos ver las distancias entre el deposito, 0, y clientes, ası como, entre los
clientes.Una vez resuelto nuestro problema, con el algoritmo creado, en el Cuadro 4.4 podemos ver los
resultados obtenidos, donde obtenemos un coste total de 354 (que es la distancia total recorrida).Ademas, las rutas optimas escogidas son
(0, 3, 2, 1, 0, 9, 8, 7, 0, 10, 5, 4, 6, 0, 12, 0, 13, 11, 0, 15, 0, 17, 16, 0, 18, 14, 0, 19, 0).
Podemos ver la representacion en la Figura 4.4.
4.2. RESULTADOS EN EL CASO DETERMINISTA 45
1 2 3 4 5 6 7 8 9 10 12 14 16 18
Clientes
Dem
anda
020
0040
0060
0080
0012
000
Figura 4.3: Demandas asociadas a los clientes del primer dıa.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0 0 21 20 17 65 63 60 19 22 24 60 5 29 6 4 7 8 6 4 0
1 21 0 4 6 60 58 55 15 18 20 55 26 39 27 25 21 19 20 24 21
2 20 4 0 4 59 56 53 13 8 12 53 24 37 26 23 19 17 18 22 19
3 17 6 4 0 57 54 52 11 13 16 52 21 35 23 21 18 15 16 20 17
4 65 60 59 57 0 3 7 66 69 71 6 66 90 61 66 62 60 62 69 65
5 63 58 56 54 3 0 4 64 66 69 3 64 88 58 63 60 57 59 66 63
6 60 55 53 52 7 4 0 61 64 66 2 61 85 56 60 57 55 57 63 60
7 19 15 13 11 66 64 61 0 3 5 61 24 33 25 23 24 25 23 22 19
8 22 18 8 13 69 66 64 3 0 7 64 26 35 28 26 27 28 26 25 22
9 24 20 12 16 71 69 66 5 7 0 66 29 38 30 28 29 30 28 27 24
10 60 55 53 52 6 3 2 61 64 66 0 61 85 56 60 57 55 57 63 60
11 5 26 24 21 66 64 61 24 26 29 61 0 33 7 1 12 5 4 8 5
12 29 39 37 35 90 88 85 33 35 38 85 33 0 35 33 35 36 34 30 29
13 6 27 26 23 61 58 56 25 28 30 56 7 35 0 7 13 14 12 10 6
14 4 25 23 21 66 63 60 23 26 28 60 1 32 7 0 11 5 3 7 4
15 7 21 19 18 62 60 57 24 27 29 57 12 35 13 11 0 8 8 10 7
16 8 19 17 15 60 57 55 25 28 30 55 5 36 14 5 8 0 3 11 8
17 6 20 18 16 62 59 57 23 26 28 57 4 34 12 3 8 3 0 9 6
18 4 24 22 20 69 66 63 22 25 27 63 8 30 10 7 10 11 9 0 3
19 0 21 19 17 65 63 60 19 22 24 60 5 28 6 4 7 8 6 3 0
Cuadro 4.3: Distancias entre clientes y deposito (primer dıa de planificacion).
46 CAPITULO 4. UNA APLICACION
A mayores, en el Cuadro 4.4 podemos ver los resultados para diferentes capacidades del vehıculo.Como podemos apreciar, a mayor carga maxima menor distancia total recorrida.
Ademas, las rutas optimas escogidas para una carga maxima de C = 18000 son
(0, 3, 2, 1, 0, 10, 5, 4, 6, 0, 12, 0, 13, 0, 14, 11, 0, 15, 9, 8, 7, 0, 17, 16, 0, 19, 18, 0)
y para C = 20000,
(0, 3, 2, 1, 0, 12, 0, 13, 0, 14, 11, 0, 15, 10, 5, 4, 6, 0, 17, 16, 0, 18, 9, 8, 7, 0, 19, 0).
Numero clientes Capacidad vehıculo Coste total Tiempo computacion
19 15300 354 0.08 segundos
19 18000 348 0.09 segundos
19 20000 340 0.07 segundos
Cuadro 4.4: Resultados del primer dıa.
Figura 4.4: Representacion de las rutas optimas para el primer dıa en el contexto determinista.
En el segundo dıa, 17 clientes hacen un pedido de un unico tipo de alimento. Las demandas deestos clientes son, respectivamente,
4523, 5087, 3017, 4981, 4507, 3612, 4551, 3492,
3645, 10200, 10055, 10091, 5200, 5100, 11005, 1998, 2501.
Podemos ver estas demandas representadas en la Figura 4.5.
4.2. RESULTADOS EN EL CASO DETERMINISTA 47
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Clientes
Dem
anda
020
0040
0060
0080
0010
000
Figura 4.5: Demandas asociadas a los clientes del segundo dıa.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
0 0 24 27 23 5 21 11 55 12 10 3 25 9 7 4 8 25 41
1 24 0 6 2 23 6 15 53 17 23 27 39 32 24 26 18 39 50
2 27 6 0 4 26 9 18 47 20 26 30 42 35 27 29 21 42 53
3 23 2 4 0 21 4 14 51 15 22 26 38 30 22 25 17 37 48
4 5 23 26 21 0 20 14 60 11 13 8 30 13 10 7 7 29 46
5 21 6 9 4 20 0 9 46 12 17 24 36 29 17 17 16 36 47
6 11 15 18 14 14 9 0 43 4 9 14 39 18 9 9 18 39 51
7 55 53 47 51 60 46 43 0 47 52 54 77 63 52 51 56 76 81
8 12 17 20 15 11 12 4 47 0 9 15 37 20 9 9 7 37 53
9 10 23 26 22 13 17 9 52 9 0 7 34 17 10 8 16 34 50
10 3 27 30 26 8 24 14 54 15 7 0 28 11 10 7 11 28 44
11 25 39 42 38 30 36 39 77 37 34 28 0 22 31 29 32 2 13
12 9 32 35 30 13 29 18 63 20 17 11 22 0 15 12 16 21 32
13 7 24 27 22 10 17 9 52 9 10 10 31 15 0 5 13 31 47
14 4 26 29 25 7 17 9 51 9 8 7 29 12 5 0 10 28 44
15 8 18 21 17 7 16 18 56 7 16 11 32 16 13 10 0 32 48
16 25 39 42 37 29 36 39 76 37 34 28 2 21 31 28 32 0 12
17 41 50 53 48 46 47 51 81 53 50 44 13 32 47 44 48 12 0
Cuadro 4.5: Distancias entre clientes y deposito (segundo dıa de planificacion).
48 CAPITULO 4. UNA APLICACION
En el Cuadro 4.5 podemos ver las distancias entre el deposito, 0, y clientes, ası como, entre losclientes.
Una vez resuelto nuestro problema, con el algoritmo creado, en el Cuadro 4.6 podemos ver losresultados obtenidos, donde obtenemos un coste total de 344, que hace referencia a la distancia totalrecorrida. Ademas, las rutas optimas escogidas son
(0, 3, 2, 1, 0, 7, 5, 6, 0, 9, 8, 13, 0, 10, 0, 11, 17, 16, 0, 12, 0, 14, 4, 0, 15, 0).
Podemos ver representadas estas rutas en la Figura 4.6.A mayores, en el Cuadro 4.6 podemos ver los resultados para diferentes capacidades del vehıcu-
lo. Como podemos apreciar, al aumentar la carga maxima menor distancia total recorrida, aunqueobtenemos valores similares para las capacidades 18000 y 20000.
Ademas, las rutas optimas escogidas para las carga maxima de C = 18000 y C = 20000 son
(0, 5, 3, 2, 1, 0, 9, 8, 7, 6, 0, 10, 0, 11, 17, 16, 0, 12, 0, 14, 13, 0, 15, 4, 0).
Figura 4.6: Representacion de las rutas optimas para el segundo dıa en el contexto determinista.
Numero clientes Capacidad vehıculo Coste total Tiempo computacion
17 15300 344 0.06 segundos
17 18000 314 0.06 segundos
17 2000 314 0.08 segundos
Cuadro 4.6: Resultados del segundo dıa.
A continuacion, haremos un estudio de seleccion de rutas optimas para la planificacion de ambosdıas en conjunto. En el Cuadro 4.7 podemos ver los resultados obtenidos. A medida que la carga
4.3. RESULTADOS EN EL CASO ESTOCASTICO 49
maxima transportable por vehıculo aumenta, la distancia total recorrida disminuye. Ademas, las rutasoptimas escogidas para C = 15300 son
(0, 9, 8, 7, 0, 12, 11, 10, 0, 14, 2, 1, 0, 15, 16, 3, 0, 18, 5, 4, 6, 0, 20, 0, 21, 34, 33, 0, 23,
0, 24, 0, 25, 0, 27, 19, 0, 30, 26, 13, 0, 31, 28, 22, 0, 32, 17, 0, 35, 29, 0, 36, 0)
para C = 18000,
(0, 3, 2, 1, 0, 13, 9, 8, 7, 0, 14, 12, 11, 10, 0, 18, 5, 4, 6, 15, 0, 20, 0, 24, 0, 25, 22, 0,
27, 19, 0, 30, 26, 17, 16, 0, 31, 28, 0, 32, 0, 33, 21, 0, 34, 23, 0, 35, 29, 0, 36, 0)
y para C = 20000,
(0, 12, 11, 10, 2, 0, 15, 14, 1, 3, 0, 17, 9, 8, 7, 0, 18, 5, 4, 6, 16, 0, 20, 0, 21, 0, 24, 0, 20, 0, 21, 0,
24, 0, 25, 22, 0, 27, 19, 28, 0, 31, 30, 26, 0, 32, 13, 0, 33, 34, 23, 0, 35, 29, 0, 36, 0).
Numero clientes Capacidad vehıculo Coste total Tiempo computacion
36 15300 681 0.59 segundos
36 18000 653 0.53 segundos
36 2000 547 0.54 segundos
Cuadro 4.7: Resultados del primer y segundo dıa en conjunto.
4.3. Resultados en el caso estocastico
A continuacion, en esta seccion, nuestro interes es optimizar las rutas de los vehıculos utilizadoscuando las demandas son aleatorias. Para ello, utilizaremos el algoritmo de ahorros en el caso estocasti-co programado en R, ver Apendice B. Al igual que en el apartado anterior haremos uso de una interfazgrafica, ver Figura 4.7.
Como podemos observar, disponemos de un panel de entrada para realizar simulaciones aleatoriasindicando el numero de clientes deseados. En otro caso, podemos resolver nuestros propios problemasde rutas de vehıculos anadiendo la capacidad del vehıculo y distancias entre clientes. Ademas, podemosresolverlos segun sigan una distribucion normal o discreta. En el caso normal, para el archivo deman-das subiremos la media de estas y en el archivo probabilidades o desviaciones tıpicas las diferentesdesviaciones tıpicas. Por ultimo, en el caso discreto, en el archivo demandas subiremos las diferentesdemandas que pueden tomar los distintos clientes, y ası, en el archivo probabilidades o desviacionestıpicas la probabilidad que puede tomar cada demanda.
Antes de utilizar los datos de nuestro ejemplo real, trabajaremos con los datos simulados utilizadosen la seccion anterior, y haremos simulaciones con los mismos numeros de clientes pero considerandola demanda como una variable aleatoria, para ası, comprobar los diferentes cambios que se obtienenen la resolucion de este tipo de problemas.
En esta situacion vamos a suponer que las demandas de nuestros clientes son independientes condistribucion normal, donde la media son las demandas del Cuadro 4.2. Al igual que en el caso deter-minista, utilizaremos la misma capacidad del vehıculo y distancias entre deposito y clientes, ası comoentre ellos.
50 CAPITULO 4. UNA APLICACION
Figura 4.7: Interfaz grafica para V RP en el caso estocastico.
Los resultados ante este problema pueden ser vistos en el Cuadro 4.8. En el mismo, hemos variadola desviacion tıpica de las diferentes demandas entre los valores 2, 5 y 10. Se puede observar que, loscostes de computacion son mas elevados que en el caso determinista, y de igual manera, aumentan deforma exponencial.
Sobre los costes esperados de las rutas escogidas, en comparacion con los costes totales del casodeterminista, estos no distan demasiado con un numero bajo de clientes, es decir, segun aumenta elnumero de clientes el coste esperado de optimizacion de rutas se hace mayor en comparacion al costereal.
Ahora trabajaremos con los datos reales aunque suponiendo que las demandas son aleatorias. Paraello, utilizaremos las distancias y capacidad del vehıculo de la anterior seccion. Pero supondremos quelas demandas son independientes y siguen una distribucion normal.
En el primer dıa, las medias de estas seran las demandas utilizadas en el caso determinista. Sinembargo, trabajaremos con diferentes desviaciones tıpicas y observaremos el efecto en el resultado final.
Rutas para desviacion tıpica 10:
(0, 2, 1, 3, 0, 9, 8, 7, 0, 10, 5, 4, 6, 0, 12, 0, 13, 0, 14, 0, 15, 18, 11, 0, 17, 16, 0, 19, 0)
Rutas para desviacion tıpica 50:
(0, 2, 1, 3, 0, 9, 8, 7, 0, 10, 5, 4, 6, 0, 12, 0, 13, 0, 14, 0, 15, 18, 11, 0, 16, 17, 0, 19, 0)
Rutas para desviacion tıpica 100:
(0, 2, 1, 3, 0, 9, 8, 7, 0, 10, 5, 4, 6, 0, 11, 14, 0, 12, 0, 13, 0, 16, 17, 0, 19, 18, 15, 0)
Como podemos observar en el Cuadro 4.9 los costes esperados para las diferentes desviaciones tıpicasno distan mucho entre sı, siendo los resultados similares. Respecto al coste total del caso determinista,en el contexto estocastico el coste esperado es mayor aunque, en el peor de los casos, no supera el 6 %.
Las rutas optimas para las diferentes desviaciones tıpicas son practicamente iguales cuando estastoman los valores 10 y 50, cambiando el sentido de la ruta (0, 17, 16, 0), para 10, por (0, 16, 17, 0), para50. Respecto al valor 100, aunque tenemos rutas similares ya existen mayores diferencias con respectoa los otros dos valores. Las diferencias mas significativas entre las rutas optimas en el caso deterministay estocastico vienen dadas por el sentido de las mismas, ası como, la existencia de selecciones diferentesde clientes en distintas rutas.
4.3. RESULTADOS EN EL CASO ESTOCASTICO 51
Numero clientes Capacidad vehıculo Desviacion tıpica Coste esperado total Tiempo computacion
10 102
2 893.4684
0.11 segundos5 904.8284
10 925.9974
25 104
2 1913.994
1.28 segundos5 1985.387
10 2002.881
50 106
2 3754.281
11.32 segundos5 3901.149
10 3884.235
75 102
2 5151.255
42.49 segundos5 5314.362
10 5457.355
100 104
2 6800.154
111.08 segundos5 7122.145
10 7217.029
Cuadro 4.8: Resultados de los problemas de rutas.
Numero clientes Capacidad vehıculo Desviacion tıpica Coste esperado total Tiempo computacion
19 15300
10 375
1.53 segundos50 375.0001
100 374.2069
Cuadro 4.9: Resultados de los problemas de rutas para el primer dıa.
52 CAPITULO 4. UNA APLICACION
Numero clientes Capacidad vehıculo Desviacion tıpica Coste esperado total Tiempo computacion
17 15300
10 344
1.11 segundos50 344
100 344.3224
Cuadro 4.10: Resultados de los problemas de rutas para el segundo dıa.
En el segundo dıa, al igual que en el caso anterior, tomaremos como demandas las medias utilizadasen el caso determinista. Trabajaremos tambien con diferentes desviaciones tıpicas para ver el efecto enel resultado final.
Rutas para desviacion tıpica 10:
(0, 3, 2, 1, 0, 7, 5, 6, 0, 9, 8, 13, 0, 10, 0, 11, 17, 16, 0, 12, 0, 14, 4, 0, 15, 0)
Rutas para desviacion tıpica 50:
(0, 3, 2, 1, 0, 7, 5, 6, 0, 9, 8, 13, 0, 10, 0, 11, 17, 16, 0, 12, 0, 14, 4, 0, 15, 0)
Rutas para desviacion tıpica 100:
(0, 3, 2, 1, 0, 7, 5, 6, 0, 9, 8, 13, 0, 10, 0, 11, 17, 16, 0, 12, 0, 14, 4, 0, 15, 0)
Como podemos observar en el Cuadro 4.10, para las diferentes desviaciones tıpicas que hemostomado el coste esperado total no ha variado. Ası mismo, las rutas seleccionadas son las mismas tantopara el contexto determinista como en los 3 casos del contexto estocastico.
Ahora por ultimo haremos una planificacion para ambos dıas en conjunto. En el Cuadro 4.11podemos ver las diferentes distancias esperadas totales recorridas para cada una de las desviacionestıpicas escogidas. No apreciamos grandes diferencias entre los costes esperados totales y el coste totalen el caso determinista, siendo este mayor para una desviacion tıpica igual a 100.
Numero clientes Capacidad vehıculo Desviacion tıpica Coste esperado total Tiempo computacion
36 15300
10 680
10.79 segundos50 681.4759
100 684.6841
Cuadro 4.11: Resultados de los problemas de rutas para el primer y segundo dıa juntos.
Rutas para desviacion tıpica 10:
(0, 9, 8, 7, 0, 12, 11, 10, 0, 14, 2, 1, 0, 15, 16, 3, 0, 18, 5, 4, 6, 0, 20, 0, 21, 34, 33, 0,
23, 0, 24, 0, 25, 0, 27, 19, 36, 0, 29, 35, 0, 30, 26, 13, 0, 31, 28, 22, 0, 32, 17, 0)
Rutas para desviacion tıpica 50:
(0, 9, 8, 7, 0, 12, 11, 10, 0, 13, 28, 22, 0, 14, 2, 1, 0, 15, 16, 3, 0, 17, 32, 0, 18, 5, 4, 6, 0,
4.3. RESULTADOS EN EL CASO ESTOCASTICO 53
20, 0, 21, 34, 33, 0, 23, 0, 24, 0, 25, 0, 27, 19, 36, 0, 29, 35, 0, 30, 26, 31, 0)
Rutas para desviacion tıpica 100:
(0, 2, 1, 14, 0, 9, 8, 7, 0, 12, 11, 10, 0, 13, 28, 22, 0, 15, 16, 3, 0, 17, 32, 0, 18, 5, 4, 6, 0,
20, 0, 21, 34, 33, 0, 23, 0, 24, 0, 25, 0, 27, 19, 0, 29, 0, 30, 26, 31, 0, 36, 35, 0)
Las diferentes rutas optimas tomadas para las distintas desviaciones tıpicas son muy similares, apesar de tener ciertas rutas con una seleccion diferente de clientes. Respecto a las rutas en el casodeterminista existen mayores diferencias, aunque podemos apreciar rutas similares.
Capıtulo 5
Conclusiones
En este trabajo, hemos tratado un conjunto de tecnicas de optimizacion que dan lugar a una de lasmuchas aplicaciones que tienen las matematicas en la industria, mas concretamente, en la logıstica. Elavance de la investigacion ha provocado que cada vez los problemas de optimizacion pueden resolversituaciones mas proximas a las planteadas en la realidad, llegando a imitarla con pequenos errores nosignificativos. Aunque para ello, hemos tenido que crear nuevos modelos, aumentando considerable-mente el numero de restricciones, ası como, el coste de computacion.
Es por ello, que para solucionar este tipo de problemas los metodos heurısticos son cada vezmas habituales, ya que resolverlos de forma exacta puede dar lugar a grandes dificultades. Nosotroshemos presentado un algoritmo para resolver problemas de rutas de vehıculos, y su adaptacion alcontexto estocastico, concretamente, al caso en el que las demandas de los clientes servidos son variablesaleatorias.
Aunque existen algoritmos con un diseno mas sofisticado, el que nosotros hemos tratado puedellegar a ser de gran utilidad como solucion inicial, y a partir del resultado que proporciona, se puedenimplementar mejoras, si es el caso, haciendo uso de algun algoritmo de busqueda local.
Aun considerando las posibles limitaciones, con el algoritmo estudiado hemos comprobado lasdiferentes soluciones que se obtienen al resolver modelos estocasticos y las hemos comparado con lasobtenidas al no considerar la aleatoriedad de las variables demandas. Aun siendo la matriz de distanciassimetrica, es decir, el viaje de ida o vuelta supone un mismo coste, nos hemos encontrado que el sentidode la ruta es importante en un contexto estocastico, ya que con el denominado fallo de ruta nuestrapolıtica de ida y retorno al deposito provoca un mayor coste en aquellos clientes mas alejados deldeposito.
Cabe senalar, en cualquier caso, que se obtienen unos resultados alentadores, ya que, al menos, conlos datos considerados, la presencia de aleatoriedad no implica un incremento grande del coste respectoa una situacion determinista, cuando hacemos uso de los algoritmos estudiados en este trabajo. En elcaso tratado, esto se interpreta como que si en lugar de esperar a recibir ordenes exactas por parte delos clientes, se trabajase con predicciones suficientemente fiables, el precio a pagar no serıa alto y encambio, serıa ventajoso para la planificacion de poder hacerlas con antelacion.
Para finalizar, creemos que, a nivel global, si bien los modelos SV RP son cada vez mas estudiados,existen cuestiones pendientes por resolver tanto a nivel literatura como software. De esta forma, elinteres de nuestro trabajo es aportar una revision bibliografica que puede constituir una introducciona investigaciones teoricas futuras o a la resolucion de otros problemas logısticos.
55
Apendice A
Codigo en lenguaje SMPS
Codigo para resolver el problema del granjero sin incertidumbre para los rendimientos supuestospor el granjero (segundo escenario):
Archivo principal:
NAME FARMER
ROWS
N WEALTH
L BUDGET
G BAL1
G BAL2
L BAL3
L BAL4
COLUMNS
X1 BUDGET 1.00 BAL1 +2.5
X2 BUDGET 1.00 BAL2 +3
X3 BUDGET 1.00 BAL3 -20
Y1 BAL1 1.00
Y2 BAL2 +1.00
W1 BAL1 -1.00
W2 BAL2 -1.00
W3 BAL3 +1.00 BAL4 +1.00
W4 BAL3 +1.00
X1 WEALTH 150
X2 WEALTH 230
X3 WEALTH +260
Y1 WEALTH +238
Y2 WEALTH +210
W1 WEALTH -170
W2 WEALTH -150
W3 WEALTH -36
W4 WEALTH -10
RHS
RHS BUDGET 500 BAL1 200
RHS BAL2 240 BAL4 6000
ENDATA
Archivo de tiempo:
TIME FARMER
57
58 APENDICE A. CODIGO EN LENGUAJE SMPS
PERIODS
X1 BUDGET TODAY
Y1 BAL1 TOMORROW
ENDATA
Archivo estocastico:
STOCH FARMER
BLOCKS DISCRETE
BL BLOCK1 TOMORROW 1
X1 BAL1 2.5
X2 BAL2 3
X3 BAL3 -20
ENDATA
Aunque anadimos el archivo estocastico, en el mismo, solo ocurre un suceso.
Codigo para resolver el problema del granjero sin incertidumbre para los rendimientos en el primerescenario:
Archivo principal:
NAME FARMER
ROWS
N WEALTH
L BUDGET
G BAL1
G BAL2
L BAL3
L BAL4
COLUMNS
X1 BUDGET 1.00 BAL1 +2.5
X2 BUDGET 1.00 BAL2 +3
X3 BUDGET 1.00 BAL3 -20
Y1 BAL1 1.00
Y2 BAL2 +1.00
W1 BAL1 -1.00
W2 BAL2 -1.00
W3 BAL3 +1.00 BAL4 +1.00
W4 BAL3 +1.00
X1 WEALTH 150
X2 WEALTH 230
X3 WEALTH +260
Y1 WEALTH +238
Y2 WEALTH +210
W1 WEALTH -170
W2 WEALTH -150
W3 WEALTH -36
W4 WEALTH -10
RHS
RHS BUDGET 500 BAL1 200
RHS BAL2 240 BAL4 6000
ENDATA
Archivo de tiempo:
59
TIME FARMER
PERIODS
X1 BUDGET TODAY
Y1 BAL1 TOMORROW
ENDATA
Archivo estocastico:
STOCH FARMER
BLOCKS DISCRETE
BL BLOCK1 TOMORROW 1
X1 BAL1 2
X2 BAL2 2.4
X3 BAL3 -16
ENDATA
Aunque anadimos el archivo estocastico, en el mismo, solo ocurre un suceso.
Codigo para resolver el problema del granjero sin incertidumbre para los rendimientos en el tercerescenario:
Archivo principal:
NAME FARMER
ROWS
N WEALTH
L BUDGET
G BAL1
G BAL2
L BAL3
L BAL4
COLUMNS
X1 BUDGET 1.00 BAL1 +2.5
X2 BUDGET 1.00 BAL2 +3
X3 BUDGET 1.00 BAL3 -20
Y1 BAL1 1.00
Y2 BAL2 +1.00
W1 BAL1 -1.00
W2 BAL2 -1.00
W3 BAL3 +1.00 BAL4 +1.00
W4 BAL3 +1.00
X1 WEALTH 150
X2 WEALTH 230
X3 WEALTH +260
Y1 WEALTH +238
Y2 WEALTH +210
W1 WEALTH -170
W2 WEALTH -150
W3 WEALTH -36
W4 WEALTH -10
RHS
RHS BUDGET 500 BAL1 200
RHS BAL2 240 BAL4 6000
ENDATA
60 APENDICE A. CODIGO EN LENGUAJE SMPS
Archivo de tiempo:
TIME FARMER
PERIODS
X1 BUDGET TODAY
Y1 BAL1 TOMORROW
ENDATA
Archivo estocastico:
STOCH FARMER
BLOCKS DISCRETE
BL BLOCK1 TOMORROW 1
X1 BAL1 3
X2 BAL2 3.6
X3 BAL3 -24
ENDATA
Aunque anadimos el archivo estocastico, en el mismo, solo ocurre un suceso.
Apendice B
Codigo en lenguaje R
Algoritmo de ahorros contexto determinista:
Ahorrosalgorithm<-function(vector.demandas,matriz.distancia,capacidad.vehiculo)
n<-dim(matriz.distancia)[1] #numero de clientes mas deposito
c<-numeric(n) #vector costes de rutas
R<-matrix(0,nrow=n,ncol=3) #matriz de rutas
##########Paso 1: calcular rutas ir y volver
c<-matriz.distancia[1,]*2 #Coste ir desde el deposito al cliente i y volver
R[,2]<-1:n #Generamos las rutas (0,i,0) donde 0 es deposito
R[1,2]<-0
ctotal<-sum(c) #Coste total de ir desde cada deposito al cliente
S<-matrix(0,nrow=n,ncol=n) #Matriz ahorros
############Paso 2: calcular los ahorros
for(i in 2:n)
for(j in 2:n)
if(i!=j)
S[i,j]<-matriz.distancia[i,1]+matriz.distancia[1,j]-matriz.distancia[i,j]
###########Paso 3: optimizar rutas
indicar<-1
Sm<-1 #Valores de entrada del primer while
61
62 APENDICE B. CODIGO EN LENGUAJE R
while(Sm>0) #Mientras existan ahorros mayores que cero buscamos rutas factibles
Sm<-max(S) #Ahorro maximo
if(Sm>0)
#Posicion ahorro maximo
if(order(S,decreasing=TRUE)[1]%%n==0)
Positionfilas<-n
Positioncolumnas<-order(S,decreasing=TRUE)[1]%/%n
else
Positionfilas<-order(S,decreasing=TRUE)[1]%%n
Positioncolumnas<-order(S,decreasing=TRUE)[1]%/%n + 1
#Demandas de los clientes i y j
CargaT<-vector.demandas[Positionfilas]+vector.demandas[Positioncolumnas]
#Indicamos a que cliente visitamos antes de ir a i y despues de ir a j
if(R[Positionfilas,3]==0 && R[Positioncolumnas,1]==0 && CargaT<=capacidad.vehiculo)
newPositionfilas<-Positionfilas
newPositioncolumnas<-Positioncolumnas
x<-0 #Evitamos ciclos
while(R[newPositionfilas,1]!=0) #Sumamos la carga de los clientes anteriores a i
CargaT<-CargaT+vector.demandas[R[newPositionfilas,1]]
newPositionfilas<-R[newPositionfilas,1]
if(newPositionfilas==Positioncolumnas) x<-x+1
while(R[newPositioncolumnas,3]!=0) #Sumamos la carga de los clientes posteriores a j
CargaT<-CargaT+vector.demandas[R[newPositioncolumnas,3]]
newPositioncolumnas<-R[newPositioncolumnas,3]
if(newPositioncolumnas==Positionfilas) x<-x+1
if(CargaT<=capacidad.vehiculo && x==0) #A~nadimos la ruta si es factible
R[Positionfilas,3]<-Positioncolumnas
R[Positioncolumnas,1]<-Positionfilas
S[Positionfilas,Positioncolumnas]<-0
S[Positioncolumnas,Positionfilas]<-0 #Borramos ahorros utilizados para evitar ciclos
S[Positionfilas,Positioncolumnas]<-0 #Si no es factible tambien lo borramos
63
#Fin del while
rutas<<-numeric() #Vector de rutas FINAL
rutas[1]<<-0 #Empezamos en el deposito
indicador<-2 #Nos movemos por el vector de rutas
#Creamos la ruta final
for(i in 2:n)
if(R[i,1]==0)
rutas[indicador]<<-i
while(rutas[indicador]!=0)
rutas[indicador+1]<<-R[rutas[indicador],3]
indicador<-indicador+1
indicador<-indicador+1
rutas[which(rutas==0)]<-1
coste.total<-0
for(i in 1:(length(rutas)-1))
coste.total<-coste.total+matriz.distancia[rutas[i],rutas[i+1]]
rutas<-rutas-1
cat("Tomamos las rutas",":\n")
cat(rutas,"\n")
cat("Con un coste total de",":\n")
cat(coste.total,"\n")
#Fin de la funcion
Ejemplo:
capacidad.vehiculo<-10
matriz.distancia<-matrix(c(0,6,4,5,3,6,0,4,8,4,4,4,0,1,4,5,8,1,0,3,3,4,4,3,0),nrow=5)
vector.demandas<-c(0,2,2,1,2)
Ahorrosalgorithm(vector.demandas,matriz.distancia,capacidad.vehiculo)
Tomamos las rutas :
0 4 3 2 1 0
Con un coste total de :
17
64 APENDICE B. CODIGO EN LENGUAJE R
Algoritmo de ahorros contexto estocastico:
Stochasticahorrosalgorithm<-function(matriz.distancia,capacidad.vehiculo,
demandas,probs,VARIABLES)
n<-dim(matriz.distancia)[1] #numero de clientes mas deposito
c<-numeric(n) #vector costes de rutas
R<-matrix(0,nrow=n,ncol=3) #matriz de rutas
##########Paso 1: calcular rutas ir y volver
R[,2]<-1:n #Generamos las rutas (0,i,0) donde 0 es deposito
R[1,2]<-0
############Paso 2: calcular los ahorros
S<-matrix(0,nrow=n,ncol=n) #Matriz ahorros
#######################
#####Funcion probabilidad cliente i con variables discretas o normales
#######################
if(VARIABLES=="DISCRETAS")
probabilidad<-function(j)
probabanterior<-probab
d2<-demandas[rutasi[j],]
probs2<-probs[rutasi[j],]
if(j==3)
d1<-demandas[rutasi[j-1],]
d12<<-matrix(0,ncol=length(d2),nrow=length(d1))
probs12<-matrix(0,ncol=length(d2),nrow=length(d1))
probs1<-probs[rutasi[j-1],]
else
d1<-d12[1:length(d12)]
d12<<-matrix(0,ncol=length(d2),nrow=length(d1))
probs1<-probs12[1:length(probs12)]
probs12<-matrix(0,ncol=length(d2),nrow=length(d1))
for(i in 1:length(d1))
65
d12[i,1:length(d2)]<-d1[i]+d2[1:length(d2)]
probs12[i,1:length(probs2)]<-probs1[i]*probs2[1:length(probs2)]
d12<<-d12
probs12<<-probs12
probab<<-sum(probs12[which(d12>capacidad.vehiculo)])-probabanterior
probab2<<-sum(probs12[which(d12<=capacidad.vehiculo)])
return(probab)
else if(VARIABLES=="NORMALES")
probabilidad<-function(j)
probabanterior<-probab
if(j==3)
d12medias<<-demandas[rutasi[j]] + demandas[rutasi[j-1]]
d12sigma<<-probs[rutasi[j]] + probs[rutasi[j-1]]
else
d12medias<<-d12medias + demandas[rutasi[j]]
d12sigma<<-d12sigma + probs[rutasi[j]]
probab<<-pnorm(capacidad.vehiculo,mean=d12medias,sd=d12sigma,lower.tail=F) - probabanterior
probab2<<-pnorm(capacidad.vehiculo,mean=d12medias,sd=d12sigma,lower.tail=T)
return(probab)
#######################
#####Funcion valor coste esperado para un cliente i
#######################
coste.esperado<-function(i)
inew<-i
rutasi<-numeric()
rutasi[1]<-1
indicador<-n-1
rutasi[n]<-i
while(R[inew,1]!=0) #Buscamos los clientes que preceden a i
rutasi[indicador]<-R[inew,1]
inew<-R[inew,1]
66 APENDICE B. CODIGO EN LENGUAJE R
indicador<-indicador-1
rutasii<-numeric() #Eliminamos los NA
rutasii[1:length(na.omit(rutasi))]<-na.omit(rutasi)[1:length(na.omit(rutasi))]
rutasi<-rutasii
inew<-i
indicador<-length(rutasi)+1
while(R[inew,3]!=0) #Buscamos los clientes que siguen a i
rutasi[indicador]<-R[inew,3]
inew<-R[inew,3]
indicador<-indicador+1
rutasi[indicador]<-1
rutasi<<-rutasi
#Calculamos el coste esperado una vez conocida la ruta que contiene a i
costeesperado<-matriz.distancia[rutasi[1],rutasi[2]]
distancia.visitas<-0
probab<<-0
if(length(rutasi)>=4)
for(j in 3 :(length(rutasi)-1))
distancia.visitas<-distancia.visitas+matriz.distancia[rutasi[j-1],rutasi[j]]
costeesperado<-costeesperado+probabilidad(j)*(distancia.visitas+matriz.distancia[rutasi[j],1]+
2*(sum(matriz.distancia[1,rutasi[j:(length(rutasi)-1)]])))
costeesperado<-costeesperado+probab2*
(distancia.visitas+matriz.distancia[rutasi[length(rutasi)-1],1])
else
costeesperado<-costeesperado+matriz.distancia[rutasi[1],rutasi[2]]
return(costeesperado)
###############################################
#####Funcion valor coste esperado para que un cliente i precede a uno j
###############################################
coste.unido.esperado<-function(i,j)
inew<-i
rutasij<-numeric()
rutasij[1]<-1
indicador<-n-1
67
rutasij[n]<-i
while(R[inew,1]!=0) #Buscamos los clientes que preceden a i
rutasij[indicador]<-R[inew,1]
inew<-R[inew,1]
indicador<-indicador-1
rutasii<-numeric() #Eliminamos los NA
rutasii[1:length(na.omit(rutasij))]<-na.omit(rutasij)[1:length(na.omit(rutasij))]
rutasij<-rutasii
inew<-i
jnew<-j
rutasij[length(rutasij)+1]<-j
indicador<-length(rutasij)+1
while(R[jnew,3]!=0) #Buscamos los clientes que siguen a j
rutasij[indicador]<-R[jnew,3]
jnew<-R[jnew,3]
indicador<-indicador+1
rutasij[indicador]<-1
rutasi<<-rutasij
#Calculamos el coste esperado una vez conocida la ruta que contiene a i
costeesperado<-matriz.distancia[rutasij[1],rutasij[2]]
distancia.visitas<-0
probab<<-0
for(j in 3:(length(rutasij)-1))
distancia.visitas<-distancia.visitas+matriz.distancia[rutasij[j-1],rutasij[j]]
costeesperado<-costeesperado+probabilidad(j)*(distancia.visitas+matriz.distancia[rutasij[j],1]+
2*(sum(matriz.distancia[1,rutasij[j:(length(rutasij)-1)]])))
costeesperado<-costeesperado+probab2*
(distancia.visitas+matriz.distancia[rutasij[length(rutasij)-1],1])
return(costeesperado)
######################
###Calculo de los ahorros
######################
for(i in 2:n)
for(j in 2:n)
if(i!=j & R[i,3]==0 & R[j,1]==0)
S[i,j]<-coste.esperado(i)+coste.esperado(j)-coste.unido.esperado(i,j)
68 APENDICE B. CODIGO EN LENGUAJE R
#################
###Calculo ruta optima
#################
indicar<-1
Sm<-1 #Valores de entrada del primer while
while(Sm>0) #Mientras existan ahorros mayores que cero buscamos rutas factibles
Sm<-max(S) #Ahorro maximo
if(Sm>0)
#Posicion ahorro maximo
if(order(S,decreasing=TRUE)[1]%%n==0)
Positionfilas<-n
Positioncolumnas<-order(S,decreasing=TRUE)[1]%/%n
else
Positionfilas<-order(S,decreasing=TRUE)[1]%%n
Positioncolumnas<-order(S,decreasing=TRUE)[1]%/%n + 1
R[Positionfilas,3]<-Positioncolumnas
R[Positioncolumnas,1]<-Positionfilas
#############################
######Calculo de los ahorros nuevamente
#############################
S<-matrix(0,nrow=n,ncol=n) #Matriz ahorros
for(i in 2:n)
for(j in 2:n)
if(i!=j & R[i,3]==0 & R[j,1]==0)
S[i,j]<-coste.esperado(i)+coste.esperado(j)-coste.unido.esperado(i,j)
S[Positionfilas,Positioncolumnas]<-0
S[Positioncolumnas,Positionfilas]<-0 #Borramos ahorros utilizados para evitar ciclos
69
#Fin del while
rutas<<-numeric() #Vector de rutas FINAL
rutas[1]<<-0 #Empezamos en el deposito
indicador<-2 #Nos movemos por el vector de rutas
#Creamos la ruta final
for(i in 2:n)
if(R[i,1]==0)
rutas[indicador]<<-i
while(rutas[indicador]!=0)
rutas[indicador+1]<<-R[rutas[indicador],3]
indicador<-indicador+1
indicador<-indicador+1
rutas[which(rutas==0)]<<-1
coste.total<-0
ind<-which(rutas==1)[2:length(which(rutas==1))]
for(i in ind)
coste.total<-coste.total+coste.esperado(rutas[i-1])
rutas<-rutas-1
cat("Tomamos las rutas",":\n")
cat(rutas,"\n")
cat("Con un coste esperado total de",":\n")
cat(coste.total,"\n")
#Fin funcion algoritmo de ahorros estocastico
Ejemplo caso discreto:
capacidad.vehiculo<-10
matriz.distancia<-matrix(c(0,2,4,4,1,2,0,3,4,2,4,3,0,1,3,4,4,1,0,3,1,2,3,3,0),nrow=5)
demandas<-matrix(c(0,0,2,0,2,0,1,7,2,0),nrow=5,byrow=TRUE)
probs<-matrix(c(0,0,1,0,1,0,1/2,1/2,1,0),nrow=5,byrow=TRUE)
VARIABLES<-"DISCRETAS"
Stochasticahorrosalgorithm(matriz.distancia,capacidad.vehiculo,demandas,probs,VARIABLES)
Tomamos las rutas :
0 3 2 1 4 0
Con un coste esperado total de :
13.5
70 APENDICE B. CODIGO EN LENGUAJE R
Ejemplo caso continuo:
capacidad.vehiculo<-10
matriz.distancia<-matrix(c(0,2,4,4,1,2,0,3,4,2,4,3,0,1,3,4,4,1,0,3,1,2,3,3,0),nrow=5)
demandas<-c(0,2,2,4,2)
probs<-c(0,0.1,0.2,2,0.1)
VARIABLES<-"NORMALES"
Stochasticahorrosalgorithm(matriz.distancia,capacidad.vehiculo,demandas,probs,VARIABLES)
Tomamos las rutas :
0 3 2 1 0 4 0
Con un coste esperado total de :
13.0107
Bibliografıa
[AE07] Aykagan Ak and Alan L Erera. A paired-vehicle recourse strategy for the vehicle-routingproblem with stochastic demands. Transportation Science, 41(2):222–237, 2007.
[BBKA14] Eshetie Berhan, Birhanu Beshah, Daniel Kitaw, and Ajith Abraham. Stochastic vehiclerouting problem: A literature survey. Journal of Information & Knowledge Management,13(03):12 pages, 2014.
[Bea55] Evelyn ML Beale. On minimizing a convex function subject to linear inequalities. Journalof the Royal Statistical Society. Series B (Methodological), 17(2):173–184, 1955.
[BL11] John R Birge and Francois Louveaux. Introduction to Stochastic Programming. SpringerScience & Business Media, 2011.
[CC59] Abraham Charnes and William W Cooper. Chance-constrained programming. Manage-ment science, 6(1):73–79, 1959.
[CCA+15] Winston Chang, Joe Cheng, J Allaire, Yihui Xie, Jonathan McPherson, et al. Shiny: Webapplication framework for R, 2015. URL http://CRAN. R-project. org/package= shiny. Rpackage version 0.11, 2015.
[CMM98] Joseph Czyzyk, Michael P Mesnier, and Jorge J More. The neos server. IEEE Journal onComputational Science & Engineering, 5(3):68–75, 1998.
[CW64] GU Clarke and John W Wright. Scheduling of vehicles from a central depot to a numberof delivery points. Operations Research, 12(4):568–581, 1964.
[Dan55] George B Dantzig. Linear programming under uncertainty. Management Science, 1(3-4):197–206, 1955.
[DLT89] Moshe Dror, Gilbert Laporte, and Pierre Trudeau. Vehicle routing with stochastic de-mands: Properties and solution frameworks. Transportation Science, 23(3):166–176, 1989.
[Dol01] Elizabeth D Dolan. Neos server 4.0 administrative guide. arXiv preprint cs/0107034, 2001.
[DR59] George B Dantzig and John H Ramser. The truck dispatching problem. ManagementScience, 6(1):80–91, 1959.
[DT86] Moshe Dror and Pierre Trudeau. Stochastic vehicle routing with modified savings algo-rithm. European Journal of Operational Research, 23(2):228–235, 1986.
[EVR09] Burak Eksioglu, Arif Volkan Vural, and Arnold Reisman. The vehicle routing problem: Ataxonomic review. Computers & Industrial Engineering, 57(4):1472–1483, 2009.
[GK08] Horand I Gassmann and Bjarni Kristjansson. The smps format explained. IMA Journalof Management Mathematics, 19(4):347–377, 2008.
71
72 BIBLIOGRAFIA
[GLS96] Michel Gendreau, Gilbert Laporte, and Rene Seguin. Stochastic vehicle routing. EuropeanJournal of Operational Research, 88(1):3–12, 1996.
[GM97] William Gropp and Jorge More. Optimization environments and the neos server. In:Approximation theory and optimization, M.D. Buhmann and A. Iserles, eds. CambridgeUniversity Press Cambridge, UK, pages 167–182, 1997.
[GRWE08] Bruce L Golden, Subramanian Raghavan, and Edward A Wasil (Eds.). The vehicle routingproblem: latest advances and new challenges, volume 43. Springer Science & BusinessMedia, 2008.
[KT51] Harold W. Kuhn and Albert W. Tucker. Nonlinear programming. In : Proceedings of theSecond Berkeley Symposium on Mathematical Statistics and Probability, pages 481–492.The Regents of the University of California, 1951.
[LL93] Gilbert Laporte and Francois V Louveaux. The integer l-shaped method for stochasticinteger programs with complete recourse. Operations Research Letters, 13(3):133–142,1993.
[MTZ60] Clair E Miller, Albert W Tucker, and Richard A Zemlin. Integer programming formulationof traveling salesman problems. Journal of the ACM (JACM), 7(4):326–329, 1960.
[NEO17] NEOS WEB. https://neos-server.org/neos/, 2017.
[SGL17] Juan Jose Salazar Gonzalez and Francois V Louveaux. Exact approach for the vehiclerouting problem with stochastic demands and preventive returns. Manuscrito de los auto-res. Presentado al congreso de la Real Sociedad Matematica Espanola (RSME), Zaragoza,Enero de 2017.