Capítulo 4. Refinado del modelo básico

 

La metodología que vamos a utilizar será implementar de forma sucesiva modelos cada vez más ajustados a las características del problema. Iremos describiendo, en cada modelo, las caracterís-ticas que lo definen.

En el primer y segundo modelo definimos una única Base y Estación de Transferencia. En el primero la hacemos coincidir, despreciando el desplazamiento entre ambas, haciendo que los recorridos empiecen y terminen en la Estación de Transferencia. En el segundo modelo, sin embargo, ya los vehículos parten de la base, donde también terminan su jornada aunque descarguen siempre en las Estaciones de Transferencia. El tercer modelo usa una única Base de vehículos pero con dos Estacio-nes de Transferencia. En este modelo estableceremos dos variantes, una primera en el que no for-zamos el uso de ambas Estaciones y una segunda en que si lo hacemos. El cuarto modelo, el más completo del estudio, se plantea con una única base de vehículos y con un número variable de Estaciones de Transferencia. Con este cuarto modelo se podrían abordar todos los casos.

Primer MODELO

Figura 4.1: Esquema Primer Modelo

 

Consideraciones particulares del modelo:

En este primer modelo, que mostramos en la figura 4.1, introducimos las siguientes consideraciones particulares:

-          la función objetivo será principalmente la distancia recorrida por los vehículos de recogida (modificada, como ya veremos)

-          considerando que los vehículos parten y terminan en las Estaciones de transferencia o Bases de vehículos, ya que estas, supuestamente, coincidirían. El supuesto obliga a que los vehícu-los vayan y vuelvan de las Estaciones de Transferencia, reduciendo el tiempo disponible en el empleado en recorrer este tramo. La distancia y el tiempo empleado entre la Estación de Transferencia y la Base de Vehículos se desprecia.

-          No se considera la distancia recorrida ni el tiempo dentro de las poblaciones

A este supuesto podríamos aproximar las siguientes Bases que trabajan con una Estación de Trans-ferencia exclusivamente:

BASE

ESTACIÓN DE TRANSFERENCIA

Aracena

Linares de la Sierra

Condado

Villarrasa

Cuenca Minera

El Campillo

Isla Cristina

La Redondela

                                           Tabla 4.1: Bases de vehículos asociadas al Primer Modelo

En estos casos todos los vehículos y contenedores son del mismo tipo: de carga trasera.

No se tendrá en cuenta otros criterios de coste.

Los índices indican los municipios desde el 1 al NP, siendo NP el número de municipios a considerar en el caso. El subíndice 0 se reserva a la estación de transferencia, de donde salen los vehículos y donde vuelven para su vaciado y, si acaso, vuelta a salir con el vehículo vacío.

Cuando el índice vaya de 1 a número de poblaciones hablaremos de poblaciones o municipios y cuando el índice vaya de cero al número de poblaciones hablaremos de puntos (que incluiría la esta-ción de transferencia y los municipios).

Usaremos los subíndices  i y j para las poblaciones y estación de transferencia, k para los vehículos y v  para los viajes.

El número de vehículos no se optimiza sino que entra al modelo como parámetro.

 

PARÁMETROS      

NP

int

Número de poblaciones o municipios

 

NC

int

Número  de vehículos asociados a la Estación de Transferen-cia

 

NV

int

 Número máximo de viajes por vehículo

 

dij

float

Distancia entre el el punto i al j. Tanto i como j van desde 0 a NP. En kilómetros

 

TR

float

Tiempo (en horas) que se tarda en recoger un contenedor

 

RMi

int

Cantidad de basura generada en la población i. En número de contenedores. i entre 1 y NP.

 

U

int

Cota superior de RM(i)

 

CargaMaxk

int

Carga máxima de cada vehículo en número de contenedores; k entre 1 y NV

 

TJork

int

Tiempo (horas) máximo de disponibilidad de cada vehículo

 

VMk

float

Velocidad media de cada vehículo en carretera

 

T_Vaciado

float

Tiempo que tardamos en dejar el camión listo para la si-guiente recogida

 

PesoNumViajes

Int

Valor utilizado con la variable n_viaj en la función objetivo

 

PesoNumVisitas

int

Valor utilizado con la suma de las variables n_visj en la fun-ción objetivo

 

VARIABLES DE DECISIÓN

xijkv

bin

Si es 1, el vehículo recorre el tramo del punto i al j, entrando en ambos lugares que, si son municipios, es para recoger basura. Tanto i como j varían entre 0 y NP.

 

yjkv

Int

Cantidad de basura (número de contenedores) que el vehículo k en el viaje v recoge del municipio j; j varía entre 1 y NP

 

uj

Int

Variable auxiliar que utilizamos para evitar subitinerarios desco-nectados

 

zijkv

int

Variable auxiliar que utilizamos para linealizar una restricción; i varía entre 0 y NP, j entre 1 y NP

 

 

VARIABLES AUXILIARES

Estas variables las utilizamos para recoger datos que nos indican el funcionamiento del servicio y que normalmente las volcamos en la hoja de cálculo auxiliar.

t_reckv

float

Tiempo empleado, exclusivamente en el recorrido, por cada ve-hículo  k en cada viaje v:

 

t_conkv

float

Tiempo empleado por cada vehículo (k) en recoger todos los contenedores durante un viaje (v):

 

t_vack

float

Tiempo que emplea cada vehículo en estar disponible:

 

t_vehk

float

Tiempo total empleado por cada vehículo:

 

c_vehkv

int

Basura (número de contenedores) recogida por un vehículo (k) en cada viaje (v):

 

d_vehkv

float

Distancia recorrida (en kms) por el vehículo k en cada viaje v:

 

d_Recorrida

float

Distancia recorrida por todos los vehículos:

 

 

 

y_TVik

int

Cantidad recogida en cada municipio por población y vehículo.

Almacenamos el número de contenedores que recogemos por cada camión y en cada municipio:

 

n_viaj

int

Número total de viajes. Es el número total de viajes realizados por todos los vehículos:

n_visj

Int

Número de visitas a la población. El número de veces que una población es visitada por camiones para que le recogen toda o parte de la basura:

 

FUNCIÓN OBJETIVO

Minimizar la distancia recorrida por todos los vehículos en todos los viajes que realicen para recoger los residuos influenciada con el número de vehículos y de viajes. Es decir, tenemos que minimizar la siguiente función de coste:

Para poder monitorizar algunos valores vamos a descomponer la función:

Minimizar d_Recorrida, siendo esta:

RESTRICCIONES

RESTRICCIÓN 01: Solo una rama de salida

Desde cualquier punto solo podremos ir a otro, con un determinado vehículo y viaje:

RESTRICCIÓN 02: Solo una rama de llegada

A cualquier punto solo podemos llegar desde uno, con un determinado vehículo y viaje:

RESTRICCIÓN 03: Recorridos inconexos

Para evitar recorridos inconexos como 3 → 7, 7 → 3 y 0 → 4, 4 → 8, 8 → 9, 9 → 0. Lo que evitamos con esta restricción es que si un tramo i-j se recorre no se pueda hacer el inverso: j-i. Hemos excep-tuado el índice 0 ya que si admitimos ir desde la estación de transferencia a un municipio y volver:

RESTRICCIÓN 04: Gestión de la demanda

Se ha de recoger toda la basura generada en cada municipio. La suma de los productos de yjkv (can-tidad de basura que el vehículo k en su viaje v recoge del municipio j) por xijkv (que nos indica que el vehículo k en su viaje v llega al municipio j procedente del punto i) para todos los vehículos y duran-te todos los viajes sebe ser igual a la demanda del municipio j. Es necesario multiplicar los valores de y por x para que esta variable no trabaje de forma independiente de x. Si no lo hiciéramos así, estaríamos contabilizando basura recogida de los municipios sin haber pasado por ellos:

El problema que nos encontramos es que el producto de dos variables (una entera y la otra bi-naria) ya no nos permite plantear un sistema de ecuaciones lineales. Podemos cambiar esta restricción por las siguientes cuatro restricciones lineales, utilizando una variable auxiliar z:

RESTRICCIÓN 04-B: Gestión de la demanda. No la utilizo (LINEAL)

En vez de la restricción anterior, esta opción es más sencilla:

Y para evitar que x valga continuamente 0 a pesar de valer y > 0:

Siendo U una cota superior de RM

RESTRICCIÓN 05: No ir sin recoger

Para evitar recorrer lugares donde no se recoge basura, es decir para evitar situaciones como :   (no recojo basura a pesar de haber llegado):

RESTRICCIÓN 06: Ramas muertas

Para evitar tramos de recorridos que no sean consecutivos, es decir llegar a un municipio determi-nado y luego no salir de él. Impondríamos la siguiente restricción:

Que viene a indicar que para un vehículo y viaje determinado, salgo del municipio s si y solo si llego a él.

RESTRICCIÓN 07: Capacidad de los vehículos

Introduzcamos ahora la limitación de la capacidad de los vehículos haciendo que la suma de las cantidades recogidas por los vehículos no supere su capacidad máxima:

En cada viaje de cada vehículo, todas las cantidades de basura recogidas en los diferentes munici-pios no pueden superar la capacidad máxima del vehículo. Esta restricción la vamos a descomponer para poder dejar registro de las cantidades recogidas:

RESTRICCIÓN 08: Tiempos

El tiempo que emplea cada vehículo no puede superar su tiempo de disponibilidad, que si va asociado a un conductor específico, este tiempo coincidiría con la jornada de trabajo. El tiempo lo emplea en:

                                                              i.      Recorrer desde la estación de transferencia al primer municipio, recorrer los municipios donde recoge basura, regresar a la estación. (t_rec):

                                                            ii.      Recoger los contenedores (t_con):

                                                          iii.      Preparación de camión para su uso en el siguiente viaje (vaciar la basura, fundamentalmente) (t_vac):

La restricción sería:

RESTRICCIÓN 09: Vuelta a la estación

Para que los vehículos vuelvan a la estación de transferencia que es de donde salieron, imponemos la siguiente restricción:

El primer miembro representa la salida y el segundo la llegada. Si el primer miembro vale 1 (el vehí-culo en ese viaje salió) el segundo miembro también valdrá 1 (el vehículo en ese viaje, regresa).

PROBLEMAS

-          Hay municipios que solo recoge un contenedor

-          Utiliza un nuevo camión aunque tenga viajes disponibles de otro

-          Usa un viaje 2 sin haber usado el 1

Segundo MODELO

Figura 4.2: Esquema del Segundo Modelo

 

 

Consideraciones particulares del modelo:

Un esquema de este modelo podemos verlo en la figura 4.2. Seguimos tratando:

-          Los vehículos comienzan y terminan su jornada en las bases, y descargan los residuos  en una única Estación de Transferencia, de donde parten en el siguiente viaje.

-          Consideramos la distancia recorrida y el tiempo empleado dentro de las poblaciones, base a un parámetro relacionado con el tamaño de la población y en una velocidad media única para todos los vehículos.

-          La función objetivo se compone de tres sumandos: distancia recorrida total, número total de vi-sitas (modificado con un peso) y número total ve viajes (modificado con un peso).

-          Las distancias entre los puntos las calculamos a partir de las coordenadas geográficas que nos entran como parámetros, es decir, son distancias geométricas.

-          El tiempo medio de recogida de un contenedor lo asociamos al sistema de recogida, dependien-do por tanto del tipo de vehículo.

-          Al no disponer de los tracks de los vehículos, se ha supuesto que el recorrido de los vehículos dentro de la población es nueve veces su diámetro medio.

-          Al no disponer de los datos actuales de recogida, se ha supuesto que la capacidad de un conte-nedor, una vez prensado en el vehículo es inferior. Este factor de compresión se introduce como parámetro del modelo; en general 1/15.

-          En este modelo consideramos las siguientes bases (ver tabla 4.2):

-           

Base

Estaciones de Transferencia

Aracena

Condado

Cuenca Minera

Isla Cristina

Linares de la Sierra

Villarrasa

El Campillo

La Redondela

                                     Tabla 4.2: Bases de vehículos asociadas al Segundo Modelo

 

PARÁMETROS      

 

NP

int

Número de poblaciones o municipios

 

NC

int

Número  de vehículos asociados a la estación de transferencia

 

NV

int

 Número máximo de viajes por vehículo

 

muni

range

1..NP. Solo Municipios

 

aMuni

string

Array con los municipios

 

sMuni

{string}

Conjunto con los municipios

 

base

range

0..NP. Municipios y Base de vehículos. El subíndice 0 correspon-de a la Base de vehículos.

 

aBase

string

Array con la Base de vehículos y los municipios.

 

sBase

{string}

Conjunto con la Base de vehículos y los municipios.

 

tran

range

1..NP+1. Municipios y Estación de Transferencia. El subíndice NP+1 corresponde a la Estación de Transferencia

 

aTran

string

Array con la Estación de Transferencia y los municipios.

 

sTran

{string}

Conjunto con la Estación de Transferencia y los municipios

 

punt

range

0..NP+1. Municipios, Estación de Transferencia y Base de vehí-culos. El subíndice 0 corresponde a la Base de vehículos.

El NP+1 corresponde s la Estación de Transferencia.

 

aPunt

string

Array con la Base de vehículos, la Estación de Transferencia y los municipios

 

sPunt

{string}

Conjunto con la Base de vehículos, la Estación de Transferencia y los municipios

 

vehi

range

1..NC

 

aVehi

string

Array con las matrículas de los vehículos

 

sVehi

{string}

Conjunto con las matrículas de los vehículos

 

viaj

range

1..NV

 

viaT

range

1..(NV+1): Incluimos el viaje de regreso a la Base.

 

dij

float

Distancia entre el el punto i al j. Tanto i como j van desde 0 a NP+1, (kilómetros)

 

 

TR(vehi)

float

Tiempo (horas) que se tarda en recoger un contenedor. Depen-de del sistema de recogida (tipo de contenedor y vehículo) que usemos.

 

RM(sMuni)

int

Cantidad de basura generada en la población i (número de con-tenedores).

 

U

Int

Cota superior de RM(i) y, por tanto, de y.

 

CargaMax(vehi)

int

Carga máxima permitida de cada vehículo (número de contene-dores).

 

TJor(vehi)

int

Tiempo (horas) máximo de disponibilidad de cada vehículo.

 

VM(vehi)

float

Velocidad media (km/h) de cada vehículo en carretera

 

VP

float

Velocidad media (km/h) de los vehículos en población. La consi-deramos igual para todos los vehículos y en todas las poblacio-nes.

 

T_Vaciado

float

Tiempo (horas) que tardamos en descargar el vehículo y dejarlo listo para la siguiente recogida. Existirá siempre después de ca-da recogida, incluida la última.

 

DiamMed(sMuni)

float

Diámetro (kilómetros) medio de cada población. Recorrido aproximado que realizamos cada vez que entremos en la po-blación.

 

RecPob(sMuni)

float

Recorrido (kilómetros) que realizaríamos si recogiéramos todos los contenedores de la población. Se contabiliza una vez que es-tamos dentro de la población y se termina al recoger el último contenedor.

 

PesoNumViajes

Int

Valor utilizado con la variable n_viaj en la función objetivo para decidir su influencia en esta.

 

PesoNumVisitas

int

Valor utilizado con la variable n_vis_tot en la función objetivo para decidir su influencia en esta.

 

lat(sPunt)

float

Latitud geográfica (en grados) de la Base de vehículos, Estación de Transferencia y municipios

 

lon(sPunt)

float

Longitud geográfica (en grados) de la Base de vehículos, Esta-ción de Transferencia y municipios

 

 

PARÁMETROS CALCULADOS MEDIANTE SCRIPT

dij

float

Distancia entre puntos

 

latRd

float

Latitud de cada punto en radianes

 

lonRd

float

Longitud de cada punto en radianes

 

VARIABLES DE DECISIÓN

xijkv

bin

Si es 1, el vehículo recorre el tramo del punto i al j, entrando en ambos lugares, que si son municipios para recoger basura. Tanto i como j pueden entre 0 y NP+1, dependiendo del caso.

 

yjkv

Int

Cantidad de basura (número de contenedores) que el vehículo k en el viaje v recoge del municipio j; j varía entre 1 y NP

 

uj

Int

Variable auxiliar que utilizamos para evitar subitinerarios desco-nectados. j entre 0 y NP. uj entre 0 y 100.

 

 

zijkv

int

Variable auxiliar que utilizamos para linealizar una restricción; i varía entre 0 y NP+1, j entre 1 y NP.

 

 

VARIABLES AUXILIARES

Estas variables las utilizamos para recoger datos que nos indican el funcionamiento del servicio y que algunas de ellas las volcamos en la hoja de cálculo auxiliar.

 

t_reckv

float

Tiempo empleado para recorrer todos los tramos (incluidos Ba-se de vehículos y Estación de Transferencia), por cada vehículo  k en cada viaje v, excluyendo el de regreso a la base:

 

t_regk

float

Tiempo empleado en regresar a la Base de vehículos (desde la Estación de Transferencia) una vez terminada la recogida:

 

t_conk

float

Tiempo empleado por cada vehículo (k) en recoger los contene-dores de las poblaciones que recorre y durante todos sus viajes:

 

t_vack

float

Tiempo que emplea cada vehículo en estar disponible.

 Observemos que contamos las veces que se llega a la Estación de Transferencia (siempre con el vehículo cargado) y lo multiplicmos por el tiempo medio de vaciado de un vehículo:

 

t_pobk

float

Tiempo de recorrido por vehículo en el interior de las pobla-ciones. Excluimos el tiempo dedicado a recoger los contenedo-res:

t_vehk

float

Tiempo total empleado por cada vehículo:

 

c_vehkv

int

Carga (número de contenedores) recogida por un vehículo k en cada viaje v:

 

d_vehkv

float

Distancia recorrida (en kms) por el vehículo k en cada viaje v:

 

 

d_veh_tot

float

Distancia total recorrida (kms) por todos los vehículos en todos sus viajes en los recorridos de recogida:

 

 

d_pobk

float

Distancia recorrida por vehículo dentro de poblaciones. Desde que entra hasta que sale de cada una de ellas. Sumamos las visi-tas del vehículo a cada población (por la distancia de entrada a cada una) y el recorrido por la población recogiendo los contenedores:

d_reg_tot

float

Distancia recorrida por todos los vehículos al regresar a la Base de vehículos (desde la estación de Transferencia):

 

 

 

d_Recorrida

float

Distancia total recorrida por todos los vehículos y durante todos los viajes:

 

 

 

y_TVik

int

Cantidad recogida en cada municipio por población y vehículo.

Almacenamos el número de contenedores que recogemos por cada camión y en cada municipio:

 

n_viaj

int

Número total de viajes. Es el número total de viajes realizados por todos los vehículos, incluidos los de vuelta a la Base de vehí-culos.

Lo calculamos con tres sumandos: Los que salen de la Base (pri-mer viajes, todos: NC), los que salen de la Estación de Transferen-cia (a partir del segundo viajes) para continuar la recogida y los que regresan a la Base desde la Estación(todos: NC):

 

Otra manera de calcularlo es con dos sumandos: número de lle-gadas a la Estación de transferencia (para descargar) más los via-jes de regreso a la Base de vehículos (todos: NC):

 

n_visjk

Int

Número de visitas a la población. El número de veces que una población j es visitada por un vehículo k para que le recojan toda o parte de la basura:

 

n_vis_tot

Int

Número total de visitas a las poblaciones. Sencillamente, total-zamos todas la visitas de todos los vehículos a totas la poblacio-nes:

 

FUNCIÓN OBJETIVO

Minimizar la distancia recorrida por todos los vehículos en todos los viajes que realicen para recoger los residuos con un cierto apoyo en el número total de viajes y de visitas. Es decir, tenemos que mi-nimizar la siguiente función de coste:

 

RESTRICCIONES

RESTRICCIÓN 01: Rama de salida

Desde cualquier población solo podremos ir a otra, con un determinado vehículo y viaje:

Desde la Base de vehículos, con cada vehículo y en el primer viaje, iremos a una población y solo a una:

  

En el resto de viajes, desde la Estación de Transferencia podremos ir a un solo municipio, si el vehículo sale en ese viaje:

 

   

 

RESTRICCIÓN 02: Rama de llegada

A cualquier población solo podemos llegar desde otra, con un determinado vehículo y viaje:

A la Estación de Transferencia solo se puede llegar desde una única población excepto en el viaje de regreso:

El primer viaje nunca se llega a la Base de vehículos:

 

RESTRICCIÓN 03: Recorridos inconexos

Para evitar recorridos inconexos entre poblaciones como 3 → 7, 7 → 3. Lo que evitamos con esta restricción es que si un tramo i-j se recorre no se pueda hacer el inverso: j-i. Hemos exceptuado el índice NP+1 ya que sí admitimos ir desde la Estación de Transferencia a un municipio y volver:

RESTRICCIÓN 04: Gestión de la demanda

Se ha de recoger toda la basura generada en cada municipio. La suma de los productos de yjkv (can-tidad de basura que el vehículo k en su viaje v recoge del municipio j) por xijkv (que nos indica que el vehículo k en su viaje v llega al municipio j procedente del punto i) para todos los vehículos y duran-te todos los viajes sebe ser igual a la demanda del municipio j. Es necesario multiplicar los valores de y por x para que esta variable no trabaje de forma independiente de x. Si no lo hiciéramos así, estaríamos contabilizando basura recogida de los municipios sin haber pasado por ellos:

El problema que nos encontramos es que el producto de dos variables (una entera y la otra binaria) ya no nos permite plantear un sistema de ecuaciones lineales. Podemos cambiar esta restricción por las siguientes cuatro restricciones lineales, utilizando una variable auxiliar z:

Además, se debe satisfacer:

 

RESTRICCIÓN 05: No ir sin recoger

Para evitar recorrer lugares donde no se recoge basura, es decir para evitar situaciones como :   (no recojo basura a pesar de haber llegado):

RESTRICCIÓN 06: Ramas muertas

Para evitar tramos de recorridos que no sean consecutivos, es decir llegar a un municipio determi-nado y luego no salir de él. Imponemos la siguiente restricción:

Que viene a indicar que para un vehículo y viaje determinado, se sale del municipio s si y solo si se llega a él.

RESTRICCIÓN 07: Capacidad de los vehículos

Introduzcamos ahora la limitación de la capacidad de los vehículos haciendo que la suma de las cantidades recogidas por los vehículos no supere su capacidad máxima:

En cada viaje de cada vehículo, todas las cantidades de basura recogidas en los diferentes munici-pios no pueden superar la capacidad máxima del vehículo.

RESTRICCIÓN 08: Tiempos

El tiempo que emplea cada vehículo no puede superar su tiempo de disponibilidad, que si va aso-ciado a un conductor específico, este tiempo coincidiría con la jornada de trabajo:

RESTRICCIÓN 09: Vuelta a la estación

En el primer viaje, cada vehículo que sale de la Base, regresa a la Estación de Transferencia:

En los viajes siguientes, excepto el último, cada vehículo sale y vuelve a la Estación de Transferencia:

El primer miembro representa la salida y el segundo la llegada. Si el primer miembro vale 1 (el vehí-culo en ese viaje salió) el segundo miembro también valdrá 1 (el vehículo en ese viaje, regresa). 

 

RESTRICCIÓN 14: Recorrido Base a Estación de Transferencia

Los vehículos nunca van de la base a la estación (ya salen vacíos):

 

 

RESTRICCIÓN 15: Regreso a la Base de vehículos

El último viaje (NV+1), cada vehículo lo emplea, exclusivamente, en volver a la base desde la Esta-ción de Transferencia, ya vacío:

 

Y ninguno, en el último viaje (NV+1) vuelve a la Estación de Transferencia:

 

 

En el resto de viajes, ninguno se realiza desde la estación de Transferencia a la Base de vehículos:

 

  

RESTRICCIÓN 16: Recorrido poblaciones a Base

Los vehículos no vuelven a la base desde ningún municipio (con basura):

 

 

RESTRICCIÓN 17: Salida desde la Base

Solo en el primer viaje se sale de la base:

 

En el resto de viajes, ningún vehículo sale de la Base de vehículos:

 

Tercer MODELO

Tabla 4.3: Bases de vehículos asociadas al Tercer Modelo

 

Consideraciones particulares del modelo:

En la figura 4.3 vemos una representación de este modelo, en el que en este caso:

-          La diferencia con el segundo modelo es que en este, los vehículos de recogida pueden des-cargar en DOS Estaciones de Transferencia.

-          No limitamos la cantidad descargada en cada Estación de Transferencia

-          A partir del segundo viaje, el vehículo inicia su recorrido en la Estación de Transferencia don-de llegó en el viaje anterior.

-          En este modelo podríamos incluir las bases de vehículos recogidas en la tabla 4.3.

Base

Estaciones de Transferencia

Andévalo

Punta Umbría (NORD)

Punta Umbría (TRASERA)

Andévalo y La Redondela

Huelva y La Redondela

Huelva y La Redondela

                             Figura 4.3: Esquema Tercer Modelo

PARÁMETROS      

Son los mismos que el segundo modelo

PARÁMETROS CALCULADOS MEDIANTE SCRIPT

Son los mismos que el segundo modelo

VARIABLES DE DECISIÓN

Son las mismas que el segundo modelo

FUNCIÓN OBJETIVO

Es la misma que el segundo modelo.

 

VARIABLES AUXILIARES

Estas variables las utilizamos para recoger datos que nos indican el funcionamiento del servicio y que algunas de ellas las volcamos en la hoja de cálculo auxiliar.

t_reckv

float

Tiempo empleado para recorrer todos los tramos (incluidos Base de vehículos y Estaciones de Transferencia), por cada vehículo  k en cada viaje v, excluyendo el de regreso a la base:

t_regk

float

Tiempo empleado en regresar a la Base de vehículos (desde las Estaciones de Transferencia ) una vez terminada la recogida:

t_conk

float

Tiempo empleado por cada vehículo (k) en recoger los contene-dores de las poblaciones que recorre y durante todos sus viajes.:

t_vack

float

Tiempo que emplea cada vehículo en estar disponible.

 Observemos que contamos las veces que se llega a la Estación de Transferencia (siempre con el vehículo cargado) y lo multiplica-mos por el tiempo medio de vaciado de un vehículo.

 

t_pobk

float

Tiempo de recorrido por vehículo en el interior de las poblacio-nes. Excluimos el tiempo dedicado a recoger los contenedores:

t_vehk

float

Tiempo total empleado por cada vehículo

c_vehkv

int

Carga (número de contenedores) recogida por un vehículo k en cada viaje v:

d_vehkv

float

Distancia recorrida (en kms) por el vehículo k en cada viaje v:

d_veh_tot

float

Distancia total recorrida (kms) por todos los vehículos en todos sus viajes en los recorridos de recogida:

d_pobk

float

Distancia recorrida por vehículo dentro de poblaciones. Desde que entra hasta que sale de cada una de ellas. Sumamos las visitas del vehículo a cada población (por la distancia de entrada a cada una) y el recorrido por la población recogiendo los contenedores:

d_reg_tot

float

Distancia recorrida por todos los vehículos al regresar a la Base de vehículos (desde las Estaciones de Transferencia):

 

 

 

d_Recorrida

float

Distancia total recorrida por todos los vehículos y durante todos los viajes, incluido el de regreso a la base:

 

 

 

y_TVik

int

Cantidad recogida en cada municipio por población y vehículo.

Almacenamos el número de contenedores que recogemos por cada camión y en cada municipio:

 

n_viaj

int

Número total de viajes. Es el número total de viajes realizados por todos los vehículos, incluidos los de vuelta a la Base de vehí-culos.  Lo calculamos con tres sumandos: Los que salen de la Base (primer viajes, todos: NC), los que salen de las Estaciones de Transferencia (a partir del segundo viaje) para continuar la reco-gida y los que regresan a la Base desde las Estaciones (todos: NC):

Otra manera de calcularlo es con dos sumandos: número de llegadas a las Estaciones de Transferencia (para descargar) más los viajes de regreso a la Base de vehículos (todos: NC):

 

n_visjk

Int

Número de visitas a la población. El número de veces que una población j es visitada por un vehículo k para que le recojan toda o parte de la basura:

n_vis_tot

Int

Número total de visitas a las poblaciones. Sencillamente, totalzamos todas la visitas de todos los vehículos a todas las poblaciones:

Y_kx

Int

Cantidades recogidas por cada vehículo y viaje. Para poder sacar a la hoja auxiliar las cantidades recogidas en cada población por cada vehículo y viaje. La x se sustituye por el número de vehículo:

 

RESTRICCIONES

RESTRICCIÓN 01: Rama de salida

Desde cualquier población solo podremos ir a otra, con un determinado vehículo y viaje:

Desde la Base de vehículos, con cada vehículo y en el primer viaje, iremos a una población y solo a una:

En el resto de viajes, desde una Estación de Transferencia podremos ir a un solo municipio, si el ve-hículo sale en ese viaje y de esa Estación:

      

RESTRICCIÓN 02: Rama de llegada

A cualquier población solo podemos llegar desde otra, con un determinado vehículo y viaje:

A una Estación de Transferencia solo se puede llegar desde una única población excepto en el viaje de regreso:

El primer viaje nunca se llega a la Base de vehículos:

 

RESTRICCIÓN 03: Recorridos inconexos

Para evitar recorridos inconexos entre poblaciones como 3 → 7, 7 → 3. Lo que evitamos con esta restricción es que si un tramo i-j se recorre no se pueda hacer el inverso: j-i. Hemos exceptuado el índice NP+1 ya que sí admitimos ir desde la Estación de Transferencia a un municipio y volver.

Esta restricción es la misma que en Segundo Modelo:

RESTRICCIÓN 04: Gestión de la demanda

Se ha de recoger toda la basura generada en cada municipio. La suma de los productos de yjkv (cantidad de basura que el vehículo k en su viaje v recoge del municipio j) por xijkv (que nos indica que el vehículo k en su viaje v llega al municipio j procedente del punto i) para todos los vehículos y durante todos los viajes sebe ser igual a la demanda del municipio j. Es necesario multiplicar los valores de y por x para que esta variable no trabaje de forma independiente de x. Si no lo hiciera-mos así, estaríamos contabilizando basura recogida de los municipios sin haber pasado por ellos:

El problema que nos encontramos es que el producto de dos variables (una entera y la otra binaria) ya no nos permite plantear un sistema de ecuaciones lineales. Podemos cambiar esta restricción por las siguientes cuatro restricciones lineales, utilizando una variable auxiliar z:

Además, se debe satisfacer:

 

RESTRICCIÓN 05: No ir sin recoger

Para evitar recorrer lugares donde no se recoge basura es decir, para evitar situaciones como : 

 (no recojo basura a pesar de haber llegado) introducimos la siguiente restricción:

 

RESTRICCIÓN 06: Ramas muertas

Para evitar tramos de recorridos que no sean consecutivos, es decir llegar a un municipio determi-nado y luego no salir de él. Impondríamos la siguiente restricción:

Que viene a indicar que para un vehículo y viaje determinado, salgo del municipio s si y solo si llego a él.

RESTRICCIÓN 07: Capacidad de los vehículos

Introduzcamos ahora la limitación de la capacidad de los vehículos haciendo que la suma de las can-tdades recogidas por los vehículos no supere su capacidad máxima:

En cada viaje de cada vehículo, todas las cantidades de basura recogidas en los diferentes munici-pios no pueden superar la capacidad máxima del vehículo.

Esta restricción es la misma que en el Segundo Modelo.

 

RESTRICCIÓN 08: Tiempos

El tiempo que emplea cada vehículo no puede superar su tiempo de disponibilidad, que si va asocia-do a un conductor específico, este tiempo coincidiría con la jornada de trabajo:

Esta restricción es la misma que en el Segundo Modelo.

RESTRICCIÓN 09: Vuelta a la estación

En el primer viaje, cada vehículo que sale de la Base, llega a una de las Estaciones de Transferencia, después de hacer el recorrido:

En los viajes siguientes, excepto el último de cada vehículo, cada uno sale de una Estación de transferencia llega a la misma o a otra:

El primer miembro representa la salida y el segundo la llegada. Si el primer miembro vale 1 (el vehículo en ese viaje salió de una Estación de Transferencia) el segundo miembro también valdrá 1 (el vehículo en ese viaje llega a una u otra Estación de Transferencia). 

 

RESTRICCIÓN 14: Recorrido Base a Estaciones de Transferencia

Los vehículos nunca van de la base a una Estación de Transferencia directamente (ya salen vacíos):

 

RESTRICCIÓN 15: Regreso a la Base de vehículos

El último viaje (NV+1), cada vehículo lo emplea, exclusivamente, en volver a la base desde una de las Estaciones de Transferencia, ya vacío:

 

 

Y ninguno, en el último viaje (NV+1) vuelve a una Estación de Transferencia:

 

En el resto de viajes, ninguno se realiza desde una Estación de Transferencia a la Base de vehículos:

 

 

En el último viaje a la base solo se puede llegar desde una Estación de Transferencia , nunca desde las poblaciones:

 

RESTRICCIÓN 16: Recorrido poblaciones a Base

Los vehículos no vuelven a la base desde ningún municipio (con basura):

 

 

Esta restricción es la misma que en el Segundo Modelo.

 

RESTRICCIÓN 17: Salida desde la Base

Solo en el primer viaje se sale de la base:

 

 

En el resto de viajes, ningún vehículo sale de la Base de vehículos:

 

 

Esta restricción es la misma que en el Segundo Modelo.

RESTRICCIÓN 18: Viajes entre Estaciones de Transferencia

No existen viajes  directos entre Estaciones de Transferencia:

RESTRICCIÓN 19: Continuidad en las Estaciones de Transferencia

No puedo salir de una si no he llegado previamente. Puedo no salir:

RESTRICCIÓN 20: Balance de viajes en las Estaciones

El número de vehículos que llegan a las estaciones de Transferencia es igual que el que sale:

RESTRICCIÓN 21: Obligación de usar ambas estaciones de transferencia

Esta restricción la hemos usado de forma opcional, concretamente en las opciones B de cada Base de este modelo:

 

Cuarto MODELO

Figura 4.4: Esquema del Cuarto Modelo

 

Consideraciones particulares del modelo:

Multi-estaciones de Transferencia. En la figura 4.4 vemos un esquema de este modelo y en la tabla 4.4, la base que al relacionarse con tres Estaciones de Transferencia se adapta a este modelo.

En este modelo el número de estaciones es un parámetro de entrada. Diríamos que este modelo podría abarcar, conceptualmente, todos los casos tratados con los modelos anteriores pero añadiría complejidad innecesaria.

El único caso en el que es imprescindible utilizarlo es con la Base de Trigueros que actualmente tra-baja con tres Estaciones de Transferencia.

La función objetivo, las variables de decisión y los parámetros calculados son como en el modelo 2 y 3, pero las restricciones y las variables auxiliares cambian. Se incluye a continuación los nuevos pa-rámetros que habría que añadir a los que ya usábamos en el modelo 3 y la lista completa de varia-bles auxiliares y restricciones.

Base

Estaciones de Transferencia

Trigueros

Huelva, Linares de la Sierra y Villarrasa

                                 Tabla 4.4: Bases de vehículos asociadas al Cuarto Modelo

PARÁMETROS      

Son los mismos que el segundo y tercer modelo, añadiendo las siguientes:

NE

int

Número de Estaciones de Transferencia

 

esta

range

1..NE. Estaciones de Transferencia

 

aEsta

string

Array con las Estaciones de Transferencia

 

sEsta

{string}

Conjunto con las Estaciones de Transferencia

 

PARÁMETROS CALCULADOS MEDIANTE SCRIPT

Son los mismos que el segundo y tercer modelo.

VARIABLES DE DECISIÓN

Son las mismas que el segundo y tercer modelo.

FUNCIÓN OBJETIVO

Es la misma que el segundo y tercer modelo.

VARIABLES AUXILIARES

Estas variables las utilizamos para recoger datos que nos indican el funcionamiento del servicio y que algunas de ellas las volcamos en la hoja de cálculo auxiliar.

t_reckv

float

Tiempo empleado para recorrer todos los tramos (incluidos Ba-se de Vehículos y Estaciones de Transferencia), por cada vehículo  k en cada viaje v, excluyendo el de regreso a la base:

 

t_regk

float

Tiempo empleado en regresar a la Base de vehículos (desde las Estaciones de Transferencia ) una vez terminada la recogida y en el último viaje (NV+1):

 

t_conk

float

Tiempo empleado por cada vehículo (k) en recoger los contene-dores de las poblaciones que recorre y durante todos sus viajes:

 

t_vack

float

Tiempo que emplea cada vehículo en estar disponible.

Observemos que contamos las veces que se llega a la Estación de Transferencia (siempre con el vehículo cargado) y lo multiplica-mos por el tiempo medio de vaciado de un vehículo:

t_pobk

float

Tiempo de recorrido por vehículo dentro de las poblaciones.

 Excluimos el tiempo dedicado a recoger los contenedores:

t_vehk

float

Tiempo total empleado por cada vehículo:

 

 

c_vehkv

int

Carga (número de contenedores) recogida por un vehículo k en cada viaje v:

d_vehkv

float

Distancia recorrida (en kms) por el vehículo k en cada viaje v:

 

d_veh_tot

float

Distancia total recorrida (kms) por todos los vehículos en todos sus viajes en los recorridos de recogida:

d_pobk

float

Distancia recorrida por vehículo dentro de poblaciones. Desde que entra hasta que sale de cada una de ellas. Sumamos las visi-tas del vehículo a cada población (por la distancia de entrada a cada una) y el recorrido por la población recogiendo los contenedores:

 

d_reg_tot

float

Distancia recorrida por todos los vehículos al regresar a la Base de Vehículos (desde las Estaciones de Transferencia):

d_Recorrida

float

Distancia total recorrida por todos los vehículos y durante todos los viajes, incluido el de regreso a la base:

y_TVik

int

Cantidad recogida en cada municipio por población y vehículo.

Almacenamos el número de contenedores que recogemos por cada camión y en cada municipio:

 

n_viaj

int

Número total de viajes. Es el número total de viajes realizados por todos los vehículos, incluidos los de vuelta a la Base de vehí-culos.  Lo calculamos con tres sumandos: Los que salen de la Base (primer viajes, todos: NC), los que salen de las Estaciones de Transferencia (a partir del segundo viaje) para continuar la reco-gida y los que regresan a la Base desde las Estaciones (todos: NC):

Otra manera de calcularlo es con dos sumandos: número de llegadas a las Estaciones de Transferencia (para descargar) más los viajes de regreso a la Base de vehículos (todos: NC):

 

 

n_visjk

Int

Número de visitas a la población. El número de veces que una población j es visitada por un vehículo k para que le recojan toda o parte de la basura:

n_vis_tot

Int

Número total de visitas a las poblaciones. Sencillamente, totali-zamos todas la visitas de todos los vehículos a totas la poblacio-nes:

Y_kx

Int

Cantidades recogidas por cada vehículo y viaje. Para poder sacar a la hoja auxiliar las cantidades recogidas en cada población por cada vehículo y viaje. La x se sustituye por el número de vehículo:

 

 

RESTRICCIONES

Las restricciones en este nuevo modelo quedan como sigue:

RESTRICCIÓN 01: Rama de salida

Desde cualquier población solo podremos ir a otra, con un determinado vehículo y viaje:

Desde la Base de vehículos, con cada vehículo y en el primer viaje, iremos a una población y solo a una:

  

En el resto de viajes, desde una Estación de Transferencia podremos ir a un solo municipio, si el vehículo sale en ese viaje y de esa Estación:

   

RESTRICCIÓN 02: Rama de llegada

A cualquier población solo podemos llegar desde otra, con un determinado vehículo y viaje:

A una Estación de Transferencia solo se puede llegar desde una única población excepto en el viaje de regreso:

El primer viaje nunca se llega a la Base de vehículos:

 

RESTRICCIÓN 03: Recorridos inconexos

Para evitar recorridos inconexos entre poblaciones como 3 → 7, 7 → 3. Lo que evitamos con esta restricción es que si un tramo i-j se recorre no se pueda hacer el inverso: j-i. Hemos exceptuado el índice NP+1 ya que sí admitimos ir desde la Estación de Transferencia a un municipio y volver.

Esta restricción es la misma que en Segundo Modelo:

 

RESTRICCIÓN 04: Gestión de la demanda

Se ha de recoger toda la basura generada en cada municipio. La suma de los productos de yjkv (cantidad de basura que el vehículo k en su viaje v recoge del municipio j) por xijkv (que nos indica que el vehículo k en su viaje v llega al municipio j procedente del punto i) para todos los vehículos y durante todos los viajes sebe ser igual a la demanda del municipio j. Es necesario multiplicar los valores de y por x para que esta variable no trabaje de forma independiente de x. Si no lo hiciera-mos así, estaríamos contabilizando basura recogida de los municipios sin haber pasado por ellos:

El problema que nos encontramos es que el producto de dos variables (una entera y la otra binaria) ya no nos permite plantear un sistema de ecuaciones lineales. Podemos cambiar esta restricción por las siguientes cuatro restricciones lineales, utilizando una variable auxiliar z:

Además, se debe satisfacer:

 

RESTRICCIÓN 05: No ir sin recoger

Para evitar recorrer lugares donde no se recoge basura, es decir para evitar situaciones como :   (no recojo basura a pesar de haber llegado):

RESTRICCIÓN 06: Ramas muertas

Para evitar tramos de recorridos que no sean consecutivos, es decir llegar a un municipio determi-nado y luego no salir de él. Impondríamos la siguiente restricción:

Que viene a indicar que para un vehículo y viaje determinado, salgo del municipio s si y solo si llego a él.

RESTRICCIÓN 07: Capacidad de los vehículos

Introduzcamos ahora la limitación de la capacidad de los vehículos haciendo que la suma de las cantidades recogidas por los vehículos no supere su capacidad máxima:

En cada viaje de cada vehículo, todas las cantidades de basura recogidas en los diferentes munici-pios no pueden superar la capacidad máxima del vehículo. Esta restricción es la misma que en el Segundo Modelo.

RESTRICCIÓN 08: Tiempos

El tiempo que emplea cada vehículo no puede superar su tiempo de disponibilidad, que si va asocia-do a un conductor específico, este tiempo coincidiría con la jornada de trabajo:

Esta restricción es la misma que en el Segundo Modelo.

RESTRICCIÓN 09: Vuelta a la estación

En el primer viaje, cada vehículo que sale de la Base, llega a una de las Estaciones de Transferencia, después de hacer el recorrido:

 

En los viajes siguientes, excepto el último de cada vehículo, cada uno sale de una Estación de Trans-ferencia llega a la misma o a otra:

El primer miembro representa la salida y el segundo la llegada. Si el primer miembro vale 1 (el vehí-culo en ese viaje salió de una Estación de Transferencia) el segundo miembro también valdrá 1 (el vehículo en ese viaje llega a una u otra Estación de Transferencia). 

 

RESTRICCIÓN 14: Recorrido Base a Estaciones de Transferencia

Los vehículos nunca van de la base a una Estación de Transferencia directamente (ya salen vacíos):

 

RESTRICCIÓN 15: Regreso a la Base de vehículos

El último viaje (NV+1), cada vehículo lo emplea, exclusivamente, en volver a la base desde una de las Estaciones de Transferencia, ya vacío:

 

 

Y en el último viaje (NV+1) ninguno vuelve a una Estación de Transferencia:

 

En el resto de viajes, ninguno se realiza desde una Estación de Transferencia a la Base de vehículos:

 

 

En el último viaje a la base solo se puede llegar desde una Estación de Transferencia, nunca desde las poblaciones:

 

RESTRICCIÓN 16: Recorrido poblaciones a Base

Los vehículos no vuelven a la base desde ningún municipio (con basura):

 

 

Esta restricción es la misma que en el Segundo Modelo.

 

RESTRICCIÓN 17: Salida desde la Base

Solo en el primer viaje se sale de la base:

 

 

En el resto de viajes, ningún vehículo sale de la Base de vehículos:

 

 

Esta restricción es la misma que en el Segundo Modelo.

 

RESTRICCIÓN 18: Viajes entre Estaciones de Transferencia

No existen viajes  directos entre Estaciones de Transferencia:

 

RESTRICCIÓN 19: Continuidad en las Estaciones de Transferencia

No puedo salir de una si no he llegado previamente. Puedo no salir:

 

RESTRICCIÓN 20: Balance de viajes en las Estaciones

El número de vehículos que llegan a las estaciones de Transferencia es igual que el que sale:

 

RESTRICCIÓN 21: Obligación de usar ambas estaciones de transferencia

Esta restricción la hemos usado de forma opcional. En caso de la Base de Trigueros, no la hemos utilizado. El modelo por sí mismo ya utiliza las tres Estaciones de Transferencia:


 

Inicio

Capítulo 1: Introducción

Capítulo 2: Especificación del problema

Capítulo 3: Modelo MILP básico

Capítulo 4: Refinado del modelo básico

Capítulo 5: Resultados

Capítulo 6: Conclusiones y trabajos futuros