UNIVERSIDAD AUTONOMA DE NUEVO LEON
Facultad de Ingenierıa Mecanica y Electrica
Division de Estudios de Posgrado
“Asignacion de Recursos de Transporte:
Un Enfoque Practico”
Tesis profesional presentada por
Israel Cano Robles
en opcion
al grado de Maestro en Ciencias
en Ingenierıa de Sistemas
San Nicolas de los Garza, N.L. Otono de 2005
UNIVERSIDAD AUTONOMA DE NUEVO LEON
Facultad de Ingenierıa Mecanica y Electrica
Division de Estudios de Posgrado
“Asignacion de Recursos de Transporte:
Un Enfoque Practico”
Tesis profesional presentada por
Israel Cano Robles
en opcional grado de Maestro en Ciencias
en Ingenierıa de Sistemas
Comite de Tesis
Dr. Mauricio Cabrera Rıos
Revisor
Dr. Igor S. Litvinchev
Asesor y Director
MC. Gerardo Naranjo Sotomayor
Revisor
San Nicolas de los Garza, N.L. Noviembre de 2005
Tesis profesional sustentada por
Israel Cano Robles
en opcion al grado de
Maestro en Ciencias en Ingenierıa de Sistemas.
Aceptada por el Division de Estudios de Posgrado
Dr. Igor S. LitvinchevAsesor y Director
Dr. Mauricio Cabrera RıosRevisor
MC. Gerardo Naranjo SotomayorRevisor
Dr. Guadalupe Alan CastilloRodrıguez
Subdirector Division de Estudiosde Posgrado
15 de Noviembre de 2005
”Quiero dedicar este trabajo a todos
aquellos que me apoyaron: maestros,
familia, amigos, pero especialmente a mis
companeros de generacion del PISIS:
Nancy, Leti, Fer, Fernadillo y Oswi, la
hicimos bien.”
Agradecimientos
Agradezco la oportunidad al PISIS y CONACYT por haberme permitido realizar
mis estudios de maestrıa, mediante una beca de estudios de tiempo completo.
Quiero expresar mi agradecimiento infinito a mi asesor Dr. Igor S. Litvinchev desde
el principio confio y respaldo este proyecto. Por su paciencia y entusiasmo a lo largo de
estos anos. Por la motivacion para presentar este trabajo en foros internacionales.
Sin duda alguna este no hubiera sido logrado sin la vocacion y esfuerzo de todos los
profesores del PISIS: Dra. Ada Alvarez, Dr. Roger Rıos, Dr. Oscar Chacon, Dr. Cesar
Villareal , Dr. Rodolfo Garcıa con quienes tuve el gusto de aprender en sus cursos.
A todo el personal de Sintec, especialmente a Oscar Lozano, Roberto Palacios,
Gerardo Naranjo, Jaime Ortega, por abrir las puertas a este proyecto.
A todos los que en las ultimas semanas de elaboracion de este trabajo dedicaron
parte de su tiempo.
Indice general
1. Introduccion 1
1.1. Ciencia de Transporte. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Transporte como actividad economica . . . . . . . . . . . . . . . . . . . 4
1.3. Objetivo de tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4. Organizacion de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2. El problema y sus antecedentes 11
2.1. Introduccion a los problemas de ruteo. . . . . . . . . . . . . . . . . . . 11
2.2. Trabajos sobre ruteo de vehıculos con ventanas de tiempo . . . . . . . . 14
3. Exposicion del Problema 21
3.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.1.1. Por que optimizar? . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.2. Sintec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.3. Modelos Matematicos . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2. Formulacion Matematica . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.1. Suposiciones del problema . . . . . . . . . . . . . . . . . . . . . 27
3.2.2. Definicion del Modelo Matematico . . . . . . . . . . . . . . . . . 28
3.3. Metodo de solucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.1. Programacion Entera (MIP) . . . . . . . . . . . . . . . . . . . . 31
i
INDICE GENERAL ii
3.3.2. Herramientas Computacionales . . . . . . . . . . . . . . . . . . 32
4. Casos Practicos 34
4.1. Caso 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2. Caso 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5. Experimentos Computacionales 43
5.1. Generacion de problemas . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2. Problemas de Asignacion de vehıculos con ventanas suaves de tiempo . 44
5.3. Problemas de Asignacion de vehıculos con ventanas duras de tiempo . . 47
6. Conclusiones y Recomendaciones 49
6.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2. Aportaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.3. Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Bibliografıa 52
A. Metodo Ramificacion y Cota 56
A.1. Ramificacion-cotas (Branch and bound) . . . . . . . . . . . . . . . . . . 56
B. AMPL 60
B.1. Lenguaje AMPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
B.1.1. Reglas lexicas de AMPL. . . . . . . . . . . . . . . . . . . . . . . 62
B.1.2. Los elementos de un conjunto. . . . . . . . . . . . . . . . . . . . 64
B.1.3. Expresiones que indexan y subındices. . . . . . . . . . . . . . . 65
B.1.4. Expresiones aritmeticas, logicas y de conjuntos. Funciones matematicas. 67
B.1.5. Declaraciones de elementos del modelo. . . . . . . . . . . . . . . 72
INDICE GENERAL iii
B.1.6. Especificacion de datos. . . . . . . . . . . . . . . . . . . . . . . 79
B.1.7. Comandos del lenguaje. . . . . . . . . . . . . . . . . . . . . . . 94
C. Modelo en AMPL 99
D. Carta Referencia Sintec 101
Indice de Tablas
1.1. Factores que influyen en costo del transporte . . . . . . . . . . . . . . . 6
4.1. Parametros clientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2. Parametros de los vehıculos . . . . . . . . . . . . . . . . . . . . . . . . 35
4.3. Costos Variables a cada destino . . . . . . . . . . . . . . . . . . . . . . 36
4.4. Resultados Clientes Vehıculos Sencillos . . . . . . . . . . . . . . . . . . 37
4.5. Resultados Clientes Vehıculos Dobles . . . . . . . . . . . . . . . . . . . 38
4.6. Resultados Caso Practico 1 . . . . . . . . . . . . . . . . . . . . . . . . 38
4.7. Parametros clientes Caso 2 . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.8. Parametros de los vehıculos . . . . . . . . . . . . . . . . . . . . . . . . 40
4.9. Costos Variables a cada destino . . . . . . . . . . . . . . . . . . . . . . 40
4.10. Programa de Distribucion Clientes Autoservicio . . . . . . . . . . . . . 41
4.11. Programa de Distribucion Clientes Autoservicio . . . . . . . . . . . . . 41
4.12. Programa de Distribucion Clientes Autoservicio (Cont...) . . . . . . . . 42
4.13. Resultados Caso Practico 2 . . . . . . . . . . . . . . . . . . . . . . . . 42
5.1. Nomenclatura problemas generados . . . . . . . . . . . . . . . . . . . . 44
5.2. Resultados Ventanas Suaves 1-tipo de vehıculo . . . . . . . . . . . . . . 45
5.3. Resultados Ventanas Suaves . . . . . . . . . . . . . . . . . . . . . . . . 45
5.4. Resultados Vehıculos utilizados con Ventanas Suaves . . . . . . . . . . 46
iv
INDICE DE TABLAS v
5.5. Resultados Ventanas Duras . . . . . . . . . . . . . . . . . . . . . . . . 47
5.6. Resultados Vehıculos utilizados con Ventanas Duras . . . . . . . . . . . 48
B.1. Modelo basico del ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . 61
B.2. Modelo general del ejemplo . . . . . . . . . . . . . . . . . . . . . . . . 63
B.3. Datos para el ejemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
B.4. Operadores aritmeticos (A), logicos (L) y de conjuntos (S). . . . . . . . 69
B.5. Funciones de generacion de variables aleatorias en AMPL. . . . . . . . 69
B.6. Funciones aritmticas en AMPL. . . . . . . . . . . . . . . . . . . . . . . 70
B.7. Fichero de lotes para el modelo del ejemplo 1.1 . . . . . . . . . . . . . . 95
Indice de figuras
1.1. Distribucion del transporte de Carga en Mexico . . . . . . . . . . . . . 7
4.1. Red de distribucion Valle de Mexico . . . . . . . . . . . . . . . . . . . . 34
4.2. Red de distribucion Clientes Centralizados . . . . . . . . . . . . . . . . 39
5.1. Clientes vs Vehıculos utilizados . . . . . . . . . . . . . . . . . . . . . . 46
5.2. Clientes vs Vehıculos utilizados . . . . . . . . . . . . . . . . . . . . . . 48
A.1. Arbol de subproblemas generado en ramificacion y cotas . . . . . . . . 57
vi
Resumen
Israel Cano Robles
Candidato para el Grado de Maestro en Ciencias en Ingenierıa de Sistemas
Universidad Autonoma de Nuevo Leon
Facultad de Ingenierıa Mecanica y Electrica
Tıtulo del Estudio:
Asignacion de Recursos de Transporte: Un Enfoque Practico
Numero de paginas: 115
Objetivos y metodo de estudio:
En muchas organizaciones, la administracion de las actividades de distribucion cons-
tituye un problema de toma de decisiones. Este problema ha cobrado mas importancia
debido a la contribucion de los costos de distribucion dentro de los costos totales. La
mayorıa de las companıas requieren de vehıculos para la recoleccion y entrega dentro
de una red de suministro o demanda. La utilizacion y ruteo eficiente de esta flotilla es
el centro de la mayorıa de los problemas de ruteo.
Particularmente los gerentes de distribucion se cuestionan — cuantos vehıculos son
necesarios para satisfacer demanda a un costo mınimo?— Esta pregunta es difıcil de
contestar dada la enorme gama de combinaciones de mezcla de flotilla y rutas que
pueden existir, esto nos da la posibilidad de formular el problema en que nos enfocamos
en este trabajo.
Dentro de las numerosas variantes del problema de ruteo de vehıculos, generalmente
se comparten las siguientes caracterısticas: un conjunto de rutas debe ser disenado para
los vehıculos; su origen y fin debe ser un deposito central. Los costos de ruteo asociados
con los vehıculos son una parte de la composicion total de los costos de distribucion y
el costo de adquisicion de flotilla y mantenimiento.
En este trabajo consideramos el problema de ruteo con multiples tipos de vehıculos
simultaneamente con la determinacion de la composicion de la flotilla heterogenea,
con el objetivo de satisfacer la demanda en un conjunto de clientes con cantidades
demandadas y ventanas de tiempo conocidas, desde un deposito central o una planta
de produccion. El objetivo es minimizar la suma de los costos de adquisicion (fijos) y
los costos de ruteo (variables).
Suponemos que tenemos una cantidad disponible de cada tipo de vehıculos, al menos
igual al numero de clientes. La demanda de cada uno de los clientes es mas grande que
la capacidad de cualquier vehıculo. Tambien consideramos solo las rutas directas entre
el centro de distribucion y los clientes. De esta forma la red se puede ver del tipo
estrella. Esta configuracion de red es comun donde los puntos de demanda son centros
de distribucion y no los clientes finales.
En contraste con el clasico problema de ruteo, un cliente tiene que ser visitado
varias veces (tal vez por el mismo vehıculo) en orden de satisfacer su demanda ademas
se supone que se pueden dividir los envıos. Se consideran ventanas de tiempo suaves
para permitir que el vehıculo llegue a un cliente antes o despues de esta ventana, en
consecuencia el vehıculo incurre en costos adicionales dado las penalizaciones.
Tambien son consideradas las ventanas de tiempo duras en consecuencia se le prohıbe
al vehıculo llegar fuera de los horarios de atencion.
Para este problema se incluye la formulacion matematica y resultados de un estu-
dio de dos casos practicos presentados por Sintec y un conjunto de experimentos de
problemas generados aleatoriamente.
FIRMA DEL ASESOR:
Dr. Igor S. Litvinchev
Capıtulo 1
Introduccion
“La curiosidad humana y el deseo por saber como se comporta el mundo que nos
rodea establece un area fertil para la aplicacion de la investigacion de operaciones.”
Randolph W. Hall
1.1. Ciencia de Transporte.
En la antiguedad el transporte era realizado por el hombre aprovechando medios
como los animales de carga, y medios naturales como el viento, las corrientes de agua,
fuerza de gravedad y algunos vehıculos sencillos. De igual manera se construıan caminos
y estaciones de carga y descarga, el control e inspeccion solo concernıa a los via-
jantes. Hoy en dıa el movimiento de los vehıculos se debe a motores, la construccion de
caminos y terminales. Existen nuevas tecnologıas como Internet, las redes inalambri-
cas,coberturas satelitales que nos hacen pensar en las marcadas diferencias existentes
entre las formas de transporte actual y sus antecesoras.
Tambien encontramos similitudes, existen vehıculos, caminos, terminales y controles
que son ajustados para realizar ciertas funciones basicas, de los modos de transporte
actualmente conocidos todos tienen capacidad de desplazarse, acelerar, frenar y cuentan
1
CAPITULO 1. INTRODUCCION 2
con mecanismos para almacenar combustible o energıa para funcionar, diferenciar entre
objetos y personas en las terminales, asignar y contener cargas de manera eficiente para
ir de un lugar a otro.
Al paso de los anos y de esta evolucion de modos de transporte, el hombre ha
reconocido en la ciencia del transporte que cualquier modo de transporte contiene los
mismos elementos: —vehıculos, un camino por donde transitar y terminales— operando
bajo cierta polıtica de control.
La clara definicion de estos elementos es util para estar de acuerdo en que sea
cual sea el modo de transporte estos elementos basicos conservan sus propiedades. Los
vehıculos comprenden a todos los recursos moviles en las que pueden viajar personas o
embarques de productos, proveen el espacio para hacer del viaje seguro y confortable.
Los caminos son recursos ya establecidos como las carreteras y autopistas estos definen
el camino fısico que utilizaran los vehıculos en su movimiento de un lugar a otro. Las
terminales son los establecimientos estacionarios con la capacidad de organizar los viajes
de personas objetos de acuerdo a su salida y entrada en las rutas de transportacion. Por
ultimo la polıtica de control se refiere a las reglas que rigen el movimiento y trayectorias
de todo el sistema de transporte.
La ciencia de transporte en parte describe el comportamiento del hombre y de los
sistemas cuando toman decisiones de transporte y por otra parte prescribe la forma en
que se debe tomar esa decision optimizando como objetivo el transporte.
Como consecuencia del andar diario las personas tienen un amplia gama de elec-
ciones que son tomadas de acuerdo a la formacion de habitos, circunstancias y otras
ocasiones por deliberacion. Existen cuatro ramas que clasifican la toma de decisiones
auxiliada por la ciencia de transporte
La manera en que nos comportamos al conducir un vehıculo es decir las decisiones
CAPITULO 1. INTRODUCCION 3
rutinarias como la velocidad, la ruta y modo que seguimos para ir al lugar de trabajo,
la escuela son decisiones de corto plazo mientras que la forma en que elegimos donde
habitar, trabajar y como se forman las ciudades en zonas comerciales habitacionales e
industriales definen de manera colectiva una rama de la ciencia del transporte.
Cuando queremos explicar fenomenos como la manera en que fluyen los vehıculos
cuando pasan a traves de un camino y se encuentran con intersecciones, divisiones y
combinaciones de caminos. Tambien cuando vemos el aumento de la tasa de flujo sobre
un camino y sus relaciones con la disminucion de velocidad, el aumento de la densidad
y como ocurren las primera filas o acumulamientos de vehıculos en las calle, se recurre
a otra rama de la ciencia de transporte ampliamente estudiada y conocida como flujo
en trafico y redes.
Determinar el camino que seguira una unidad de un lugar a otro es la rama de
la ciencia del transporte conocida como ruteo, dentro del ruteo existen tambien tres
tareas basicas: asignacion (elegir el recurso que va a realizar la actividad de transporte),
secuenciamiento (determinar el orden en que se realizaran las actividades del transporte)
y rumbo o itinerario (el camino a seguir de una asignacion a otra).
El ruteo no es exclusivo de vehıculos del tipo automovil puede ser utilizado para
camiones de carga aviones, contenedores de trenes, barcos y las tripulaciones que hacen
que estos recursos funcionen. Administrar precisamente al personal que maneja las
unidades cumpliendo las cargas laborales es un reto para esta rama de investigacion.
Disenar las redes—caminos que seran utilizados para desplazar los productos desde
su lugar de origen hasta su destino— es la ultima rama de la ciencia que mencionare-
mos en este trabajo, el diseno consiste en la localizacion de los almacenes, centros
productivos, depositos de vehıculos, estaciones y en el trazo de los caminos que seran
utilizados y que uniran las instalaciones fısicas unas con otras. Ejemplos de como deben
CAPITULO 1. INTRODUCCION 4
ser disenadas esta rutas las encontramos a diario los rıos, el sistema circulatorio o hasta
en la forma de los arboles, sin embargo la construccion de redes por el hombre buscando
ser mas sofisticada a creado otras estructuras como las de mallas cuadriculadas, redes
de anillos centricos y las de “hub and spoke ”. Hacer estos disenos de la manera mas
eficiente, es decir que siempre generen un beneficio en tiempo o economico es una gran
oportunidad para mostrar interes en la investigacion de estos temas.
1.2. Transporte como actividad economica
Como se describio anteriormente el transporte puede ser considerado como una
materia de estudio. Sin embargo la manera mas comun en que se conoce al transporte es
como una actividad economica. Sabemos que sin esta actividad serıa imposible disponer
de cualquier tipo de producto en el lugar que quisieramos. Esta generalizacion nos hace
pensar en otro concepto conocido como “logıstica ”.
La transportacion y logıstica con frecuencia se pueden confundir como el mismo
concepto, aunado a esto cada quien lo nombra como mejor se adapte a su situacion
y encontramos que este termino es conocido tambien como: Distribucion, Logıstica
industrial, Sistemas de respuesta rapida, Administracion de cadena de suministro. En
un intento por estandarizar la idea el Consejo de Administracion Logıstica (The Council
of Logistics Management [CLM]) a proporcionado esta definicion [3] para logıstica.
El proceso de planeacion, implementacion y control efectivo y eficiente, del flujoy almacenamiento de bienes, servicios e informacion, desde un punto de origenhasta un punto de consumo, con el proposito de cumplir con requerimientos deun cliente.
Basados en esta definicion ubicamos al transporte como parte de las actividades de
la logıstica, considerandolo con la capacidad de poder mover materia prima y bienes
producidos desde un punto de origen a uno de destino donde se consumiran. Tambien
CAPITULO 1. INTRODUCCION 5
involucra la seleccion del modo (ej. avion, tren, barco, camion o tuberıas), ruteo de
los embarques, asegurar el cumplimiento de las reglas del lugar donde se originan los
embarques y la seleccion de una companıa de transporte.
La importancia de esta se basa principalmente y en la mayorıa de las casos por su
participacion en los costos totales de las actividades logısticas.
Un sistema de transportacion eficiente es el sello distintivo de una sociedad in-
dustrializada aun y cuando su influencia como sector economico es tan sutil que muy
pocas veces vemos su impacto en nuestra vida diaria, solamente en EU los gastos de
transportacion en 2002 fueron de cerca de 455 billones de dolares.
El impacto de la transportacion no solo contempla el sentido de participacion de los
costos totales de un bien, tambien es importante la participacion que tiene para lograr
una satisfaccion del cliente. La transportacion es considerada como una actividad de
valor agregado, es decir si el producto puede ser movido desde un lugar a otro se conoce
como valor de lugar, ademas para que el producto este disponible en el momento la
velocidad y consistencia con que se mueve de un lugar a otro determina el valor de
tiempo.
Si el producto no se encuentra en el momento preciso en el lugar que se necesita
puede traer repercusiones costosas como perdida de ventas, insatisfaccion del cliente,
disminucion de la produccion cuando hablamos de sistemas de manufactura. Son cono-
cidos los casos en la industria automotriz de las costosas multas por detencion de lıneas
de produccion como consecuencia de un incumplimiento de estos dos valores Tiempo y
Lugar.
Companıas como FedEx, CSX, UPS,Ryder Integrated Logistics basan su exito en
la capacidad de proveer un consistente tiempo en transito y un gran valor de lugar y
tiempo a los productos de sus clientes.
CAPITULO 1. INTRODUCCION 6
En general los factores que influyen en el costo y precio del transporte se puede
agrupar en dos a continuacion los podemos ver en la tabla (1.1).
Factores relacionados con elproducto
Factores relacionados con elmercado
Densidad Localizacion de mercadosEstibamiento Legislacion actual para los trans-
portistasManejo Balance del trafico que entra y sale
del mercadoResponsabilidad por valor del pro-ducto
Temporizacion de los productos
Transporte domestico o interna-cional
Tabla 1.1: Factores que influyen en costo del transporte
De todos los modos de transporte disponibles—autotransporte, avion, barco, tren,
ductos— que se pueden utilizar para transportar productos el modo de autotransporte
tambien conocido como transporte por camion o trailer es uno de los mas conocidos y
tambien motivo de este trabajo. Este sector se encuentra segmentado en nuestro paıs
como se muestra en la grafica 1.1 .
El transporte de carga es el principal modo de transporte para muchos de los produc-
tos manufacturados como artıculos deportivos, juguetes, artıculos electronicos, enseres
domesticos, ropa, medicamentos, equipo de oficina y en un 75% es la eleccion para
transportar productos agrıcolas, como carne, vegetales, productos de elaboracion di-
aria, pan, cigarros y bebidas, de esta forma se transportan todo tipo de productos de
manera rapida y confiable con una mınima perdida o dano del producto durante su
recorrido.
Al transporte que se realiza sin cruzar fronteras internacionales se le conoce como
domestico, aunque preferentemente se realiza por trailer el movimiento de estos pro-
ductos, este compite por los pequenos embarques con el aereo, y contra el tren en los
CAPITULO 1. INTRODUCCION 7
Figura 1.1: Distribucion del transporte de Carga en Mexico
grandes embarques. Lo que ha marcado la diferencia de eleccion de este sobre las demas
es lo eficiente que se vuelven las operaciones de carga y entrega de mercancıas en las
terminales camioneras en comparacion con las terminales aereas para cualquier tamano
del cargamento si la distancia recorrida es menor de 500 millas.
Con respecto al tren cualquier embarque que exceda las 10000 libras sera predomi-
nante su eleccion sobre la transportacion por camion. Una de las ventajas de esta forma
de transporte sobre sus competidoras es la flexibilidad que le proporcionan los cerca de
4 millones de millas infraestructura en caminos que permiten llegar de un punto a otro
en casi cualquier combinacion de origen y destino. Y la versatilidad que le da el poder
mover productos de cualquier tamano y peso a cualquier distancia. Por su flexibilidad
y versatilidad se ha convertido en la forma de transporte dominante en America y otras
partes del mundo ademas de que a podido ser involucrada en los programas de justo
a tiempo (JIT)1 con resultados en menores y confiables tiempos de transito. La ten-
dencia a utilizar esta forma de transporte va en aumento dada su compatibilidad con
1 Just in Time, metodologıa japonesa para un desempeno de inventarios ‘cero’
CAPITULO 1. INTRODUCCION 8
las necesidades de la industria por mover sus productos, mientras los proveedores de
estos servicios se esmeren en proveer un rapido y eficiente servicio a precios competi-
tivos respecto a sus competidores en aire y tren, la industria del transporte por trailer
prosperara.
Una vez que se ha seleccionado el modo de transporte una de las tareas de mayor
importancia y repercusion en los costos es la del ruteo y secuenciamiento. Consideran-
do las grandes inversiones en equipo y localizacion de instalaciones que conllevan los
gastos operativos, los transportistas han reconocido al importancia de un buen ruteo y
secuenciamiento para alcanzar los niveles de ganancias y servicio al cliente deseados.
En los ultimos anos estas areas han aumentado su importancia debido a factores de
competencia, legislacion y factores economicos, ejemplos de estos factores son los trata-
dos de libre comercio establecidos entre las naciones, costo de combustible, situacion
laboral y capacidad e innovaciones en los equipos.
Los transportistas se han dado cuenta que utilizando esta rama de la ciencia del
transporte se puede alcanzar beneficios considerables optimizando las actividades de
ruteo y secuenciamiento, aunque aquı no ahondaremos en que clase de tecnicas se
utilizan es importante mencionar que los grandes grupos industriales del mundo ya han
dado la oportunidad para probar el valor de estas propuestas y han visto su aportacion
en la disminucion de los costos de transporte.
Algunas de las estrategias que se siguen son: preasignacion de embarques para una
area especıfica de mercado al mismo tiempo que se disminuyen la frecuencia de los
envıos o visitas provocando un ahorro para el transportista.
La reduccion de la frecuencia de la recoleccion y entrega resulta en una disminucion
del nivel de transporte necesario para entregar la misma cantidad de producto, ası el
costo de transporte se reduce y la productividad aumenta. Otros ejemplos incluyen el
CAPITULO 1. INTRODUCCION 9
fijar las rutas en lugar de tener rutas variables para algunos embarques y modificacion
a las horas de recepcion de producto por parte del cliente, si el cliente puede aceptar
entregas fuera de los horarios crıticos, el transportista tendra una ventana de tiempo
mas grande que le permitira una mejor administracion del uso de los vehıculos.
En general los beneficios para los transportistas que mejoran su ruteo y secuenci-
amiento incluyen mayor utilizacion de los vehıculos, niveles mayores de satisfaccion al
cliente, disminucion de los costos de transporte, reduccion de la inversion en equipo y
una mejor administracion de la toma de decisiones. Como ejemplo de la aportacion de
una mejor asignacion y ruteo la empresa Baskin-Robbins una compania fabricante de
helados con 2500 tiendas en EU al utilizar una herramienta computacional para deter-
minar rutas y secuencias de su flotilla de transporte obtuvo ahorros de un 10% de las
millas recorridas totales de la flotilla, lo que se traduce en un beneficio economico de
$180,000.[34]
1.3. Objetivo de tesis
Teniendo en cuenta que todo aquel productor de bienes de consumo necesita del
transporte para hacer llegar su producto a la mayor parte del mercado y que este es re-
alizado por tractocamiones propios o rentados bajo un esquema 3PL, en una infraestruc-
tura carretera que conecta a las plantas de produccion con los centros de distribucion.
El problema de que recurso(tractocamion), el camino que seguira para cumplir con una
demanda establecida y los horarios en que debe estar disponible para cumplir con un
horario de atencion para descarga y carga.
El objetivo de este trabajo de investigacion y tesis es construir un modelo matematico
adecuado a este problema que de solucion al problema de asignacion de recursos de
transporte.
CAPITULO 1. INTRODUCCION 10
Como objetivos de este modelo tenemos:
Definir la cantidad optima de recursos de transporte que minimice el costo total
de transporte (fijo + variable).
Cumpliendo con las siguientes restricciones.
Volumen a mover.
Ventanas de carga en los orıgenes.
Ventanas de descarga en los orıgenes
La manera mas clara de ver el objetivo es poder responder a las preguntas ¿Que vehıcu-
lo? ¿A donde debe de ir? ¿A que hora esta disponible?
Este modelo ademas debera de poder ser implementado y probado con datos reales.
El exito de los resultados obtenidos podra servir como base para futuros proyectos
en colaboracion con la industria.
1.4. Organizacion de la tesis
La estructura de este trabajo esta dada de la siguiente forma: en el Capıtulo 2 pre-
sentamos un amplio recorrido por la historia de los trabajos que han buscado trabajar
variantes de este problema. El Capıtulo 3 comprende la exposicion del problema, la
formulacion y explicacion detallada del modelo matematico MIP que sera resuelto me-
diante las tecnicas de la programacion entera mixta. El Capıtulo 4 comprende el estudio
de dos casos practicos presentados por Sintec. Enseguida se presentan los experimentos
hechos con problemas aleatoriamente generados en el Capıtulo 5 y en el Capıtulo 6 se
presentan las conclusiones y las recomendaciones para los trabajos futuros.
Capıtulo 2
El problema y sus antecedentes
Desde la propuesta de Dantzig para resolver el problema de asignacion de vehıculos
conocido por sus siglas en ingles como (VRP), muchos investigadores han tratado este
problema. En aquel momento Dantzing y Ramser[7] presentaban la primer formulacion
matematica para un problema del mundo real, este consistıa en la la entrega de gasolina
a las estaciones de servicio. Unos anos mas tarde Clarke y Wright proponen una efectiva
heurıstica “greedy” que mejora la solucion de Dantzing-Ramser. A mas de 40 anos de la
publicacion de estos artıculos, se han propuesto muchos modelos, tecnicas de solucion
exactas, aproximaciones por heurısticas para resolver el VRP y sus variantes. En este
capıtulo abordaremos algunos de estos modelos al igual que algunas de las metodologıas
exactas y heurısticas utilizadas en los ultimos anos.
2.1. Introduccion a los problemas de ruteo.
La busqueda de una mejor manera de administrar las cadenas de suministro ha
permitido el incremento en el uso de paquetes de optimizacion basados en investigacion
de operaciones y modelacion matematica. El uso de estas tecnicas muestra ahorros
significativos entre el 5% al 20% de los costos totales de transporte. Estos costos por
11
CAPITULO 2. EL PROBLEMA Y SUS ANTECEDENTES 12
su participacion global adquieren mas importancia dentro de los costo total de cualquier
producto.
Los problemas conocidos como Problema de Ruteo de Vehıculo(VRP) o Problema
de Asignacion de Vehıculos (VSP) se pueden describir de una manera sencilla como
sigue:
Existen plantas de produccion, almacenes o depositos(origen) en donde se encuentra
el producto terminado, es necesario hacer llegar a los clientes(destino) una cantidad de
producto (demanda), los clientes se encuentran localizados a cierta distancia de los
puntos de origen. Para llegar a ellos el producto se mueve por vehıculos a traves de
caminos trazados(red de distribucion)
Habitualmente los VRP’s son una perfecta descripcion de los sistemas de distribu-
cion de companıas como Bimbo, Coca-Cola, Pepsi, Sabritas, etc. en general situaciones
de recoleccion y entrega de productos o servicios, ejemplos de estas son la recoleccion
de basura, transporte escolar o de personal, y en algunos casos los sistemas tipo entrega
a domicilio (taxis, pizzeria, mensajeria) pueden ser modelados de la misma forma.
De acuerdo a las caracterısticas en los elementos basicos del problema como: red de
caminos, clientes, depositos, vehıculos y conductores se pueden diferenciar entre varias
definiciones del problema
1. Red de caminos. Las redes de distribucion son generalmente representadas por
grafos en donde las aristas representan secciones de carretera o calles y los vertices
las intersecciones de los arcos en donde se encuentran los depositos y clientes. Estos
pueden ser dirigıdos o no dirigıdos dependiendo de la configuracion real de las calles
y carreteras, es decir si son de un solo sentido o en ambas direcciones. Ademas a
cada arco se le asocia un costo que representa la distancia y un tiempo de viaje el
cual puede depender del vehıculo y el perıodo durante el cual el arco es recorrido.
CAPITULO 2. EL PROBLEMA Y SUS ANTECEDENTES 13
2. Los clientes pueden asumir las siguientes caracterısticas:
Son localizados en los vertices del grafo,
Se define una cantidad de productos (demanda) posiblemente de diferentes
tipos para ser entregados o recolectados
Perıodos de tiempo durante los cuales los clientes pueden ser atendidos
Tiempos requeridos para recibir y recolectar los productos (carga y descarga)
y pueden depender del tipo de vehıculo
Un subconjunto de vehıculos a utilizar debido a restricciones de acceso o re-
querimientos para su carga y descarga
Para los casos en que la demanda no puede ser totalmente satisfecha para cada
cliente, la cantidad a entregar o recolectar es menor y un grupo de clientes que-
da sin ser atendido, se considera agregar penalizaciones o prioridades de servicio
asignadas
3. Entre las consideraciones de los depositos podemos encontrar tipo y numero de
vehıculos asignados, cantidad de productos para los que tiene capacidad. En al-
gunos casos los clientes son asignados a priori a cada deposito, y los vehıculos
tienen que regresar al deposito al terminar el dıa.
4. Para efectuar la transportacion de los productos se usan flotillas de vehıculos que
pueden estar compuestas de manera homogenea o heterogenea de acuerdo a los
requerimientos de los clientes las caracterısticas que presentan son:
Asignacion a un deposito central y la posibilidad de terminar su servicio en
un deposito diferente
Capacidad del vehıculo expresada como el maximo de peso, volumen, numero
de pallets que un vehıculo puede cargar.
CAPITULO 2. EL PROBLEMA Y SUS ANTECEDENTES 14
Posible division del vehıculo en compartimientos para transportar diferentes
tipos de productos, diferenciados por capacidad
Dispositivos para su carga y descarga
Existen costos asociados con el uso de los vehıculos ($/km , $/hr )
5. Hay restricciones de operacion referentes a los vehıculos como las derivadas por
la contratacion de conductores de los vehıculos y a las rutas, maxima carga del
vehıculo, clientes de solo entrega, solo recoleccion o ambas.
2.2. Trabajos sobre ruteo de vehıculos con ventanas
de tiempo
El problema de ruteo de vehıculos con ventanas de tiempo (VRPTW) es una exten-
sion del problema de ruteo de vehıculos con capacidad (CVRP) en el que se considera
lo siguiente; los vehıculos tienen una capacidad limitada y cada cliente i tiene incor-
porado un intervalo de tiempo [ai , bi] al que llamaremos ventana de tiempo . Tiempo
de viaje dado para cada punto (i, j) mas un tiempo de servicio para cada cliente si. El
tiempo en que un cliente comienza a ser atendido esta asociado a su ventana de tiempo
y podra estar en espera en la ubicacion del cliente en un tiempo igual a si, en caso de
que el vehıculo llegue antes del tiempo ai se le esta permitido esperar hasta que inicie
el servicio.
El VRPTW consiste en encontrar una coleccion exacta de de P circuitos simples un
mınimo costo que cumpla con lo siguiente:
Cada circuito visita el deposito.
Cada cliente se encuentra en un solo circuito.
CAPITULO 2. EL PROBLEMA Y SUS ANTECEDENTES 15
La suma de las demandas de los clientes localizados en un circuito no puede sobre
pasar la capacidad del vehıculo.
Para cada cliente i el servicio inicia con la ventana de tiempo [ai, bi] y el vehıculo
se detiene si instantes de tiempo.
Dada la importancia de este problema en la vida cotidiana, se han publicado nu-
merosos trabajos, en los que consta la diversidad de planteamientos que se puede pre-
sentar.
A continuacion se exponen algunos de ellos publicados y desarrollados durante los
ultimos 20 anos
Entre los trabajos que se pueden encontrar, algunos investigadores han desarrollado
compendios especiales del problema entre estos se encuentra el de Bodin et al. [19] con
un resumen de ruteo y secuenciamiento de vehıculos. Solomon y Desrosiers en[24] son
mas especıficos en problemas de ruteo con restricciones de temporalidad algunos anos
mas tarde Desrosieres et al. actualizo este estudio y lo publica en [12]. En cuanto a los
metodos de solucion heurısticos y exactos de los problemas VRPTW puede encontrarse
una compilacion en [26].
Los trabajos iniciales que consideraban restricciones de tiempo en problemas de
ruteo, se originan en el estudio del problema del agente viajero con ventanas de tiempo
(TSPTW) y el problema de “dial-a-ride ”servicio a domicilio.
Christofides et al. [31] definieron una tecnica que combina la solucion por medio
de ramificacion y cotas y programacion dinamica para relajar el espacio de solucion de
TSPTW. En el marco de estos trabajos Baker [4] publico un modelo matematico que
considera solo variables continuas, esta formulacion ademas de incluir una funcion de
valor absoluto lo que excluye el uso de tecnicas de solucion de programacion lineal.
Desrosiers et al. [13] modelaron este problema considerandolo el problema de mıni-
CAPITULO 2. EL PROBLEMA Y SUS ANTECEDENTES 16
mo costo de flujo en redes con restricciones de tiempo, con este se pudo resolver exi-
tosamente algunos problemas de secuenciamiento de vehıculos escolares con hasta 233
nodos.
Psaraftis [9] estudio el problema de un vehıculo con visita a varios puntos bajo
demanda, donde varios puntos se refiere a diferentes puntos de recoleccion y entrega de
bienes, nos referimos al concepto de bajo demanda a que la utilizacion del vehıculo se
presenta solo cuando alguien solicita el servicio ej. (repartidor de comida, servicio de
taxis). En esta investigacion uso programacion dinamica para minimizar la medida de
insatisfaccion de un cliente por el tiempo total que paso en el vehıculo. Problemas con
hasta 9 clientes se resolvieron optimamente.
En [14] Desrosiers et al. presentan una formulacion de programacion dinamica hacia
adelante para el mismo problema tratado por Psaraftis, estos resuelven problemas de
reales con hasta 40 clientes, y concluyen que su metodo es lo suficientemente robusto
para resolver problemas mas grandes pero debido a que en los problemas de la vida real
las ventanas de tiempo son demasiado ajustadas el espacio de solucion se ve fuertemente
reducido. Siguiendo la misma lınea de investigacion, Sexton y Bodin [36] trabajaron
el mismo problema con restricciones en los tiempos de entrega y desarrollaron una
heurıstica basada en descomposicion de Benders para encontrar rutas factibles.
Los metodos de solucion exacta usualmente consisten en procedimientos de enu-
meracion exhaustiva como los conocidos como: ramificacion y cotas o programacion
dinamica. Estas tecnicas pueden resultar con tiempos de computo muy largos dada la
dificultad del problema [32], para lograr una reduccion de los tiempos se utilizan tecni-
cas como la relajacion lagrangeana, generacion de columnas o planos cortantes como
ramificacion y cortes.
Kolen et al. [1] estudiaron el VRPTW considerando solo un deposito y un solo tipo de
CAPITULO 2. EL PROBLEMA Y SUS ANTECEDENTES 17
servicio (entrega o recoleccion) exclusivamente. Utilizando una tecnica de ramificacion
y cota para minimizar el total de la distancia de la ruta pudieron resolver problemas con
hasta 15 clientes con diferentes tiempos en las ventanas de tiempo. A pesar del tamano
de los problemas, se puede senalar el tamano y la frecuencia de la ventana como el
factor mas importante para determinar la dificultad del problema. Ni la capacidad del
vehıculo ni fijar el numero de vehıculos tienen un impacto cercano al de las ventanas
de tiempo.
Desrochers et al. en su trabajo [27] usa la tecnica de generacion de columnas para
resolver algunos problemas con 100 nodos hasta optimalidad con la funcion objetivo de
minimizar la distancia total recorrida. La idea para lograr esto consiste en formular el
VRPTW como un problema ”Set partitioning.en el que se consideran todas las rutas
factibles implıcitamente. Ya que este numero de rutas crece exponencialmente con el
numero de clientes solo una fraccion de las rutas es incluida en el modelo. En cada
iteracion del procedimiento se realiza un chequeo para determinar la existencia de una
ruta aun no incluida que pueda reducir el costo, esto se logra por la solucion relajada
de un subproblema de ruta mas corta con restricciones de tiempo y capacidad. Si
la ruta existe su columna correspondiente es agregada al modelo y el procedimiento se
repite hasta que el conjunto completo de rutas es encontrado. Para encontrar soluciones
enteras con este algoritmo se trabaja con un esquema ramificacion y cotas.
Kohl[30] usa la tecnicas de relajacion lagrangeana para descartar la restriccion de
atender a todos los clientes. Como resultado de la relajacion se transforma en un sub-
problema de ruta mas corta con restricciones de tiempo y capacidad el cuales un prob-
lema mas facil de resolver, de cualquier forma encontrar los mejores multiplicadores de
Lagrange requiere un considerable esfuerzo computacional. Usando esta tecnica se han
resuelto problemas con hasta 100 clientes.
CAPITULO 2. EL PROBLEMA Y SUS ANTECEDENTES 18
La combinacion de planos cortantes con una busqueda exhaustiva es conocida co-
mo ramificacion y corte. En esta aproximacion el problema inicial en formulado como
un problema entero mixto lineal. Ası las restricciones de integralidad se relajan y el
problema lineal resultante es optimizado, si la solucion es entera entonces el algoritmo
termina con una solucion optima del problema original y si la solucion es fraccional se
agregan desigualdades o cortes validos al modelo y el procedimiento se repite. Cuando
no se pueden identificar mas cortes por el procedimiento de separacion o el efecto de
cualquier desigualdad es marginal y la ramificacion ocurre.
Padberg y Rinaldi en su trabajo[28] primero utilizaron el metodo de planos cortantes
para resolver instancias grandes del problema del agente viajero (TSP). Una tecnica
similar fue usada por Hoffman y Padberg [18] para resolver un problema de secuenci-
amiento de tripulacion de aerolıneas, otro trabajo es el de Aranque [10] desarrollo un
algoritmo ramificacion y corte para un problema de ruteo de vehıculos con clientes
identicos, Augerat [33] presenta nuevas desigualdades para el problema de capacidad
simetrica de ruteo de vehıculos.
La solucion por metodos exactos de este problema solo es efectiva en tiempo en
problemas de tamano relativamente chico, esto hace util el uso de tecnicas heurısticas.
Una tecnica heurıstica es capaz de encontrar buenas soluciones en un tiempo menor
esto hace que sean tecnicas atractivas de solucion para los problemas de gran tamano
que se encuentran en la industria. A continuacion se citaran algunos trabajos que hacen
uso de las tecnicas heurısticas para la solucion de estos problemas.
Nygard et al. [17] estudiaron una variante del VRPTW considerando unicamente
ventanas de tiempo de un lado es decir de cierre. Inicialmente los clientes se agrupan en
“clusters” resolviendo el problema general de asignacion, el siguiente paso es calcular
los subtours optimos para cada grupo o cluster y finalmente un procedimiento de cambio
CAPITULO 2. EL PROBLEMA Y SUS ANTECEDENTES 19
de rama para asegurar que las restricciones temporales son satisfechas. Solomon [22]
propuso una heurıstica de insercion secuencial para el problema de minimizacion del
tamano de la flota con un solo tipo de servicio del VRPTW. Las rutas son construidas
una a la vez por la insercion de clientes en al mejor posicion de acuerdo con un parametro
en funcion de costo. Diferentes soluciones se obtienen por la variacion de los parametros
de la funcion de costo. El peor caso en la aplicacion de esta heurıstica es Ω(n), donde
n es el numero de clientes, se puede encontrar a mas detalle la explicacion del uso de
esta heurıstica en [23], esto significa que en el peor caso la proporcion de la diferencia
de la solucion de la heurıstica contra la solucion optima crece proporcionalmente con
el numero de clientes. Potvin y Rousseau [11]desarrollaron una heurıstica paralela a
la version de Solomon, en esta se construyen varias rutas al mismo tiempo insertando
clientes en la mejor posicion entre las rutas completas parcialmente.
Las tecnicas heurısticas usualmente son complementadas por tecnicas de busque-
da en la vecindad para obtener resultados optimos locales. Iniciando con una solucion
factible una nueva solucion se obtiene por el intercambio de la posicion de un pequeno
grupo de los clientes usualmente dos o tres. El intercambio de la posicion de los clientes
se enumera exhaustivamente hasta que no existe alguna reduccion en la funcion obje-
tivo. Baker y Schaffer [5]estudiaron algunos procedimientos de busqueda local para el
VRPTW modificando los procedimientos de 2-opt y 3-opt de intercambio utilizados el
problema clasico de VRP para poder tomar en cuenta las restricciones de las ventanas
de tiempo y capacidad de los vehıculos. Dos trabajos recientes [25]de Solomon et al.
y [29] Savelsbergh han buscado una disminucion de la complejidad del intercambio de
planos en el VRPTW.
Dentro de las tecnicas heurısticas utilizadas para la solucion del VRPTW , las que
tecnicas probabilısticas han recibido mayor atencion por parte de los investigadores
CAPITULO 2. EL PROBLEMA Y SUS ANTECEDENTES 20
debido a su habilidad para trascender de una optimalidad local. Este mejoramiento en
la busqueda se alcanza por la diversificacion de la misma, pasando de areas en el espacio
de solucion, de mejora muy pobre hacia areas mas prometedoras. Thangiah et al. [35]
en su trabajo propusieron una combinacion de busqueda tabu, algoritmos geneticos
y recocido simulado para solucionar el VRPTW. Con este metodo se han alcanzado
los mejores resultados conocidos para problemas clasicos encontrados en la literatura.
Potvin et al.[15] desarrollaron un algoritmo de busqueda tabu, este algoritmo utiliza
un algoritmo de intercambio especial, con el fin de aprovechar al solucion dada por la
heurıstica determinıstica de Solomon. Potvin and Bengio [16] siguieron una forma de
trabajo similar y usan las soluciones obtenidas por la heurıstica de Solomon para generar
nuevas soluciones a partir de un algoritmo genetico. Rochat y Tailard en [37] trabajan
con una heurıstica de probabilidad que aprovecha las capacidades de diversificacion e
intesificacion de anteriores trabajos con busqueda tabu.
Otros metodos son los basados en K-arboles. Fisher[21] extendio el trabajo realizado
por el metodo 1-arbol para el problema de ruteo de vehıculos y el ruteo de vehıculos
con ventanas de tiempo. En esta aproximacion se supone que cada ruta contiene al
menos dos clientes, se formula un modelo matematico particular y las restricciones son
relajadas por el metodo lagrangeano.
Capıtulo 3
Exposicion del Problema
En muchas organizaciones, la administracion de las actividades de distribucion con-
stituye un problema de toma de decisiones. Este problema ha cobrado mas importancia
debido a la contribucion de los costos de distribucion dentro de los costos totales. La
mayorıa de las companıas requieren de vehıculos para la recoleccion y entrega dentro
de una red de suministro o demanda. La utilizacion y ruteo eficiente de esta flotilla es
el nucleo de la mayorıa de los problemas de ruteo.
Una pregunta que se efectua con frecuencia por los gerentes de distribucion es
¿Cuantos vehıculos son necesarios para satisfacer una demanda a un costo mınimo?
Esta pregunta es difıcil de contestar dada la enorme gama de combinaciones de mezcla
de flotilla y rutas que pueden existir, abriendo la posibilidad de formular el problema
presentado en esta tesis.
3.1. Introduccion
Los problemas de ruteo de vehıculos existen en un ambiente compuesto por redes
de distribucion formadas con Plantas de Produccion y varios Centros de Distribucion,
este ambiente facilita la concentracion de los productos para facilitar su acceso a los
21
CAPITULO 3. EXPOSICION DEL PROBLEMA 22
clientes finales.
Para realizar el transporte desde las plantas hasta los centros de distribucion, existe
un proceso de seleccion del tipo y la cantidad de vehıculos a asignar para realizar esta
tarea. Esta seleccion da lugar a un proceso de toma de decisiones auxiliado por la
Investigacion de Operaciones.
Mediante este proceso se busca minimizar los costos totales de transporte esto es: el
costo fijo que es en el que se incurre por la adquisicion del vehıculo ya sea por compra
o renta del mismo, independientemente se use o no, el costo variable que representa los
costos por combustible y distancia entre la planta y el centro de distribucion siempre
que este vehıculo sea utilizado.
Ademas de estos, nuestra red de distribucion esta sujeta a horarios de atencion para
carga y descarga de los vehıculos en los centros de distribucion como en la planta estos
espacios de tiempo son conocidos como ventanas de tiempo.
3.1.1. Por que optimizar?
La naturaleza del problema nos presenta alternativas en la toma de decisiones para
lograr ahorros en la operacion.
Un numero ilimitado de vehıculos disminuirıa el incumplimiento en las ventanas
de tiempo de los Centros de distribucion ası como un menor numero de viajes
totales a cada CD. Como consecuencia el costo fijo total de la flotilla sera muy
alto.
Con un numero limitado de vehıculos el incumplimiento en las ventanas de tiempo
en los CD serıa mayor, ademas el numero de viajes tambien serıa mas grande, lo
que hace nuestro costo variable aumente .
CAPITULO 3. EXPOSICION DEL PROBLEMA 23
Encontrar el equilibrio entre estas dos alternativas da la posibilidad de poder plantear
esta situacion como un problema de optimizacion que se pueda resolver mediante tecni-
cas de optimizacion.
3.1.2. Sintec
Para la realizacion de esta tesis se conto con el apoyo de Sintec empresa de con-
sultorıa en Generacion de Valor, a traves del desarrollo e implementacion estrategias y
tecnologıas que fortalezcan el desempeno de la Cadena de Valor. Dentro de las consul-
torıas establecidas en Mexico, Sintec es uno de los principales generadores de educacion
y capacitacion en temas de Cadena de Demanda, Cadena de Suministro, Tecnologıa de
la Informacion y organizador del evento Visum.
Sintec, fue fundada en 1987 en Monterrey N.L Mexico y desde su fundacion ha sido
una empresa lıder comprometida con la generacion de valor a sus clientes. Entre los
clientes con los que ha trabajado estan las mas importantes de Mexico entre ellos Coca
Cola FEMSA, Cerveceria Cuahtemoc, Lamosa, Liverpool,Cemex,Qualtia.
Dada la experiencia y reconocimento que ha adquirido en estos anos de excelentes
resultados con sus clientes, por su cercanıa con la practica de las tecnicas de la inves-
tigacion de operaciones y los problemas de nuestro interes para el desarrollo de una
tesis, se considero una empresa adecuada para realizar este trabajo, por su parte se nos
acepto como una propuesta seria de trabajo y tenemos el orgullo de ser aceptados para
presentar una solucion a un problema tıpicamente expuesto a ellos.
Durante sesiones de trabajo con los gerentes del area de suministro Roberto Palacios
y Gerardo Naranjo se obtuvo la informacion necesaria para hacer de este problema
presente en la practica un modelo de optimizacion, estos modelos seran presentados a
continuacion.
CAPITULO 3. EXPOSICION DEL PROBLEMA 24
3.1.3. Modelos Matematicos
La informacion presentada por Sintec describe el problema expuesto en la introduc-
cion de este capıtulo. Recordemos que este problema consiste en la seleccion de recursos
de transporte dentro de una red de distribucion compuesta por una Planta de produc-
cion y Centros de Distribucion con restricciones de horarios de atencion para carga y
descarga de producto en cada una de las instalaciones. En el desarrollo de los mode-
los de optimizacion que representaran la realidad del problema, por la gran y variable
existencia de trabajos que tratan el problema del ruteo de vehıculos con ventanas de
tiempo se penso que se podrıa adaptar alguno de los modelos ya existentes sin embargo
con el estudio mas profundo de estos modelos entendimos que las suposiciones que los
investigadores tomaron para estos modelos en la mayorıa de de los casos no representa-
ban las mismas suposiciones de nuestro problema. Crear un modelo que considerara los
supuestos presentados por Sintec es el objetivo de este trabajo.
El modelo se fue construyendo en un proceso de evolucion hasta llegar al modelo
que representa lo mas fiel posible la situacion de la red y sus restricciones es decir la
descripcion del problema. Cabe mencionar que se ha buscado mantener la linealidad de
los modelos lo que nos permitirıa la solucion del mismo por las tecnicas ya conocidas
para problemas del tipo MIP
Estos modelos son los siguientes.
1. Modelo I.
Las consideraciones que se modelan son las siguientes:
El Vehıculo es usado una sola vez
Se satisface la demanda en cada cliente y se respetan las ventanas de tiempo
Existe un solo tipo de vehıculos, es decir todos los vehıculos tienen las mismas
CAPITULO 3. EXPOSICION DEL PROBLEMA 25
caracterısticas de capacidad.
Las rutas son fijas y enumeradas
Resultados de este modelo: Este modelo no ofrece ninguna optimizacion sobre los
costos de transporte solo cumple con la asignacion de un vehıculo por cliente como
mınimo y si requiere hacer mas viajes para satisfacer demanda asigna un vehıculo
nuevo por cada viaje extra que requiera para satisfacer demanda. Es importante saber
que la capacidad del vehıculo es menor o igual que la demanda. Esta formulacion se
toma como base de los siguientes modelos.
2. Modelo II.
Las consideraciones en este modelo son las siguientes:
El vehıculo deja el deposito, visita un cliente al terminar regresa al deposito y
vuelve a visitar al mismo cliente hasta satisfacer demanda.
Se satisface la demanda en cada cliente y se respetan las ventanas de tiempo
Existe un solo tipo de vehıculos, es decir todos los vehıculos tienen las mismas
caracterısticas de capacidad
Las rutas son fijas y enumeradas
Resultados de este modelo: Como consecuencia de permitir hacer varios recorridos
por vehıculo, la cantidad de vehıculos asignados es igual al numero de clientes. La toma
de decisiones parte de los horarios en que deben ser asignadas las salidas en cada una
de las ocasiones en que el vehıculo salga a realizar una entrega. Existen penalizaciones
por llegadas temprano (el centro de distribucion aun no ha abierto) y por llegadas tarde
(el centro de distribucion ya cerro). Por lo que busca el mejor acomodo en las salidas
de los vehıculos para evitar violaciones en los horarios de los centros de distribucion.
CAPITULO 3. EXPOSICION DEL PROBLEMA 26
3. Modelo III
Las consideraciones de este modelo son las siguientes:
El vehıculo parte del deposito con el fin de visitar un cliente, este es visitado las
ocasiones necesarias para satisfacer demanda
Se satisface la demanda en cada cliente y se respetan las ventanas de tiempo
Existe tres tipos de vehıculos, diferenciados por su capacidad.
Resultados de este modelo: Contar con hasta tres tipos de vehıculo hace una asignacion
de estos de acuerdo a las demandas de los clientes y a las diferentes capacidades de los
vehıculos. Este modelo genera soluciones en la parte de la optimizacion de los costos
variables. De acuerdo a las ventanas de tiempo se elige entre mandar un camion de la
menor capacidad varias veces o uno de mayor capacidad un numero menor de veces.
Como resultado final de esta evolucion de modelos se obtiene un modelo matematico
del tipo Entero Mixto Lineal (MIP)
3.2. Formulacion Matematica
Como ya se ha descrito el problema que se trata de solucionar en este trabajo
cosiste en la seleccion de los recursos de transporte para distribuir productos entre una
planta de produccion y los centros de distribucion que mas adelante se haran cargo de
hacerlo llegar a los clientes finales. La solucion a este problema considera las siguientes
suposiciones.
Los terminos planta de produccion y centros de distribucion son una particularidad
de nuestro problema. A estos tambien se les puede mencionar como deposito y clientes
respectivamente
CAPITULO 3. EXPOSICION DEL PROBLEMA 27
3.2.1. Suposiciones del problema
1. Se satisface la demanda de todos los clientes. Esto significa que para todos los
centros de distribucion que se encuentren asignados a una planta de produccion
se cumple con la oferta de servicio, es decir se le entrega el producto requerido en
tiempo y cantidad.
2. Solo se calcula el tiempo de inicio del primer viaje de cada uno de los vehıculos. Es
decir la optimizacion del tiempo al que debe iniciar cada viaje considera el mejor
primer tiempo para iniciar la entrega de todos los pedidos que pueda hacer ese
vehıculo de acuerdo a las ventanas de tiempo de los centros de distribucion
3. Existen las penalizaciones por llegada fuera del horario de servicio. Esto significa,
que se puede ajustar el nivel de servicio que se desea proveer a los centros de
distribucion. Las penalizacion por llegada fuera del horario de servicio se puede
fijar en tarifas muy altas lo que nos representa la situacion en la que no se permite
la violacion al horario de servicio, por consiguiente el nivel de servicio es de 100% ,
por el contrario si se requiere presentar la situacion en que se sacrifique el nivel de
servicio estas tarifas se ajustan en costos a los que el modelo evalua, y ası obtener
una seleccion entre salir del horario permitido o adquirir mas vehıculos de acuerdo
al costo.
4. La capacidad maxima de cualquiera de los tipos de vehıculos disponibles es inferior
a la demanda de los centros de distribucion, es decir en un solo camion y un viaje
no se podrıa satisfacer la demanda.
CAPITULO 3. EXPOSICION DEL PROBLEMA 28
5. Los vehıculos pueden visitar a un cliente tantas veces se ha necesario para satisfacer
la demanda dentro de las ventanas de tiempo de cada cliente.
Otra forma en la que se presenta este problema es cuando el cliente tiene una
demanda multiplo de la capacidad de los vehıculos. El abastecimiento de las esta-
ciones de servicio de PEMEX es el ejemplo de este tipo de problema. En este la
demanda a satisfacer es por “pipas ”completas de combustible, estas deben visitar
la estacion de servicio 2 o 3 veces por dıa.
6. El problema es determinıstico.
3.2.2. Definicion del Modelo Matematico
1. El modelo matematico resultante, definido por las restricciones y la funcion objeti-
vo, se plantea como un modelo Lineal Entero Mixto (MIP) y se utiliza la siguiente
notacion.
Conjuntos e Indices
I Conjunto de los clientes
J Conjunto de los viajes
K Conjunto de los vehıculos
i=Indice de los Clientes i,∈ I = 0, 1, 2, 3..I
El cliente 0 es la planta de produccion ocasionalemente tambien se conoce como
deposito
j=Indice de los viajes j ∈ J = 1, 2, 3..J
k=Indice de los Vehıculos k ∈ K = 1, 2, 3..K
CAPITULO 3. EXPOSICION DEL PROBLEMA 29
Parametros
Ei= La hora de apertura de la ventana de tiempo en cada cliente i ∈ I.
Li=La hora de cierre de la ventana de tiempo en cada cliente i ∈ I.
Cikt= Costo de viaje al cliente i con el vehıculo k del tipo t; i ∈ I, k ∈ K, t ∈ T.
Fkt=Costo Fijo del vehıculo k del tipo t; k ∈ K, t ∈ T .
Cdi=Costo por llegada tarde al cliente i; i ∈ I.
Cei=Costo por llegada temprano al cliente i; i ∈ I.
Di=Demanda en cada cliente i ;i ∈ I.
θi=Tiempo que dura el recorrido al cliente i; i ∈ I.
Qkt=Capacidad del vehıculo k tipo t; k ∈ K, t ∈ T.
Variables
Xijk=
1 Si el cliente i es visitado en el viaje j por el vehiculo k.
0 Si no
Yk=
1 Si el vehıculo k es usado
0 Si no
Sjk =Tiempo en que sale el vehıculo k en el viaje j.
W+ijk =Tiempo que espera el vehıculo k en el cliente i en su viaje j
W−ijk =Tiempo que esta retrasado el vehıculo k en el cliente i en su viaje j
Ver que el uso del ındice j como un contador interno discreto del tiempo para cada
vehıculo k, asi en cualquier viaje j el vehıculo k puede estar con un cliente o permanecer
en el deposito (i = 0)
CAPITULO 3. EXPOSICION DEL PROBLEMA 30
Formulacion
mın∑
k
FkYk +∑ijk
(CikXijk + CeiW
+ijk + CdiW
−ijk
)(3.1)
Sujeto a:
X0jk +∑i6=0
Xijk = 1; j ∈ J, k ∈ K (3.2)
∑QkXijk ≥ di ; i ∈ I/0 (3.3)
Jk −∑
X0jk ≤ YkJk ; k ∈ K (3.4)
Sj+1,k ≥ Sjk +∑
Xijk2θi ; j ∈ J, k ∈ K (3.5)
W+ijk ≥ EiXijk − (Sjk + θiXijk) ; i ∈ I, j ∈ J, k ∈ K (3.6)
W−ijk ≥ (Sjk + θiXijk)− Li −M (1−Xijk) ; i ∈ I, j ∈ J, k ∈ K (3.7)
Xijk, Yk ∈ 0, 1 , W+ijk, W
−ijk, Sjk ≥ 0 (3.8)
La expresion 3.1 representa la funcion objetivo donde se minimiza el total de los
costos fijos, costos de viaje y costos por desviaciones de la ventana de atencion a cliente.
La minimizacion resulta de la obtencion de los mejores valores de las variables de
decision Xijk,Yk, W+ijk, W
+ijk que minimicen el costo total.
El conjunto de las restricciones 3.2 asegura que para cualquier viaje un vehıculo
se encuentra exactamente en un cliente o en el deposito (cliente (0). Una restriccion
obligatoria en la mayorıa de los problemas de ruteo es la de cumplimiento de la demanda
en los clientes esta se asegura con la expresion 3.3, esta establece que la demanda de
cada cliente debe ser satisfecha.
El conjunto de las restricciones 3.4 junto con el objetivo de minimizar aseguran que
sı el vehıculo permanece en todos los viajes en el deposito este no ha sido usado. Las
CAPITULO 3. EXPOSICION DEL PROBLEMA 31
siguientes restricciones formulan las condiciones que se tienen sobre el tiempo ası el
conjunto de restricciones 3.5 determina que un viaje solo puede iniciar hasta que el
vehıculo k ha regresado al deposito de su viaje previo.
La restriccion del tipo 3.6 en conjunto con el objetivo de minimizacion asegura que
si en cualquier viaje j, el cliente no es visitado (Xijk = 0) entonces no hay costo por
llegar temprano dado que (W+ijk = 0), si el cliente si es visitado (Xijk = 1) el calculo de
la desviacion del tiempo se calcula de forma normal . De manera similar las restricciones
3.7 estiman el tiempo por llegada despues del fin de la ventana de tiempo. Aquı M es
un numero entero positivo(M > Sjk − Li).
Es claro que en 3.6 y en 3.7 W+ijk ≥ 0 solo para Sjk + ti < Ei mientras que W−
ijk ≥ 0
solo para Sjk + ti > Li . Ası para Ei < Li siempre existe(W+
ijk
) (W−
ijk
)= 0. La solucion
de 3.1-3.8 indica la cantidad de vehıculos a ser usados (Yk), provee de un programa de
distribucion dado por el orden de las visitas (Xijk) y el horario en que los vehıculos
deben despacharse en cada viaje (Sjk).
3.3. Metodo de solucion
3.3.1. Programacion Entera (MIP)
En contraste con los problemas de programacion lineal, los problemas formulados
en programacion entera tienen mayor dificultad para resolverlos. En realidad no existe
un algoritmo de aplicacion general que pueda resolver este tipo de problemas. La falta
de este algoritmo general da cabida a intentar resolver este tipo de problemas me-
diante varios tipos de algoritmos. Existen tres categorıas principales de algoritmos de
solucion:[2]
(a) Algoritmos Exactos, estos aseguran la obtencion de una solucion optima a expensas
CAPITULO 3. EXPOSICION DEL PROBLEMA 32
de un numero alto de iteraciones. Dentro de este grupo se encuentran los algoritmos
planos cortantes, ramificacion - cota, ramificacion-corte y programacion dinamica.
(b) Algoritmos de Aproximacion, estos obtienen una solucion suboptima en un tiempo
polinomial junto con una cota respecto al grado de suboptimalidad presente.
(c) Algoritmos heurısticos proveen una solucion suboptima , pero sin garantizar su cal-
idad, ademas su tiempo de ejecucion no se garantiza que sea polinomial, estudios
empıricos apuntan a que en la mayorıa de los casos se logra una buena solucion
rapidamente, algunos ejemplos de estos metodos son las busquedas locales, reco-
cido simulado, busqueda TABU, Algoritmos geneticos.
En la busqueda de la solucion de nuestra formulacion se utiliza la tecnica de ramifi-
cacion-cota, esta es muy utilizada en las herramientas computacionales disenadas para
resolver estos problemas. Como se explica mas adelante las herramientas computa-
cionales logran implementar estos algoritmos con exito ademas de resolver problemas
muy grandes en poco tiempo.
3.3.2. Herramientas Computacionales
Aunque las tecnicas de solucion puedan realizarse a “mano”, en la realidad es difıcil
encontrar problemas que se puedan solucionar de forma manual, el apoyo de las her-
ramientas computacionales ha permitido a traves de los anos incrementar la dificultad
de los problemas a resolver, el avance en las tecnologıas computacionales a dado, mas
libertad para plantear problemas mas complejos y que requieran de mas calculos.
Para solucionar el modelo matematico planteado en este trabajo se utilizaron dos
herramientas computacionales, la primera es el lenguaje modelador, este programa es
utilizado en la creacion del modelo matematico de forma que la computadora lo pueda
entender y ası resolver. Existe gran variedad de modeladores matematicos entre los que
CAPITULO 3. EXPOSICION DEL PROBLEMA 33
se encuentran LINDO, GAMMS, AMPL,XPress MP, etc [6]. Un lenguaje modelador
toma la formulacion matematica anteriormente descrita y transforma en un conjunto
de instrucciones que mas adelante podran ser interpretadas por otro programa conoci-
do como el motor de solucion (solver), esta es la segunda herramienta necesaria para
resolver problemas de optimizacion.
Entre los motores de solucion uno de los mas conocidos y robusto es CPLEX de Ilog
este motor de solucion contiene los algoritmos de solucion para PL,MIP,QP, ademas de
este existen otros solucionadores como LINGO, MOSEK,SOPT, XPress con variantes
de capacidad en el tipo de problemas que resuelven. En el articulo [6] se describe
una encuesta actualizada del software disponible para solucionar los problemas de la
programacion lineal.
Como lenguaje modelador para resolver nuestro problema se selecciono AMPL por
ser una herramienta en la que facilmente se puede implementar cualquier formulacion
matematica propuesta.
En AMPL la formulacion matematica se divide en dos elementos, uno el modelo
matematico es decir la funcion objetivo, las restricciones y las variables, el otro elemento
son los datos concretos del problema a resolver. Estos dos elementos se guardan por
separado en dos archivos uno es el modelonombre.mod y el que contiene los datos
modelonombre.dat.
Una vez que se tiene la formulacion del problema en AMPL se resuelve mediante
el solver CPLEX de Ilog, en nuestro caso Cplex implementa un algoritmo de Branch-
Bound muy similar al explicado anteriormente para resolver el problema. Para mas
detalle sobre AMPL y Cplex en la seccion de Apendices, se encuentra un resumen con
lo mas relevante de las herramientas.
Capıtulo 4
Casos Practicos
Con el apoyo de Sintec se pudieron plantear dos problemas practicos presentes en sus
clientes. Para dos empresas de productos de consumo que tuvieron la necesidad definir
el tamano y tipo de la flota de transporte para realizar la distribucion de sus productos.
En ambos casos se considera de gran importancia el nivel de servicio otorgado por estas
companias, y la implicaciones de no satisfacer al cliente por lo que la definicion de la
flota esta basada en supuestos de servicio.
4.1. Caso 1
Figura 4.1: Red de distribucion Valle de Mexico
El caso uno se localiza en una red de distribucion en el area del Valle de Mexico
34
CAPITULO 4. CASOS PRACTICOS 35
y esta formada por una planta de produccion y 13 centros de distribucion, la figura(
4.1)muestra la una vista de la red cada uno de estos centros de distribucion tiene horario
definido de apertura de 8:00 a.m y de cierre de 5:00 p.m, estos son estrictos en su
cumplimiento debido al enfoque de servicio en el que se estan plateando los problemas.
La tabla 4.1 muestra los datos de cada uno de los centros de distribucion en este caso
los costos por llegada adelantada o en retraso se consideran los suficientemente grandes
para evitar la llegada fuera de las ventanas y resolver el modelo con las ventanas de
tiempo duras.
Cliente Hora Costos Demanda Tiempo Recorridoapertura cierre Adelantado Retrasado
Deposito 0 24 0 0 0 0La Viga 8 17 100000 100000 772.12 3.63Vallejo 8 17 100000 100000 870.47 3.63Zaragoza 8 17 100000 100000 2300.80 4.63Tlalpan 8 17 100000 100000 2401.05 4.13Iztapalapa 8 17 100000 100000 2674.23 4.04Mixcoac 8 17 100000 100000 3671.67 4.63Tlalnepanatla 8 17 100000 100000 4807.42 3.63Cuatitlan 8 17 100000 100000 5156.43 1.63Huixquilucan 8 17 100000 100000 7999.24 4.13Reyes 8 17 100000 100000 8521.68 4.63Chalco 8 17 100000 100000 8893.52 4.63Texcoco 8 17 100000 100000 10878.64 5.63Coacalo 8 17 100000 100000 12452.37 5.125
Tabla 4.1: Parametros clientes
Los datos de los vehıculos utilizados se presentan en la siguiente tabla
Vehıculos Costo fijo Capacidad1-29 10000 144030-50 15000 2880
Tabla 4.2: Parametros de los vehıculos
Para cada destino se tiene diferente costo variable dependiendo de factores como la
distancia y tipo de caminos transitados
CAPITULO 4. CASOS PRACTICOS 36
Destino Costo VariableLaviga $1103Vallejo $1116Zaragoza $1181Tlalpan $1168Iztapalapa $1094Mixcoac $1116Tlalnepantla $1160Cuatitlan $1203Huixquilucan $1081Reyes $1203Chalco $1344Texcoco $1269Coacalco $1291
Tabla 4.3: Costos Variables a cada destino
Como resultado del modelo se obtiene un programa de distribucion con detalle en
las horas a las que debe salir, el destino de cada vehıculo, por cada uno de los viajes
de salida, para este problema el maximo numero de viajes que puede realizar cada
vehıculo es de 7 dado el tiempo de recorrido que hay entre el deposito y los centros de
distribucion.
Los resultados de secuenciamiento se presentan a continuacion.
Estos estan divididos en dos partes de acuerdo a la capacidad de los vehıculos
primero se muestran los vehıculos de capacidad sencilla ver tabla 4.4 es decir trailer
de una caja. A continuacion se presenta el programa de distribucion para los vehıculos
dobles o “full ”ver la tabla(4.5).
Los resultados mostrados en estas tablas se pueden ilustrar con el siguiente ejemplo:
El vehıculo 1 inicia su viaje hacia Reyes a las 3.37 (aproximadamente las 3:22 horas),
regresa al deposito a las 12.63 (aproximadamente las 12:37), por las consideraciones
hechas en este problema suponemos disponibilidad inmediata para iniciar el siguiente
viaje, ası el vehıculo 1 es asignado para seguir hacia Vallejo. Una conclusion impor-
CAPITULO 4. CASOS PRACTICOS 37
Programa de DistribucionVehıculo Destino Tiempo Inicio Tiempo de viaje Tiempo disponibilidad1 Reyes 3.37 9.26 12.631 Vallejo 12.63 7.26 19.892 Coacalco 2.875 10.25 13.1253 Huixquilucan 3.87 8.26 12.133 Reyes 12.13 9.26 21.394 Huixquilucan 3.87 8.26 12.134 Chalco 12.13 9.26 21.395 Chalco 3.87 9.26 13.136 Chalco 3.37 9.26 12.637 Coacalco 2.875 10.25 13.1258 Reyes 3.37 9.26 12.638 La Viga 12.63 7.26 19.899 Chalco 3.37 9.26 12.6310 Chalco 3.37 9.26 12.6311 Reyes 3.37 9.26 12.6312 Coacalco 2.875 10.25 13.12513 Coacalco 2.875 10.25 13.12514 Coacalco 2.875 10.25 13.125
Tabla 4.4: Resultados Clientes Vehıculos Sencillos
tante de los resultados obtenidos es que de un total de 50 vehıculos disponibles solo
se requieren 25 para la satisfaccion de la demanda de los 13 clientes asignados de la
siguiente forma: 14 vehıculos de capacidad sencilla y 11 vehıculos de doble capacidad.
Los resultados como el tiempo de solucion se muestran en la siguiente tabla ( 4.6).
Aunque en este tiempo no obtenemos una solucion optima nuestra solucion factible
alcanzada en 1 hora resulta una excelente propuesta dado el numero de vehıculos a
utilizar en total para cumplir con el servicio.
Es importante mencionar que la optimalidad del problema resulta ser un criterio
subjetivo para evaluar la efectividad de nuestro modelo, la optimalidad de un resultado
en este tipo de problemas se comprueba hasta que se explora la totalidad del arbol
creado por el metodo de ramificacion y cota.
En su aplicacion en los problemas reales, este arbol puede alcanzar un tamano en
CAPITULO 4. CASOS PRACTICOS 38
Programa de DistribucionVehıculo Destino Tiempo Inicio Tiempo de viaje Tiempo disponibilidad
15 Reyes 3.37 9.26 12.6315 Tlapan 12.63 8.26 20.8916 Tlalnepantla 4.37 7.26 11.6316 Mixcoac 11.63 9.26 20.8917 Iztapa 3.96 8.08 12.0417 Chalco 12.04 9.26 21.318 Texcoco 2.37 11.26 13.6318 Cuatitlan 13.63 3.26 16.8919 Texcoco 2.37 11.26 13.6320 Mixcoac 3.37 9.26 12.6320 Huixquilucan 12.63 8.26 20.8921 Huixquilucan 3.87 8.26 12.1321 Zaragoza 12.13 9.26 21.3922 Tlalnepantla 4.37 7.26 11.6322 Coacalco 11.63 10.25 21.8823 Coacalco 2.87 10.25 13.1224 Texcoco 2.37 11.26 13.6325 Texcoco 2.37 11.26 13.6325 Cuatitlan 13.63 3.26 16.89
Tabla 4.5: Resultados Clientes Vehıculos Dobles
el que por la restriccion del tiempo la exploracion total del arbol resulta intrascendente
cuando con un tiempo lımite se alcanza una solucion que satisface el requerimiento de
beneficios esperados.
Nombre del Problema Tiempo CPU Nodos Arbol ObjetivoVrpSin1 3,706 Seg 31,513 $ 350,136
Tabla 4.6: Resultados Caso Practico 1
4.2. Caso 2
El caso dos se presenta para otro cliente de Sintec, en este la red de distribucion varia
un poco y solo modelamos un segmento de los clientes de esta empresa de productos
CAPITULO 4. CASOS PRACTICOS 39
de consumo (GAMESA). La red esta formada por una planta productora situada en
Monterrey, N.L y 5 de sus clientes de mayor volumen y con entrega centralizada en sus
centros de distribucion, este tipo de clientes fue seleccionado por las suposiciones en las
que se baso la formulacion del modelo general.
Figura 4.2: Red de distribucion Clientes Centralizados
Es decir estos clientes cumplen con los requisitos de tener una demanda mayor a la
capacidad de los vehıculos disponibles, poder ser visitados mas de una vez si es necesario
para satisfacer la demanda y tener ventanas tiempo para recepcion de producto.
De igual manera que con el caso uno se presentan los datos de este problema en la
tabla 4.7
Cliente Hora Costos Demanda Tiempo Recorridoapertura cierre Adelantado Retrasado
Planta 0 0 0 0 0 0HEB 6.5 22.5 100000 100000 191 8.54GCA 7 22 100000 100000 114 4.11SCM 0 23.98 100000 100000 142 6.93WBM 0 12 100000 100000 240 5.88WSC 0 12 100000 100000 201 5.8
Tabla 4.7: Parametros clientes Caso 2
CAPITULO 4. CASOS PRACTICOS 40
Los datos de los vehıculos utilizados se presentan en la siguiente tabla
Vehıculos Costo fijo Capacidad1-10 10000 2411-15 20000 40
Tabla 4.8: Parametros de los vehıculos
En este caso, cada uno de los clientes esta situado en un rango de distancia consi-
derado por la empresa como un perımetro mınimo o “local ”por lo que el costo en el
que se incurre en cada uno de los viajes es el mismo.
Destino Descripcion Costo VariableHEB HEB $300GCA Gigante $300SCM Soriana $300WBM Walmart Mty $300WSC Walmart Super C $300
Tabla 4.9: Costos Variables a cada destino
El resultado de este problema de igual forma se presenta como un programa de
distribucion en el que se detalla la hora de salida y el destino de cada uno de los viajes
ejecutados. Para este problema el numero maximo de viajes que puede realizar un
vehıculo es de 5. Es decir el cliente mas cercano se encuentra a 4.1 horas de distancia
de la planta de produccion, por lo que en 24 horas cualquier vehıculo cuando mucho
podra ir y venir 5 veces a este cliente, de acuerdo a esta relacion mientras mas lejos
este el cliente menos viajes consecutivos en un dıa se pueden realizar a este.
Otra consideracion es que el tiempo definido en los parametros ya incluye los tiempos
de carga y descarga y son totalmente simetricos.
Los resultados para este caso resultan muy buenos puesto que actualmente se cuenta
con una flota dedicada de 15 vehıculos y nuestros resultados generan un programa que
satisface la demanda de los clientes con 7 vehıculos.
CAPITULO 4. CASOS PRACTICOS 41
Programa de DistribucionVehıculo Destino Tiempo Inicio Tiempo de viaje Tiempo disponibilidad
2 WBM 0 5.88 5.882 WSC 5.88 5.8 11.682 HEB 11.68 8.54 20.222 SCM 20.22 6.92 27.144 WSC 0 5.8 5.84 WBM 5.8 5.88 11.684 HEB 11.68 8.54 20.224 SCM 20.22 6.92 27.146 WSC 0 5.8 5.86 WSC 5.8 5.8 11.66 HEB 11.6 8.54 20.146 SCM 20.14 6.92 27.06
Tabla 4.10: Programa de Distribucion Clientes Autoservicio
De estos tres son de capacidad sencilla como se ve en la tabla (4.10).
Y los restantes cuatro, de capacidad doble los resultados se presentan en la tabla(4.11)
Programa de DistribucionVehıculo Destino Tiempo Inicio Tiempo de viaje Tiempo disponibilidad
12 WSC 0 5.8 5.812 WBM 5.8 5.88 11.6812 GCA 11.68 4.1 15.7812 GCA 15.78 4.1 19.8813 WBM 0 5.88 5.8813 WSC 5.88 5.8 11.6813 HEB 11.68 8.54 20.2213 SCM 20.22 6.92 27.1414 WSC 0 5.8 5.814 WBM 5.8 5.88 11.6814 GCA 11.68 4.1 15.7814 HEB 15.78 8.54 24.32
Tabla 4.11: Programa de Distribucion Clientes Autoservicio
CAPITULO 4. CASOS PRACTICOS 42
Programa de DistribucionVehıculo Destino Tiempo Inicio Tiempo de viaje Tiempo disponibilidad
15 WBM 5.88 5.88 11.7615 HEB 11.76 8.54 20.315 SCM 20.3 6.92 27.22
Tabla 4.12: Programa de Distribucion Clientes Autoservicio (Cont...)
Nuevamente obtenemos un resultado satisfactorio en poco tiempo, este secuenci-
amiento ademas produce una disminucion de los vehıculos con los que se cuenta actual-
mente.
Nombre del Problema Tiempo CPU Nodos Arbol ObjetivoVrpSin2 1,130 Seg 69187 $ 298,400
Tabla 4.13: Resultados Caso Practico 2
Capıtulo 5
Experimentos Computacionales
Dentro de este capıtulo se demuestran resultados de varios problemas generados
aleatoriamente con el fin de evaluar y generar conclusiones de la efectividad del modelo
propuesto. Se determinaron dos tipos de pruebas: 1)Problemas de tipo ventanas de
tiempo suave, es decir problemas en los que se es permitido la llegada de los vehıculos
fuera de las ventanas de atencion pagando un costo. 2)Problemas de tipo ventanas de
tiempo duras, es decir problemas en los que la llegada fuera de los horarios de atencion
NO es permitida bajo ninguna circunstancia.
5.1. Generacion de problemas
Para la elaboracion de de los experimentos computacionales se requirio de la codifi-
cacion de un programa en Lenguaje C++ y de la definicion de una nomenclatura clara
que nos permita identificar las dimensiones y diferentes tipos de problemas generados.
El programa en Lenguaje C++ nos permite escribir el archivo de los datos modelo.dat
que es necesario para que AMPL pueda resolver el modelo, la necesidad de este pro-
grama se justifica en la rapidez con la que se pueden escribir problemas en los que la
cantidad de los clientes y vehıculos nos generan tablas de datos de ms de 5 renglones
43
CAPITULO 5. EXPERIMENTOS COMPUTACIONALES 44
Nombre del Problema Significadovrpxxzzyy-j-h
xx Cantidad de clienteszz Cantidad de vehıculosyy Tipo de vehıculosj Numero de viajesh Si es problema con las ventanas duras
Tabla 5.1: Nomenclatura problemas generados
por 10 columnas, es decir escribir a “mano ”un problema de 5 clientes con 10 vehıculos
no consume mucho tiempo, sin embargo al querer probar nuestro modelo con instancias
mas grandes como, 50 vehıculos 80 clientes resulta una tarea complicada escribir una
tabla de 4000 datos. El programa genera un archivo con el formato de los archivos .dat
que requiere AMPL, introduciendo los parametros: numero de vehıculos, numero de
clientes, viajes, estos datos definen los conjuntos del modelo, ademas aleatoriamente
se generan los costos fijos, variables, penalizaciones por violar ventanas de tiempo, de-
manda y tiempos de viaje. El archivo de salida de este programa sigue las siguientes
reglas de nomenclatura. Tabla( 5.1)
De esta forma con leer el nombre del problema podemos darnos cuenta de las dimen-
siones y del tipo que es. Por ejemplo un problema con nombre vrp3030-1-7.dat define
a un problema de tamano 30 clientes con 30 vehıculos de 1 solo tipo y con 7 viajes. Si
se requiere de las ventanas del tipo duro se agrega una -h como ultimo parametro.
5.2. Problemas de Asignacion de vehıculos con ven-
tanas suaves de tiempo
Se ejecutaron pruebas de diferente tamano teniendo como criterio para definir los
vehıculos iniciales como el mismo numero que el de los clientes. Se probaron dos es-
CAPITULO 5. EXPERIMENTOS COMPUTACIONALES 45
cenarios: con un solo tipo de vehıculo disponible y con vehıculos de diferentes tipos
(capacidad). Dentro de este conjunto problemas solo se considera las ventanas de tiem-
po que pueden incumplirse con el pago de un costo de acuerdo al tiempo que quede
fuera de las ventanas.
Debido al tamano de los problemas, el optimizador tiene que tener un criterio de
interrupcion, para todos los casos se decidio que fuera un tiempo total de ejecucion de
7 hrs CPU. Por lo que el algoritmo utilizado por CPLEX se detiene si no obtiene una
solucion entera en un lapso de 7 horas.
Los resultados de los problemas con un solo tipo de vehıculo se presentan a conti-
nuacion
Nombre del Problema Tiempo CPU Valor Objetivovrp3060-1-7 3.08 Seg $93,474vrp3260-1-7 303.2 Seg $ 76,877vrp4060-1-7 18.4 Seg $ 114,753vrp4560-1-7-1 5.34 Seg $134,476vrp5060-1-7 8.4 Seg $ 143,379vrp50100-1-7-1 10.82 Seg $ 173,773
Tabla 5.2: Resultados Ventanas Suaves 1-tipo de vehıculo
Los resultados definiendo varios tipos de vehıculos se presentan a continuacion
Nombre del Problema Tiempo CPU Valor Objetivovrp3030-2-7 3.05 Seg $36,573vrp3060-3-7 3.21 Seg $ 105,235vrp4030-2-7 596.9 Seg $ 85,668vrp4030-3-7-1 .58 Seg -vrp4030-3-7 106.46 Seg $ 54,392vrp5060-3-7-1 3.28 Seg $ 169,340vrp5060-3-7 497.76 Seg $ 133,135vrp6075-2-7-1 17.94 Seg $ 181,266vrp6075-2-7 5.64 Seg $ 1,166,241vrp5060-2-7 5.69 Seg $ 126,991
Tabla 5.3: Resultados Ventanas Suaves
CAPITULO 5. EXPERIMENTOS COMPUTACIONALES 46
En esta tabla se pueden observar los tiempos de solucion de los problemas propuestos
aleatoriamente ası como el valor de la funcion objetivo. Para estos problemas de acuerdo
con las ventanas suaves el total del costo esta compuesto solo por los costos fijos y los
costos variables de cada ruta.
Nombre del Problema N. Cliente V. Originales V. Solucionvrp3030-2-7 30 30 4vrp3060-3-7 30 60 20vrp4030-2-7 40 30 17vrp4030-3-7-1 40 - -vrp4030-3-7 40 30 8vrp5060-3-7-1 50 60 33vrp5060-3-7 50 60 26vrp6075-2-7-1 60 75 462 vrp6075-2-7 60 75 54vrp5060-2-7 50 60 39
Tabla 5.4: Resultados Vehıculos utilizados con Ventanas Suaves
De igual forma que en los casos practicos es importante hacer notar la cantidad final
de vehıculos que se utilizarıan para cumplir con el programa de distribucion propuesto
en la solucion de cada uno de estos problemas.
Figura 5.1: Clientes vs Vehıculos utilizados
CAPITULO 5. EXPERIMENTOS COMPUTACIONALES 47
En los problemas con las ventanas de atencion suaves, se puede apreciar un uso
reducido de vehıculos, como consecuencia del poder llegar en cualquier momento al
cliente, los vehıculos son asignados a poder realizar un viaje en cualquier momento.
5.3. Problemas de Asignacion de vehıculos con ven-
tanas duras de tiempo
Ademas de las pruebas realizadas con conjuntos de datos de ventanas de tiempo
suaves se decidio crear algunos experimentos con ventanas, que no permitieran la vio-
lacion a estas.
De nueva cuenta se hacen experimentos con un y varios tipos de vehıculos. Los
resultados de estos experimentos se muestran a continuacion. Tambien se consideran
los casos con diferentes tipos de vehıculos.
Nombre del Problema Tiempo CPU Valor Objetivovrp3050-3-7-1-h 21,603 Seg $432832vrp3050-3-7-h 21,603 Seg $ 1525350vrp4060-3-7-1-h 21,603 Seg $ 5013390vrp4060-3-7-h 21,603 Seg $3426420vrp5060-3-7-1-h - Seg -vrp5060-3-7-h - Seg -vrp6060-3-7-1-h - Seg -vrp6060-3-7-h - Seg -vrp6075-3-7-h 21,603Seg $ 9486240vrp6080-3-7-h - Seg $ 9486240
Tabla 5.5: Resultados Ventanas Duras
Como criterio de interrupcion se sigue con las mismas 7 hrs CPU con las que se
ejecutaron los problemas de ventanas suaves.
En estos resultados es notable, la falta de una solucion entera para algunos proble-
mas, esto debido a nuestros criterios de interrupcion de la optimizacion con las que se
CAPITULO 5. EXPERIMENTOS COMPUTACIONALES 48
ejecuta cada uno de estos. En las tablas la celda con un guion significa que no se pudo
obtener la solucion entera antes de interrupcion.
Nombre del Problema N Clientes V. Originales V. Solucionvrp3050-3-7-1-h 30 50 50vrp3050-3-7-h 30 50 40vrp4060-3-7-1-h 40 60 46vrp4060-3-7-h 40 60 39vrp5060-3-7-1-h 50 60 -vrp5060-3-7-h 50 60 -vrp6060-3-7-1-h 60 60 -vrp6060-3-7-h 60 60 -vrp6075-3-7-h 60 75 67vrp6080-3-7-h 60 80 72
Tabla 5.6: Resultados Vehıculos utilizados con Ventanas Duras
En el caso de los problemas con ventanas dura, el problema es mas restringido y
llegar a la solucion entera dentro del tiempo que se marco como lımite no es suficiente.
Este mismo factor tambien incrementa el uso de vehıculos, hace sentido que a un
menor tiempo en las ventanas de atencion de los clientes, se envıen vehıculos al mismo
tiempo, pues por las distancias a recorrer no alcanzarıa a realizar dos viajes y cumplir
con las ventanas.
Figura 5.2: Clientes vs Vehıculos utilizados
Capıtulo 6
Conclusiones y Recomendaciones
6.1. Conclusiones
La principal diferencia del modelo propuesto contra las formulaciones clasicas del
problema de ruteo esta en la suposicion de la capacidad de los vehıculos es significati-
vamente menor que la demanda de los clientes.
Esto es tıpico de los niveles mas altos de transportacion donde los productos necesi-
tan ser entregados desde una planta de produccion (deposito) a centros de distribucion
generales (clientes) usando vehıculos relativamente pequenos.
Teniendo en cuenta esta suposicion se considera a la red con una topologıa tipo
estrella, donde solo rutas directas entre el deposito y los clientes es permitida. Bajo este
sistema un cliente puede ser visitado repetidas ocasiones por el mismo vehıculo y esta
es otra diferencia de los modelos clasicos.
6.2. Aportaciones
Se considera la principal aportacion de este trabajo la formulacion de un modelo
matematico que nace de una problematica real. Hasta el momento no se conoce un
49
CAPITULO 6. CONCLUSIONES Y RECOMENDACIONES 50
modelo del tipo entero mixto lineal con las suposiciones establecidas, los resultados se
consideran exitosos debido a su utilidad en una implementacion real.
Los resultados del presente trabajo han sido publicados en:
1. Cano Robles Israel(2005) The fleet size and mix problem for vehicle routing in a
star-case network. En Techiniques and Methodologies for Modelling and Simula-
tion of Systems, Morelia, Mexico. Abril
2. Cano Robles Israel(2005) Modeling Vehicle Routing in a Star-Case Transportation
Network. En Memoria del XIV Congreso Internacional de Computacion CIC 2005,
D.F, Mexico. Septiembre
Y presentados en
1. Cano Robles Israel (2004)Asignacion de recursos de transporte sujeto a nivel de
servicio Ciclo de seminarios del PISIS, FIME, UANL, Mayo - Noviembre
2. Cano Robles Israel(2005) Asignacion de Recursos de transporte sujeto a nivel de
servicio. ENOAN XV, Morelia, Mexico. Abril
3. Cano Robles Israel(2005) The fleet size and mix problem for vehicle routing in a
star-case network. International Conference on Modelling and Simulation AMSE
2005, Morelia, Mexico. Abril
4. Cano Robles Israel(2005) Modeling Vehicle Routing in a Star-Case Transportation
Network. En Memoria del XIV Congreso Internacional de Computacion CIC 2005,
IPN, D.F, Mexico. Septiembre
6.3. Recomendaciones
El estudio computacional indica que problemas de tamano mediano pueden ser
resueltos por software comercial en tiempo razonable. Sin embargo para problemas mas
CAPITULO 6. CONCLUSIONES Y RECOMENDACIONES 51
grandes son necesarias tecnicas de solucion mas rapidas. Estas puede ser un area para la
investigacion en el futuro. Ademas se pueden agregar algunos cambios en la formulacion
para considerar las siguientes situaciones:
Considerar la existencia de mas de un deposito central
Existencia de restricciones en la capacidad de recibo de vehıculos en el tiempo, en
cada uno de los clientes. Es decir cuantos vehıculos por hora pueden ser recibidos.
Posibilidad tener las ventanas de tiempo mul’tiples. Es decir tener para varios dıas
diferentes horarios de recibo.
Bibliografıa
[1] A. Kolen, A. Rinnooy Kan, and H. Mercure. Vehicle routing with timw windows.
Operations Research, 35(2):266-273, 1987.
[2] B. Dimitris, Tsitsiklis, John N. Introduction to Linear Optimization, Athena Sci-
entific,1997
[3] Council of Logistics Managment What’s It All About? Oak Brook, IL, 1993.
[4] E. Baker. An exact algorithn for the time constrained traveling salesman problem.
Operations Research, 31(5):938-945, 1983
[5] E. Baker and J. Schaffer. Solution improvement heuristics for the vehicle rout-
ing and scheduling problem with time window constraints. American Journal of
Mathematical and Management Sciences, 6 (3,4):261-300,1988
[6] F. Robert, Software Survey: Linear Programming INFORMS OR/MS Today,
32(3),2005
[7] G.B. Dantzing and J.H. Ramser “The truck dispatching problem.”Management
Science, 6:80, 1959.
[8] Hall, H. Randolph, Handbook of Transportation Science, 2nd Edition, Kluwer Aca-
demic Publishers, 2003
[9] H. Psaraftis. A dynamic programming solution to the single vehicle many to many
immediate request dial-a-ride problem. Transportation Science, 14(2):154,1980.
52
BIBLIOGRAFIA 53
[10] J.Aranque, G. Kudwa, T. Morin, and J. Penky. A branch-and-cut algorithm for
vehicle routing problems. Annals of Operations Research, 50: 35-59,1994
[11] J. Potvin and J. Rousseau. A parallel route building algorithm for the vehicle rout-
ing and scheduling problem with time windows. European Journal of Operational
Research, 66: 331-340, 1991
[12] J. Desrosiers, M. Solomon and F. Soumis. Time constrained routing and schedul-
ing. In M. Ball, T Magnati, C. Momma, G. Nemhauser, editors, Handbooks in
Operations Research and Management Science:Networks. North-Holland, 1994.
[13] J. Desrosiers, M. Sauve and F. Soumis. Langrangian relaxation methods for solving
the minimum fleet size multiple traveling salesman problem with time windows.
Management Science 34(8):1005-1022,1988.
[14] J. Desrosiers, Y. Dumas, and F. Soumis. A dynamic programing solution of the
large-scale single- vehicle dial-a-ride problem with time windows. American Journal
of Mathematics and Management Sciences, 6(3&4):301-325,1986.
[15] J. Potvin, T. Kervahut, B. Garcia, and J. Rousseau. The vehicle routing problem
with time windows, Part I: Tabu search. INFORMS Journal on Computing, 8(2):
158-164,1996.
[16] J. Potvin and S. Bengio. The vehicle routing problem with time windows, Part II:
Genetic search. INFORMS Journal on Computing, 8(2):165-172,1996.
[17] K. Nygard, P. Greenberg, W. Bolkan, and E. Swenson. Generalized assignment
methods for the deadline vehicle routing problem. In B. Golden and A. Assad, edi-
tors, Vehicle Routing. Methods and Studies, p. 107-126 North Holland, Amsterdam,
1988.
BIBLIOGRAFIA 54
[18] K. Hoffman and M. Padberg. Solving airlane crew scheduling problems by branch-
and-cut. Management Science, 39 (6) 657-683, 1993.
[19] L. Bodin, B. Golden, A. Assad and M. Ball. Routing and scheduling of vehicles
and crews the state of the art. Computers & Operations Research, 10:63-211, 1983
[20] L. Lilian, R. Michael , B. David, “A global view og industrial logistics”, European
Journal of Operational Research, 129(1) 231-234.
[21] Marshall L. Fisher,Kurt O Jornstern and Oli B. Madsen “Vehicle Routing with
time windows two optimization algorithms”,Operations Research, 45(3): 488-492
[22] M. Solomon. Algorithms for the vehicle routing and scheduling problem with time
window constraints. Operations Research 35(2):254-265,1987.
[23] M. Solomon. On the worst-case performance of some heuristics for the vehicle
routing and scheduling problem with time windows constraints. Networks, 16:161-
174,1986.
[24] M. Solomon and J. Desrosiers. Time window constrained routing and scheduling
problems. Transportation Science, 22 (1):1-13,1988.
[25] M. Solomon, E. Baker And J. Schaffer. Vehicle routing and scheduling problems
with time windows constraints: Efficient implementations of solution improvement
procedures. In B. Golden and A. Assad, editors, Vehicle Routing: Methods and
Studies, pages 85-105. North-Holland, Amsterdam,1988
[26] M. Desrochers, J. Lenstra, M. Savelsbergh, and F Soumis. Vehicle routing with time
windows: Optimization and approximation. In B. Golden and A. Assad, editors,
Vehicle Routing:Methods and Studies, p. 65-84. North Holland, Amsterdam, 1988.
BIBLIOGRAFIA 55
[27] M. Desrochers, J. Desrosiers, and M. Solomon. A new optimization algorithm for
the vehicle routing problem with time windows. Operations Research, 40(2) 342-
354, 1992.
[28] M. Padberg and G. Rinaldi. A branch-and-cut algorithm for the resolution of large
scale symmetric traveling salesman problems. SIAM Reviews 33(1):60-100,1991.
[29] M. Savelsbergh. The vehicle routing problem with time windows: Minimizing route
duration. ORSA Journal on Computing 4(2):146-154,1992
[30] N. Kohl. Exact Methods for Time Constrained Routing and Related Scheduling
Problems. PhD thesis, Technical University of Denamark. Copenhagen, 1995.
[31] N. Christofides, A. Mingozzi, and P. Toth. State-space relaxation for the compu-
tation of bounds to routing problems. Networks 11:145-164. 1981.
[32] P. Toth, D. Vigo. The Vehicle Routing Problem. SIAM, 2001.
[33] P. Augerat. Approache Polyedrale du Probleme de Tournees de Vehicules. PhD
thesis, Institut National Polytechnique de Greenoble, France,1995.
[34] “Routing Software Prevents Scheduling Meltdown ”,Logistics Management 35, no
6 (june 1996) p 85.
[35] S. Thangiah, K. Nygard, and P. Juell, Gideon: A genetic algorithm system for
vehicle routing with time windows. In Proceedings of the 7th IEEE Conference on
Artificial Intelligence Applications, p422-425, Miami 1991
[36] T. Sexton and L.Bodin. Optimizing single vehicle many-to-many operations with
desired delivery times. Transportation Science, 19:378-435, 1985.
[37] Y.Rochat and E. Taillard.Probabilistic diversification and intensification in local
search for vehicle routing. Journal of Heuristics, 1:147-167,1995.
Apendice A
Metodo Ramificacion y Cota
A.1. Ramificacion-cotas (Branch and bound)
La tecnica de ramificacion-cotas usa un principio basico “divide y conquista ” para
explorar el conjunto de soluciones enteras factibles, aunque en lugar de explorar todas
y cada una de las soluciones factibles. La tecnica usa cotas en los costos optimos para
explorar sobre algunas secciones del conjunto de soluciones factibles.
Sea F el conjunto de soluciones factibles al problema
mın c′x
s.t x ∈F
Podemos dividir al conjunto F en una coleccion finita de subconjuntos F1, ....Fk, y
resolver por separado cada uno de estos problemas
mın c′x
s.t x ∈ Fi,i = 1, ..., k.
Despues comparamos las soluciones optimas de los subproblemas y escogemos la
mejor de ellas. Cada subproblema puede ser casi tan difıcil como el problema original
56
APENDICE A. METODO RAMIFICACION Y COTA 57
eso nos sugiere intentar resolver cada subproblema por medio del mismo metodo, esto
es seguir dividiendo el problema en subproblemas, este procedimiento es la parte de
ramificacion del metodo, creando asi un arbol de subproblemas A.1
Figura A.1: Arbol de subproblemas generado en ramificacion y cotas
Se supone la existencia de un algoritmo eficiente en el que para cada Fi de interes,
se calcula una cota inferior b (Fi) del costo optimo de subproblema correspondiente esto
es ,
b (Fi) ≤ mınx∈Fi
c′x
La idea principal del metodo consiste en que mientras que el costo optimo del
subproblema es difıcil de calcular optimamente, una cota del mismo puede resultar mas
facil de obtener. Un forma usual de obtener dicha cota es usando el costo optimo de la
relajacion lineal del problema. Durante el transcurso del algoritmo ocasionalmente se
resuelven problemas a optimalidad o simplemente se evalua el costo de ciertas soluciones
factibles, esto nos permite mantener una cota superior U en el costo optimo, la cual
puede ser el costo de la mejor solucion encontrada hasta el momento.
La esencia del metodo cae en la siguiente observacion. Si la cota inferior b (Fi)
correspondiente a un subproblema en particular satisface b (Fi) ≥ U , entonces este
APENDICE A. METODO RAMIFICACION Y COTA 58
problema no debe ser considerado en el las siguientes iteraciones dado que la solucion
del subproblema no supera la mejor solucion factible encontrada hasta ese momento.
En resumen el algoritmo a nivel general se describe a continuacion.
En cualquier punto el algoritmo guarda en memoria un conjunto de los subproble-
mas activos y el costo U de la mejor la mejor solucion factible encontrada hasta ese
momento. Inicialmente U toma el valor de ∞ o el costo de alguna solucion factible si
esta se encuentra disponible, ası la iteracion tıpica del algoritmo es de la siguiente forma
1.Seleccionar un subproblema Fi
2.Si el subproblema es infactible, se elimina, de otra forma se calcula la cota b (Fi)
para el subproblema correspondiente.
3.Si b (Fi) ≥ U se elimina el subproblema
4.Si b (Fi) < U se puede obtener una solucion optima al subproblema o quebrar
este en sus correspondientes subproblemas estos se agregan a la lista de subproblemas
activos.
En este algoritmo existen algunos parametros libres en la mayorıa de los casos las
mejores opciones son dictadas por la experiencia y el tipo del problema que se trata de
resolver. Ejemplos de estos parametros son:
(a) Existen diferentes maneras de seleccionar un subproblema de activo, dos de las
mas usadas son “breath first search ”y busqueda del primero mas profundo.
(b) Hay varias formas de determinar la cota inferior b (Fi) del costo optimo del los
subproblemas, la mas comun es considerar la relajacion lineal del subproblema.
(c) Existen muchas formas de quebrar el problema en subproblemas.
Como ilustracion, suponemos que usamos como cota inferior b(Fi) el costo optimo
del al relajacion lineal donde las restricciones de integralidad son ignoradas. Si se ob-
tiene una solucion optima entera del problema relajado esta automaticamente es una
APENDICE A. METODO RAMIFICACION Y COTA 59
solucion optima para el correspondiente problema entero, eso evita la expansion en los
subproblemas. El siguiente paso es actualizar U (si la solucion obtenida es mejor que
el valor previo de U) y ası podemos eliminar el actual subproblema, si la solucion x∗
al problema lineal relajado no es entera , entonces se escoge un componente xi para el
que x∗i no es entero y se crean dos subproblemas agregando las siguientes restricciones
xi ≤ bx∗i c, or xi ≥ dx∗i e
Apendice B
AMPL
B.1. Lenguaje AMPL
AMPL es un lenguaje de modelado algebraico para programacion matematica: un
lenguaje capaz de expresar en notacion algebraica problemas de optimizacion tales como
los problemas de programacion lineal. Veamos un pequeno ejemplo.
Ejemplo 1.1. Una companıa fabrica tres productos, P1, P2 y P3, que precisan para
su elaboracion dos materias primas, M1 y M2. Las disponibilidades semanales de estas
materias son 25 y 30 unidades, respectivamente.
El beneficio neto que proporciona cada unidad de producto, ası como las unidades
de materia prima que necesita para su elaboracion, vienen dados en la siguiente tabla:
P1 P2 P3
M1 1 2 2
M2 2 1 3
Beneficio (u.m.) 2 6 3
Planificar la produccion semanal de forma que se maximice el beneficio.
Solucion:
60
APENDICE B. AMPL 61
Sean x1, x2, x3 (xi) la cantidad producida de P1, P2 y P3 respectivamente (Pi, i =
1, 2, 3).
El problema a resolver serıa el siguiente:
max z = 2x1 + 6x2 + 3x3
s.a. x1 + 2x2 + 2x3 ≤ 25
2x1 + x2 + 3x3 ≤ 30
x1, x2, x3 ≥ 0
El modelo (modelo+datos) escrito en AMPL del ejemplo 1.1 es el siguiente:
# FABRICACION DE 3 PRODUCTOS CON 2 MATERIAS PRIMAS# VARIABLES DE DECISION Y RESTRICCIONES DE NO NEGATIVIDADvar x1 >= 0;var x2 >= 0;var x3 >= 0;# FUNCION OBJETIVO DEL MODELOmaximize z : 2*x1 + 6*x2 + 3*x3;# RESTRICCIONES DEL MODELOsubject to restriccion1 : x1 + 2*x2 + 2*x3 <= 25;subject to restriccion2 : 2*x1 + x2 + 3*x3 <= 30;
Tabla B.1: Modelo basico del ejemplo
Ejemplo en AMPL.
La gran potencia del lenguaje AMPL esta en separar el modelo en sı por un lado
y por otro los datos particulares del problema concreto. Para entender esto mejor
escribimos el problema del ejemplo 1.1 desde este punto de vista.
El modelo general con n productos y con m materias primas puede ser escrito de la
siguiente manera:
APENDICE B. AMPL 62
max z = c1x1 + c2x2 + . . . + cnxn
s.a. a11x1 + . . . + a1nxn ≤ b1
a21x1 + . . . + a2nxn ≤ b2
......
am1x1 + . . . + amnxn ≤ bm
x1, x2, . . . , xn ≥ 0
O de forma mas abreviada:
max z =∑n
j=1 cjxj
s.a∑n
j=1 aijxj ≤ bi, ∀i = 1, . . . ,m
xj ≥ 0, j = 1, . . . , n
(1)
En este problema general los valores de cj, aij y bi son datos del problema concreto
y la estructura del problema (1) serıa el modelo general.
Esto en AMPL se escribirıa dos ficheros, en el fichero del modelo serıa como se
muestra en la tabla B.2. El fichero de datos para el ejemplo se muestra en la tabla B.3.
Es posible escribir un fichero de datos con valores diferentes y resolverlo junto al
modelo general (por ejemplo con n = 4 y m = 5).
B.1.1. Reglas lexicas de AMPL.
Los modelos AMPL envuelven variables, restricciones y objetivos, expresados
con la ayuda de conjuntos y parametros. A todos se les llama elementos del mod-
elo. Cada elemento del modelo tiene un nombre alfanumerico (una cadena de uno
o mas letras, dıgitos, y caracteres de subrayado): x1, z, restriccion1. Nota: las letras
mayusculas son distintas de las letras minusculas en AMPL.
APENDICE B. AMPL 63
# MODELO: EJEMPLO1.MOD# FABRICACION DE n PRODUCTOS CON m MATERIAS PRIMAS# PARAMETROS DEL MODELOparam n >=0, integer;param m >=0, integer;# CONJUNTOS DE INDICESset PRODUCTOS := 1..n;set MPRIMAS := 1..m;# VARIABLES DE DECISION Y RESTRICCIONES NO NEGATIVIDADvar x j in PRODUCTOS >= 0;# MAS PARAMETROS DEL MODELOparam c i in PRODUCTOS;param b j in MPRIMAS;param a (i,j) in MPRIMAS,PRODUCTOS;# FUNCION OBJETIVO DEL MODELOmaximize z : sum j in PRODUCTOS c[j]*x[j];# RESTRICCIONES DEL MODELOsubject to restriccion i in MPRIMAS :sum j in PRODUCTOS a[i,j]*x[j] <= b[i];
Tabla B.2: Modelo general del ejemplo
# DATOS: EJEMPLO1.DATparam n := 3;param m := 2;param c:=1 22 63 3;param a : 1 2 3:=1 1 2 22 2 1 3;param b:=1 252 30;
Tabla B.3: Datos para el ejemplo.
APENDICE B. AMPL 64
Existen dos tipos de constantes:
Constantes numericas: un signo opcional, una secuencia de dıgitos que pueden
contener un punto decimal y un exponente opcional que comienza con una de las
letras: d, D, e, E, como en 1.23D-45. Toda la aritmetica en AMPL tiene la misma
precision (sobre la mayorıa de las maquinas tiene precision doble).
Constantes literales son cadenas delimitadas por una comilla simple o por dobles
comillas. Si la comilla simple forma parte de la constante literal debe aparecer dos
veces seguidas (igual ocurre con la doble comilla).
Cada lınea de instrucciones debe ir finalizada con un punto y coma (;).
Los comentarios comienzan con # y se extienden hasta el final de la lınea, o se
pueden delimitar entre /* y */, en cuyo caso pueden extenderse mas de una lınea.
B.1.2. Los elementos de un conjunto.
Un conjunto contiene cero o mas elementos o miembros, cada uno de los cuales es
una lista ordenada de una o mas componentes. Cada miembro de un conjunto debe
ser distinto. Todos los miembros deben tener el mismo numero de componentes; a este
numero comun de le conoce como dimension del conjunto.
Un conjunto explıcitamente se escribe como una lista de miembros separada por
comas, colocados entre llaves: “. . . ”. Si el conjunto es de dimension uno, los miembros
son simplemente constantes numericas o constantes de cadena, o cualquier expresion
cuyo valor sea un numero o una cadena:
\a",\b",\c"
1,2,3,4,5,6,7,8,9
t,t+1,t+2
APENDICE B. AMPL 65
Para un conjunto multidimensional, cada miembro debe escribirse como una lista
separada por comas entre parentesis:
(\a",2),(\a",3),(\b",5)
(1, 2, 3),(1, 2, 4),(1, 2, 5),(1, 3, 7),(1, 4, 6)El valor de un miembro numerico es el resultado de reordenar su representacion
decimal por un valor real de precision limitada. Los miembros numericos que parecen
diferentes pero que al ser redondeados al valor de precision limitada son el mismo, tales
como 1 y 0.01E2, son considerados iguales.
B.1.3. Expresiones que indexan y subındices.
Muchos elementos de AMPL pueden definirse como colecciones indexadas sobre
un conjunto; los miembros individuales son seleccionados al anadir un “subındice”
al nombrar el elemento. El rango de posibles subındices es indicado por una expre-
sion que indexa en la declaracion del modelo. Operadores de reduccion, tales como
sum, tambien usan expresiones que indexan para especificar conjuntos sobre los que
las operaciones son iteradas.
Un subındice es una lista de expresiones simbolicas o numericas, separadas por
comas y encerradas entre corchetes, como en:
demanda[i]
costos[j,p[k],\0-"]
Cada expresion con subındices debe evaluar a un numero o a una literal. El val-
or resultante o secuencia de valores debe dar un miembro de un conjunto de ındices
unidimensional o multidimensional.
Una expresion que indexa es una lista de expresiones de conjunto separadas por
comas, seguida opcionalmente por dos puntos “:” y una expresion logica, todo encerrado
entre llaves:
APENDICE B. AMPL 66
Expresiones que indexan:
lista de expresiones de conjuntos
lista de expresiones de conjuntos : expresion logica
lista de expresiones de conjuntos:
expresion de conjuntos
miembro-ciego in expresion de conjuntos
lista de expresiones de conjuntos, lista de expresiones de conjuntos
Cada expresion de conjunto puede ser precedida por un miembro ciego y la pal-
abra clave in. Un miembro ciego para un conjunto unidimensional es un nombre no
referenciado, es decir, un nombre no definido hasta ese punto. Un miembro ciego para
un conjunto multidimensional es una lista separada por comas, encerrada entre parente-
sis, de expresiones o nombres no referenciados; la lista debe incluir al menos un nombre
no referenciado.
Un miembro ciego introduce uno o mas ındices ciegos (nombres no referenciados
en sus componentes), cuyo campo, o rango de definicion, comienza en la siguiente
expresion de conjunto; el campo de un ındice corre a traves del resto de la expresion
que indexa, hasta el final de la declaracion usando la expresion que indexa, o hasta el
final del operando que usa la expresion que indexa. Cuando un miembro ciego tiene una
o mas expresiones componentes, los ındices ciegos del miembro ciego varıan sobre una
proyeccion del conjunto, es decir, ellos toman todos los valores para que el miembro
ciego pertenezca al conjunto.
APENDICE B. AMPL 67
A # todos los elementos de A
A,B # todos los pares, uno de A, uno de B
i in A, j in B # el mismo que antes
i in A, C[i] # el mismo que antes
i in A, ( j,k) in D # 1 de A y 1 (un par) de D
i in A: p[i ]> 30 # todo i de A tal que p[i] sea mayor que 30
i in A, j in C[i]: i<=j # nota: i y j deben ser numericos
i in A, ( i,j) in D: i<=j # todos los pares con i en A y i,j en D
# (mismo valor de i) e i menor o igual que j
El argumento opcional “: expresion logica” es una expresion que indexa, selecciona
solamente los miembros que verifican la expresion logica y excluye a los demas. La
expresion logica tıpicamente envuelve uno o mas ındices ciegos de la expresion que
indexa.
B.1.4. Expresiones aritmeticas, logicas y de conjuntos. Fun-
ciones matematicas.
En las expresiones logicas y aritmeticas de AMPL, pueden combinarse varios elemen-
tos. A partir de ahora consideraremos que una expresion que puede contener variables
se representara como vexpr. Una expresion que no puede contener variables se denota
como expr y algunas veces sera llamada “expresion constante”, a pesar de que pueda
contener ındices ciegos. Una expresion logica, representada como lexpr, puede con-
tener variables solo cuando es parte de una expresion if que produzca una vexpr. Las
expresiones de conjuntos seran denotadas como sexpr.
Los operadores aritmeticos, logicos y de conjuntos, en orden de precedencia creciente,
se muestran en la tabla 4.
APENDICE B. AMPL 68
Los valores numericos que aparecen como expresiones logicas valen falso (false) si
es 0, y verdadero (true) para cualquier otro valor numerico.
Expresiones Aritmeticas.
Las expresiones aritmeticas son construidas con los operadores aritmeticos usuales,
con funciones de AMPL y con operadores de reduccion aritmeticos como sum:
numero
variable
expresion op.aritmetico expresion (+,-,less,*,/,mod,div,^,**)
unario expresion
funcion( lista de expresiones )
if lexpr then vexpr [ else vexpr ]
operador-reduccion expresion que indexa (sum, prod, max, min)
expr Los operadores aritmeticos, logicos y de conjuntos, en orden de precedencia creciente,
se muestran en la tabla .
Las funciones aritmeticas incorporadas en AMPL se muestran en la tabla 5 y en la
tabla 6.
Sobre los operadores de reduccion aritmetica:
La palabra clave sum debe seguirle cualquier expresion que indexa. La expresion
aritmetica siguiente se evalua una vez para cada miembro del conjunto de ındices,
y todos los valores resultantes se suman. El operador sum tiene menor precedencia
que *, ası podemos escribir:
APENDICE B. AMPL 69
Nombre Tipo Notasif . . . then . . . else A, S A: si no hay else, se supone else 0
S: es obligatorio else sexpror, || L o logicoexists, forall L operadores de reduccion logicaand, && L y logico<, <=, =, ==, <>, =!, >=, > L operadores relacionalesin, not in L pertenencia a un conjuntowithin, not within L S within T significa S ⊆ Tnot, ! L negacion logicaunion, diff, symdiff S symdiff es la diferencia simetricainter S interseccioncross S producto cartesianosetof .. by S constructor de conjuntos+, - , less A a less b = max (a− b, 0)sum, prod, min, max A operadores de reduccion aritmetica*, /, div, mod A div cociente entero+, - A mas y menos unarioˆ, ** A exponenciacion
Tabla B.4: Operadores aritmeticos (A), logicos (L) y de conjuntos (S).
Sintaxis SignificadoBeta(a,b) xa−1(1− x)b−1/(Γ(a)Γ(b)/Γ(a + b)), x ∈ [0, 1]Cauchy 1/(π(1 + x2))Exponential e−x, x > 0Gamma(a) xa−1e−x/Γ(a), x ≥ 0, a > 0Irand224() Uniforme entera en [0, 224)Normal(µ, σ) N (µ, σ)Poisson(µ) e−µµk/k!, k = 0, 1, . . .Uniform(m,n) Uniforme[m,n)Uniform01() Uniforme[0, 1)
Tabla B.5: Funciones de generacion de variables aleatorias en AMPL.
APENDICE B. AMPL 70
Sintaxis Significadoabs(x) valor absolutoacos(x) cos−1 (x)acosh(x) cosh−1 (x)asin(x) sin−1 (x)asinh(x) sinh−1 (x)atan(x) tan−1 (x)atan2(y,x) tan−1 (x/y)atanh(x) tanh−1 (x)ceil(x) entero mayor mas cercanocos(x) cosenoexp(x) exponencialfloor(x) menor entero mas cercanolog(x) loge (x)log10(x) log10 (x)max(x,y,. . . ) maximomin(x,y,. . . ) mınimosin(x) senosinh(x) seno hiperbolicosqrt(x) raız cuadradatan(x) tangentetanh(x) tangente hiperbolica
precision(x,n) x redondeado a n cifras significativasround(x,n) x redondeado a n dıgitos despues del punto decimalround(x) x redondeado al entero mas cercanotrunc(x,n) x truncado a n dıgitos despues del punto decimaltrunc(x) x truncado a un entero
Tabla B.6: Funciones aritmticas en AMPL.
APENDICE B. AMPL 71
sumi in ORIG, j in DEST, p in PROD
cost[i,j,p] * Trans[i,j,p]
representa el total de costo[i,j,p] * Trans[i,j,p] sobre todas las combinaciones de
orıgenes, destinos y productos.
Otros operadores aritmeticos iterados son prod para la multiplicacion, min para
el mınimo, y max para el maximo. Como ejemplo, podrıamos usar:
maxi in ORIG oferta[i,p]
para describir la mayor oferta del producto p de todos los orıgenes.
Expresiones Logicas.
Las expresiones logicas aparecen donde se requiera un valor: “verdadero” o “falso”.
Por ejemplo, en el comando check, en la parte “tal que” de las expresiones que indexan
(sigue a los “:”) y en if lexp then . . .
Las expresiones logicas pueden ser de la siguiente forma (lexpr):
expr
expr oper -- compara expr
lexpr oper -- logico lexpr
not lexpr
miembro in sexpr
miembro not in sexpr
sexpr within sexpr
sexpr not within sexpr
exists indexado lexpr
forall indexado lexpr
lexpr
APENDICE B. AMPL 72
El operador exits, cuando se aplica sobre un conjunto vacıo, devuelve falso y el
operador forall devuelve verdadero.
Expresiones de conjunto
Las expresiones de conjuntos (sexpr) que producen conjuntos pueden tener uno de
los siguientes formatos:
[ miembro [ , miembro ... ] ]
sexpr op–conjunto sexpr (union diff symdiff inter cross )
union indexado sexpr
inter indexado sexpr
expr .. expr [ by expr ]
setof indexado miembro
if lexpr then sexpr else sexpr
( sexpr )
interval
conj–predefinido
indexado
Podemos ver el uso del operador setof, en el siguiente ejemplo:
ampl: set y := setof i in 1 ..5 ( i,i ^2);
ampl: display y;
set y := (1,1) (2,4) (3,9) (4,16) (5,25);
B.1.5. Declaraciones de elementos del modelo.
La declaracion de los elementos del modelo tiene el siguiente formato general:
elemento nombre [alias] [exp. indexada] [cuerpo];
APENDICE B. AMPL 73
Las palabras claves para los elementos del modelo AMPL pueden se una de las
siguientes:
set
param
var
arc
minimize
maximize
subject to, subj to, s.t.
node
Si se suprime el nombre del elemento se supone que es subject to.
Las declaraciones pueden aparecer en cualquier orden, con la excepcion de que cada
nombre debe estar declarado antes de ser usado.
Para las declaraciones de variables, restricciones y objetivos, se permite una forma
especial de expresion indexada:
if lexprg
Si la expresion logica lexpr es verdad, entonces el resultado es un elemento simple
(no indexado); en otro caso el elemento es excluido del modelo.
Declaracion de conjuntos.
La declaracion de conjunto del modelo tiene el siguiente formato general:
set nombre [alias] [exp. indexada] [atributos] ;
en la que atributos es una lista de atributos opcionales separada por comas. Los
cuales pueden ser (sexpre indica una expresion de conjuntos):
APENDICE B. AMPL 74
dimen n
within sexpre
:= sexpr
default sexpr
La frase := especifica un valor para el conjunto; esto implica que el conjunto no
sera definido posteriormente en una lınea de instrucciones especıfica para datos (:= y
default son mutuamente excluyentes). El conjunto vacıo se indica con: .
Existe la funcion card(S) la cual da el numero de elementos del conjunto S.
Tambien se pueden realizar operaciones entre conjuntos, como:
set A := 1 ..n ;
set B := i..j by k;
set C := A d i f f B;
set D := A union B;
set E := A inter B;
set F := A symdi f f B;
Se pueden definir conjuntos con infinitos elementos (Nota: no se puede iterar sobre
conjuntos infinitos), los clasicos intervalos cerrados, abiertos o semicerrados, bien de
numeros reales (interval [a,b]) o bien de numeros enteros (integer [a,b]). Nota: la
palabra interval puede omitirse.
Declaracion de parametros
La declaracion de un parametro del modelo tiene el siguiente formato general:
param nombre [alias] [exp. indexada] [atributos] ;
en la que los atributos es una liste de atributos opcionalmente separa por comas.
Los cuales pueden ser (sexpr indica una expresion de conjuntos):
APENDICE B. AMPL 75
binary
integer
symbolic
oprel expr
in sexpr
:= expr
defaul t expr
donde “oprel” puede ser:
< <= = == != <> > >=
El atributo in especifica un chequeo para ver que el parametro se encuentra en
el conjunto dado. Los parametros indexados pueden definirse de forma recursiva. Por
ejemplo:
param comb ~n sobre k’n in 0 .. N, k in 0 .. n
:= if k=0 or k = n then 1 else comb[n-1,k-1] + comb[n-1,k];
Infinity es un parametro predefinido; al igual que -Infinity.
Declaracion de variables.
La declaracion de una variable del modelo tiene el siguiente formato general:
var nombre [alias] [exp. indexada] [atributos] ;
en la que atributos es una lista de atributos opcionalmente separada por comas. Los
cuales pueden ser (vexpr indica una expresion de variables):
APENDICE B. AMPL 76
binary
integer
>= expr
<= expr
:= expr
defaul t expr
= vexpr
coeff [ exp.indexada ] restriccion vexpr
cover [ exp. indexada ] restriccion
obj [ exp. indexada ] objetivo vexpr
Las frases >= y =< especifican cotas, la frase := indica un valor inicial. La frase
default indica los valores iniciales por defecto, cuyos valores pueden darse en una lınea
de instrucciones especıfica para datos.
Las frases coeff y obj se utilizan para la generacion de coeficientes por columnas;
estas especifican los coeficientes que seran colocados es la restriccion indicada u objetivo
indicado, el cual debe ser previamente referenciado usando to come. Una frase cover
es equivalente a la frase coeff pero con vexpr igual a 1.
Declaracion de restricciones
La declaracion de una restriccion de modelo tiene el siguiente formato general:
[subject to] nombre [alias] [exp. indexada] [ := dual–inic]
[default dual–inic] [ : expr restriccion];
La frase opcional := dual–inicial especifica un valor inicial para la variable dual
(multiplicador de Lagrange) asociado con la restriccion. La expresion de restriccion
debe estar en uno de los siguientes formatos:
APENDICE B. AMPL 77
vexpr <= vexpr
vexpr = vexpr
vexpr >= vexpr
expr <= vexpr <= expr
expr >= vexpr >= expr
Para permitir la generacion de coeficientes por columna para la restriccion, una de
las vexprs puede tener una de las siguientes formas:
to come + vexpr
vexpr + to come
to come
Los terminos de esta restriccion que se especifican en una declaracion var son colo-
cados en la posicion de to come.
Declaracion de objetivos.
La declaracion de un objetivo del modelo tiene el siguiente formato general:
maximize nombre [alias] [exp. indexada] [: expresion] ;
minimize nombre [alias] [exp. indexada] [: expresion] ;
y puede especificarse una expresion en una de las siguiente formas:
vexpr
to come + vexpr
vexpr + to come
to come
La forma to come permite la generacion de coeficientes por columna, como con las
restriciciones
APENDICE B. AMPL 78
Notacion para sufijos para valores auxiliares.
Las variables, restricciones y objetivos tienen una variedad de valores auxiliares
asociados, a los cuales se puede acceder anadiendo al nombre uno de lo siguientes
sufijos dependiendo del tipo de elemento del modelo.
Sufijos para variables
.init valor actual inicial
.init0 valor inicial inicial(x0
j
).lb cota inferior actual
.lb0 cota inferior inicial (lj)
.lrc costo reducido menor (.rc, xj ≥ lj)
.lslack menor holgura (xj − lj)
.rc costo reducido − (zj − cj)
.slack min (lsalck,uslack)
.ub cota superior actual
.ub0 cota superior inicial (uj)
.urc costo reducido superior (.rc, xj ≤ uj)
.uslack holgura superior (uj − xj)
.val valor actual (xj)
APENDICE B. AMPL 79
Sufijos para restricciones
.body valor actual del cuerpo de la restriccion (Aix)
.dinit valor inicial actual para la variable dual
.dinit0 valor inicial inicial para la variable dual (w0i )
.dual variable dual actual (wi)
.lb cota inferior (rli)
.ldual valor dual menor (.dual, Aix ≥ rli)
.lsalck holgura menor (Aix− rli)
.slack min(lsalck,uslack)
.ub cota superior (rui)
.udual valor dual superior (.dual, Aix ≤ rui)
.uslack holgura superior (rui −Aix)
Sufijos para objetivos
.val valor actual
B.1.6. Especificacion de datos.
Hay que tener en cuenta que:
La lectura de datos se inicializa con el comando ”data”. Pos ejemplo:
ampl: data diet.dat;
lee los comandos de datos de un fichero llamada diet.dat.
AMPL trata cualquier secuencia de espacios, tabuladores y caracteres claves de
una nueva lınea como un solo espacio.
El final de cualquier comando de datos de indica por un punto y coma “;”.
APENDICE B. AMPL 80
Datos de un conjunto.
Conjuntos unidimensionales.
Un conjunto simple se especifica al listar sus miembros.
set ORIG := SE MD BA ;
set DEST := CA CO HU AL JA MA GR ;
set PROD := plato cuchillo tenedor ;
Si un conjunto se ha declarado con el atributo ordered o circular, debemos de
listar sus miembros en orden:
set SEMANAS := 27 sep93 04 oct93 11 oct93 18 oct93 ;
Si una cadena de la lista incluye caracteres distintos de letras, dıgitos, signo de
subrayado ( ), punto, + y -, debe ser cerrado entre comillas:
set ALMACEN := \A&P" JEWEL VONS ;
Tambien para distinguir cuando un numero queremos que sea una cadena (“+1”
o “3e4”), este debe ser cerrado entre comillas.
Los miembros de un conjunto deben ser todos diferentes; AMPL avisara de la ex-
istencia de elementos duplicados. Los numeros que tienen la misma representacion
en el ordenador seran considerados como iguales.
Para una coleccion indexada de conjuntos, los miembros de cada conjunto de la
coleccion se especificaran individualmente.
APENDICE B. AMPL 81
set PROD ;
set AREA PROD ;
set PROD := plato cuchillo ;
set AREA [ plato ] := este norte ;
set AREA [ cuchillo ] := este oeste export ;
Podemos especificar explıcitamente que uno o mas de esos conjuntos es vacıo, al
dar una lista vacıa; poniendo el punto y coma justo despues del operador “:=”. Si
queremos que AMPL suponga que cada conjunto es vacıo excepto si se especifica
otra cosa, incluyendo una frase default en el modelo:
set AREA PROD default ;
En otro caso serıamos avisados de que la especificacion de los miembros de un
conjunto no se ha realizado.
Conjuntos de dos dimensiones
Para un conjunto de pares, los miembros pueden especificarse de varias maneras:
set ORIG ;
set DEST ;
set LINKS within ORIG , DEST ;
1. lista de pares
set LINKS :=
(SE,CO ) ( SE,HU ) ( SE,JA ) ( SE,GR ) ( MD,CA)
(MD,CO ) ( MD,HU ) ( MD,AL ) ( MD,JA ) ( MD,GR)
(BA,CA ) ( BA,AL ) ( BA,JA ) ( BA,MA ) ;
APENDICE B. AMPL 82
2. lista de pares, sin los parentesis y las comas
set LINKS :=
SE CO SE HU SE JA SE GR MD CA
MD CO MD HU MD AL MD JA MD GR
BA CA BA AL BA JA BA MA ;
3. un conjunto de pares puede especificarse en una tabla tambien de la siguienteforma:
set LINKS: CA CO HU AL JA MA GR :=
SE - + + - + - +
MD + + + + + - +
BA + - - + + + - ;
Un signo “+” indica un par que esta en el conjunto y un signo “-” indica queno esta ese par. Normalmente las filas son etiquetadas con la primera componentey las columnas con la segunda. Si se prefiere lo puesto, podemos indicar una tablatranspuesta al anadir (tr) despues del nombre del conjunto:
set LINKS (tr):
SE MD BA :=
CA - + +
CO + + -
HU + + -
AL - + +
JA + + +
MA - - +
GR + + - ;
Las tablas son mas convenientes para conjuntos que son relativamente densos.En otro caso la lista de pares va mejor.
APENDICE B. AMPL 83
4. Otra forma de describir un conjunto de pares es listar todas las segundas com-ponentes que unen cada primer componente:
set LINKS:=
(SE,*) CO HU JA GR
(MD,*) CA CO HU AL JA GR
(BA,*) CA AL JA MA ;
Se podrıa hacer listando todas las primeras componentes que unen con cadauna de las segundas componentes: (*,CA) MD BA.
Cada comodın * es seguido por una lista, cuyas entradas son sustituidas por el* para generar pares de conjuntos.
Conjuntos multidimensionales
Utilizamos los siguientes ejemplos para ver las distintas formas de definir conjuntos
multidimensionales:
set RUTAS within ORIG,DEST,PROD;
set RUTAS :=
(SE,HU, cuchillo ) ( SE,JA, cuchillo ) (SE,GR, cuchillo )
(MD,CA, plato ) ( MD,CA, cuchillo ) (MD,CO, plato )
... ;
set RUTAS :=
SE HU cuchillo SE JA cuchillo SE GR cuchillo
MD CA plato MD CA cuchillo MD CO plato
... ;
set RUTAS :=
(MD ,*, plato ) CA CO HU JA GR
(BA ,*, plato ) CA AL JA MA
... ;
APENDICE B. AMPL 84
set RUTAS :=
(*, CA ,*) MD plato MD cuchillo BA plato
(*, CO ,*) MD plato MD cuchillo
... ;
set RUTAS :=
(*,*, plato ): CA CO HU AL JA MA GR :=
SE - - - - - - -
MD + + + - + - +
BA + - - + + + -
(*,*, cuchillo ): CA CO HU AL JA MA GR :=
SE - - + - + - +
MD + + + + + - -
BA - - - - - + - ;
Tambien se puede usar la notacion (tr).
Datos de parametros.
Para un parametro escalar (no indexado), la asignacion de un valor serıa:
param avail := 40;
Parametros indexados
La forma mas simple para da datos para un parametro indexado es por medio de
una lista. Para un parametro indexado sobre un conjunto simple:
set PROD;
param valor PROD > 0;
Cada elemento de la lista de datos consta de un miembro del conjunto y de un valor;
set PROD:= plato cuchillo tenedor ;
APENDICE B. AMPL 85
param valor :=
plato 200
cuchillo 140
tenedor 160 ;
equivalentemente:
param valor := plato 200, cuchillo 140, tenedor 160 ;
A menudo necesitamos datos para varios parametros que estan indexados sobre el
mismo conjunto, en esta situacion puede escribirse:
param valor := plato 200 cuchillo 140 tenedor 160 ;
param benefi := plato 25 cuchillo 30 tenedor 29 ;
param market := plato 6000 cuchillo 4000 tenedor 3500 ;o
param: valor benefi market :=
plato 200 25 6000
cuchillo 140 30 4000
tenedor 160 29 3500 ;
Los dos puntos despues de la palabra clave param es obligatoria; indica que damos
valores para varios parametros.
Si se sigue con el nombre del conjunto PROD y otros dos puntos:
param: PROD: valor benefi market :=
plato 200 25 6000
cuchillo 140 30 4000
tenedor 160 29 3500 ;
entonces los elementos del conjunto PROD son definidos tambien con este comando,
evitando ası la definicion con el comando set PROD; el efecto es combinar las especifi-
caciones del conjunto y los tres parametros indexados sobre el.
Parametros bidimensionales
APENDICE B. AMPL 86
Los valores de un parametro indexado sobre dos conjuntos, son generalmente intro-
ducidos como:
set ORIG;
set DEST;
param costo ORIG,DEST >= 0;
data
param costo: CA CO HU AL JA MA GR :=
SE 39 14 11 14 16 82 8
MD 27 9 12 9 26 95 17
BA 24 14 17 13 28 99 20 ;
Las etiquetas en las filas dan el primer ındice y las etiquetas de las columnas dan el
segundo ındice, ası por ejemplo, costo[“SE”,“CA”] se ha definido a 39.
Podemos usar la notacion (tr):
param costo ( tr ):
SE MD BA
CA 39 27 24
CO 14 9 14
... ;
Cuando las tablas son grandes pueden utilizarse caracteres de nueva lınea en cualquier
lugar, o tambien emplear el siguiente formato:
APENDICE B. AMPL 87
param costo : CA CO HU AL :=
SE 39 14 11 14
MD 27 9 12 9
BA 24 14 17 13
: JA MA GR :=
SE 16 82 8
MD 26 95 17
BA 28 99 20
Los dos puntos indica el comienzo de cada nueva subtabla; cada una tiene lasmisma etiquetas de filas, pero diferentes etiquetas de columna.
El parametro no tiene porque estar indexado sobre todas las combinaciones de miem-
bros de ORIG y DEST, sino tan solo de un subconjunto de esos pares:
set LINKS within ORIG , DEST ;
param costo LINKS >= 0;
Como se vio en la seccion anterior, el conjunto LINKS puede definirse como:
param costo: CA CO HU AL JA MA GR
SE . 14 11 . 16 . 8
MD 27 9 12 9 26 . 17
BA 24 . . 13 28 99 . ;
Donde un “+” indica un miembro del conjunto, la tabla para costo da un valor.
Donde un “-” indica que no pertenece, la tabla contiene un punto “.”. El punto puede
aparecer en cualquier tabla AMPL para indicar “valor no especificado aquı”.
Es posible definir un sımbolo diferente, por ejemplo –, al incluir el siguiente comando
en data:
defaultsym \--";
APENDICE B. AMPL 88
el cual puede ser desactivado al introducir el comando:
nodefaultsym ;
Tambien es posible introducir los datos del siguiente modo:
param costo :=
SE CO 14 SE HU 11 SE JA 16 SE GR 8
MD CA 27 ... ;
Cuando un parametro esta indexado sobre un subconjunto poco denso de pares, una
lista puede ser mas compacta y legible que la representacion tabular, la cual estarıa
formada mayoritariamente por puntos.
Otra ventaja del formato lista es que, como en el caso unidimensional, los datos
para varias componentes pueden darse juntos:
param: LINKS: costo limit :=
SE CO 14 1000
SE HU 11 800
SE JA 16 1200
SE GR 8 1100
MD CA 27 1200
MD CO 9 600
MD HU 12 900
MD AL 9 950
MD JA 26 1000
MD GR 17 800
BA CA 24 1500
BA AL 13 1400
BA JA 28 1500
BA MA 99 1200 ;
APENDICE B. AMPL 89
Esta tabla da simultaneamente los miembros de LINKS y los valores para costo,
y tambien los valores para otros parametros, limit, que esta tambien indexado sobre
LINKS.
Finalmente, la lista de datos para costo puede escribirse mas concisamente al or-
ganizarla en trozos, como se menciono para los miembros del conjunto LINKS en la
seccion previa.
set LINKS :=
(SE ,*) CO HU JA GR
... ;
param costo :=
[SE ,*] CO 14 HU 11 JA 16 GR 8
[MD ,*] CA 27 CO 9 HU 12 AL 9 JA 26 GR 17
[BA ,*] CA 24 AL 13 JA 28 MA 99 ;
Parametros multidimensionales.
Podrıamos introducirlos de las siguientes formas:
set ORIG ;
set DEST ;
set PROD ;
set RUTAS within ORIG,DEST,PROD ;
param costo RUTAS >= 0;
lista simple
param costo :=
MD CO plato 9 MD CO cuchillo 8 MD CA plato 27
MD CA cuchillo 23 MD GR plato 17 ... ;
uso de trozos
APENDICE B. AMPL 90
param costo :=
[MD, *, plato ] CA 27 CO 9 HU 12 JA 26 GR 17
[BA, *, plato ] CA 24 AL 13 JA 28 MA 99
... ;
uso de trozos
param costo :=
[*, CA, *] MD plato 27 MD cuchillo 23 BA plato 24
[*, CO, *] MD plato 9 MD cuchillo 8
... ;
uso de trozos 2 dimensiones y tablas
param costo :=
[*,*, plato ]: CA CO HU AL JA MA GR :=
MD 27 9 12 . 26 . 17
BA 24 . . 13 28 99 .
[*,*, cuchillo ]: CA CO HU AL JA MA GR
SE . . 11 . 16 . 8
MD 23 8 10 9 21 . .
BA . . . . . 81 . ;
Se puede emplear la notacion (tr).
Otro ejemplo:
APENDICE B. AMPL 91
set PROD ;
set AREA PROD ;
param T > 0;
param renta p in PROD , AREA [p ], 1 ..T >= 0;
data
param T := 4;
set PROD := plato cuchillo ;
set AREA [ plato ] := este norte ;
set AREA [ cuchillo ] := este oeste export ;
param renta :=
[ plato, *,*]: 1 2 3 4 :=
este 25.0 26.0 27.0 27.0
norte 26.5 27.5 28.0 28.5
[ cuchillo, *,*]: 1 2 3 4 :=
este 30 35 37 39
oeste 29 32 33 35
export 25 25 25 28 ;
Valores por defecto.
AMPL comprueba que los comandos de datos asignan valores para exactamente
todos los parametros en el modelo. AMPL dara un mensaje de error si damos un valor
para un parametro inexistente, o nos olvidamos de dar un valor a un parametro que
existe.
Si el mismo valor apareciera muchas veces en un comando de datos, podemos es-
pecificar la frase default. Por ejemplo,
APENDICE B. AMPL 92
set ORIG ;
set DEST ;
set PROD ;
param costo ORIG,DEST,PROD >= 0;
data
param costo defaul t 9999 :=
[*,*, plato ]: CA CO HU AL JA MA GR :=
MD 27 9 12 . 26 . 17
BA 24 . . 13 28 99 .
[*,*, cuchillo ]: CA CO HU AL JA MA GR :=
SE . . 11 . 16 . 8
MD 23 8 10 9 21 . .
BA . . . . . 81 . ;
Tanto a los parametros missing (como costo[“SE”,“CA”,“plato”]), como a los mar-
cados como omitidos con el uso de un punto (como costo[“SE”,“CA”,“cuchillo”]), se les
asignara el valor 9999. En total, hay 24 con valor 9999.
La caracterıstica default es especialmente util cuando queremos que todos los paramet-
ros de una coleccion indexada tengan el mismo valor. Por ejemplo:
param oferta ORIG >= 0;
param demanda DEST >= 0;
data
param oferta default 1 ;
param demanda default 1 ;
Tambien, como se explico en secciones anteriores, una declaracion de parametro
puede incluir una expresion default. Por ejemplo:
param costo ORIG,DEST,PROD >= 0, default 9999;
APENDICE B. AMPL 93
Sin embargo, es mejor poner la frase default en los comandos de datos. La frase
default deberıa ir en el modelo cuando queremos que el valor por defecto dependa de
alguna forma de otros datos. Por ejemplo, un costo arbitrariamente grande podrıa darse
para cada producto al especificar:
param gran costo PROD > 0;
param costo ORIG,DEST,p in PROD >= 0, default gran costo [p];
Datos para variables y restricciones.
Opcionalmente podemos asignar valores iniciales a las variables o restricciones del
modelo, usando cualquiera de las opciones para asignar valores a parametros. El nombre
de la variable almacena su valor, y el nombre de la restriccion el valor de la variable
dual asociada.
var Tans: CA CO HU AL JA MA GR :=
SE 100 100 800 100 100 500 200
MD 900 100 100 500 500 200 200
BA 100 900 100 500 100 900 200
Tambien con una tabla simple podemos dar valores a parametros (valor, benefi,
market) y variables (Make):
param: valor benefi market Make :=
plato 200 25 6000 3000
cuchillo 140 30 4000 2500
tenedor 160 29 3500 1500 ;
Los valores iniciales de las variables (o expresiones que envuelven esos valores ini-
ciales) pueden verse antes de escribir solve, usando los comandos display, print o
printf.
El uso mas comun de asignar valores iniciales a variables o restricciones es dar un
punto de arranque para resolver un problema de optimizacion no lineal.
APENDICE B. AMPL 94
B.1.7. Comandos del lenguaje.
La llamada a AMPL normalmente causa la entrada en un entorno de comandos,
donde los comandos pueden ser introducidos interactivamente. Las declaraciones del
modelo y las instrucciones de introduccion de datos son tambien aceptadas como co-
mandos.
El entorno de comandos de AMPL reconoce dos modos. En modo modelo, reconoce
las declaraciones del modelo y todos los comandos que se describiran a continuacion.
El otro modo es el modo datos, en el cual solo se reconocen instrucciones referentes a
la introduccion de datos. El entorno siempre vuelve al modo modelo al encontrar una
palabra clave que no comience con la palabra data.
Una frase de la forma:
include fichero ;
trae el contenido del fichero al entorno de comandos de AMPL. Los comandos in-
clude pueden estar anidados, ellos son reconocidos en modo modelo y en modo datos.
Las secuencias:
model; include fichero ;
data; include fichero ;
pueden abreviarse como:
model fichero ;
data fichero ;
Los comandos no son parte de un modelo, pero producen que AMPL actue como
se describe en la tabla 7. Los comandos distintos a data, end, include, quit y shell
producen que AMPL entre en modo modelo.
Desde la lınea de comandos de AMPL podemos escribir, por ejemplo:
ampl: include ejemplo1.run ;
siendo el fichero ejemplo1.run (tabla 8), un fichero por lotes que almacena la secuen-
APENDICE B. AMPL 95
# EJEMPLO1.RUN
option solver cplex;
model ejemplo1.mod ;
data ejemplo1.dat ;
solve ;
display z;
display x;
display restriccion.slack ;
Tabla B.7: Fichero de lotes para el modelo del ejemplo 1.1
cia de comandos necesarios para resolver el ejemplo 1.1.
Los comandos display, print y printf imprimen expresiones arbitrarias. Tienen el
siguiente formato:
display [conjunto: ] lista–argumentos [redireccion];
print [conjunto: ] lista–argumentos [redireccion];
printf [conjunto: ] fmt, lista–argumentos [redireccion];
APENDICE B. AMPL 96
Comandos Significado
break termina un bucle for o while
close cierra un fichero
continue salta al final del cuerpo del bucle
data cambia a modo datos; opcionalmente incluye un fichero
display imprime elementos del modelo y expresiones
delete elimina un componente previamente declarado
drop elimina una restriccion u objetivo
end finaliza la entrada del fichero de entrada actual
expand muestra explıcitamente el modelo
fix fija una variable a su valor actual
for indx cp bucle for
if lexpr then comprueba una condicion
include incluye ficheros
let cambia los valores de los datos (:=)
match(cad,mod) posicion de mod en cad
model cambia al modo modelo; opcionalmente incluye un fichero
objective selecciona un objetivo a optimizar
option define o muestra valores opcionales
print imprime elementos del modelo sin formatear
printf imprime elementos del modelo formateados (\n,%7.1f)
problem nb: def. define un problema
purge elimina un componente y los dependientes de el
quit termina AMPL
read lee datos de un fichero o de la consola (¡-)
redeclare redefine un componente ya definido
APENDICE B. AMPL 97
Comandos Significado
repeat while lexpr cp repite un bloque de comandos mientras V.
repeat until lexpr cp repite un bloque de comandos hasta F.
repeat cp while lexpr repite un bloque de comandos mientras V.
repeat cp until lexpr repite un bloque de comandos hasta F.
reset reinicia elementos especıficos a su estado inicial
restore deshace un comando drop
shell temporalmente sale al sistema operativo
show muestra componentes del modelo
solution importa valores de variables de un solver
solve envıa elementos actuales a un solver y devuelve la solucion
step n avanza n pasos en la ejecucion de ficheros por lotes
update permite actualizar datos
unfix deshace un comando fix
write escribe en un fichero partes de un problema
xref muestra dependencias del modelo
Si el conjunto esta presente, su campo de accion se extiende hasta el final del co-
mando, y causa una ejecucion del comando para cada miembro del conjunto.
La lista-argumentos es una lista de expresiones separadas por comas.
El opcional redireccin tiene una de las dos formas siguientes:
> fichero
>> fichero
La primera abre por primera vez un fichero para escribir, y la segunda a˜nade al
fichero ya creado, aunque > actua igual que >>, si el fichero esta ya abierto.
Con el comando option se puede conseguir que la salida que se ha solicitado tenga
un formato
APENDICE B. AMPL 98
especıfico. Por ejemplo:
option display precision 3;
option omit zero rows 1;
La primera especifica la precision de salida (0 equivale a ninguna) y la segunda
omite las salidas con valor cero (por defecto es 0, es decir no omite los valores cero).
Otras opciones son:
option solver msg 0;
option relax integrality 1;
option presolve 0;
option show stats 1;
option times 1;
option gentimes 1;
option log file ’hola.tmp ’;
option solution round 6;
option single step 1;
Apendice C
Modelo en AMPL
Declaracion de Conjuntos
Set Vehiculos; # Declaracion del Conjunto de los Vehiculos
Set Clientes; # Declaracion del Conjunto de los Clientes incluye al deposito
(Cliente =0)
Set Viajes ordered; # Declaracion del Conjunto de los Viajes
Set Cliente; # Declaracion del Conjunto de los Clientes
(Solo los CD)
param LlegadaE Clientes >=0;
param LlegadaL Clientes >=0;
param LlegadaL Clientes >=0;
param Costo Clientes,Vehiculos >=0;
param Fijo Vehiculos >=0;
param CostoE Clientes >=0;
param CostoD Clientes >=0;
param Demanda Clientes >=0;
param Tiempo Clientes >=0;
param Capacidad Vehiculos >=0;
99
APENDICE C. MODELO EN AMPL 100
# Declaracion de Varibles
var Camionrecorrido Clientes,Viajes,Vehiculos binary;
#Declaracion de la variable Xijk, como binarias
var Uso Vehiculos binary;
# Declaracion de la variable Yk como binaria
var SalidaV Viajes,Vehiculos >=0;
# Declaracion de la variable Sijk como continua
var Espera Clientes,Viajes,Vehiculos >=0;
#Declaracion de la variable Wijk(+) como continua
var Retraso Clientes,Viajes,Vehiculos >=0;
# Declaracion de la variable Wijk(-) como continua
Funcion Objetivo
minimize costo total: sum i in Clientes,j in Viajes,k in Vehiculos
Costo[i,k]*Camionrecorrido[i,j,k]
+ sum k in Vehiculos Fijo[k]*Uso[k]
+ sum i in Clientes,j in Viajes,k in Vehiculos CostoE[i]*Espera[i,j,k]
+ sum i in Clientes,j in Viajes,k in Vehiculos CostoD[i]*Retraso[i,j,k];
# Restriccion (2)
subject to visita j in Viajes, k in Vehiculos :
Camionrecorrido[0,j,k]+sumh in Cliente Camionrecorrido[h,j,k]=1;
# Restriccion (3)
subject to Demandav h in Cliente:
sum j in Viajes,k in Vehiculos
Camionrecorrido[h,j,k]*Capacidad[k]>=Demanda[h]; # Restriccion (4)
subject to cuatro k in Vehiculos:
7 - sum j in ViajesCamionrecorrido[0,j,k]<= Uso[k]*7;
# Restriccion (5)
subject to Timek in Vehiculos,j in Viajes:ord(j)<7:
SalidaV[j+1,k]=SalidaV[j,k]+
sumi in ClientesCamionrecorrido[i,j,k]*(2*Tiempo[i]);
# Restriccion (6)
subject to Tpotem i in Clientes,j in Viajes,k in Vehiculos:
Espera[i,j,k] >=(Camionrecorrido[i,j,k]*LlegadaE[i])
-(SalidaV[j,k]+ (Camionrecorrido[i,j,k]*Tiempo[i]));
# Restriccion (7)
subject to Tpotar i in Cliente,j in Viajes,k in Vehiculos:
Retraso[i,j,k]>=SalidaV[j,k]+(Camionrecorrido[i,j,k]*Tiempo[i]
-LlegadaL[i]-2000*(1-Camionrecorrido[i,j,k])