3.- modelos matemÁticos 3.1 …bibing.us.es/proyectos/abreproy/4205/fichero/volumen+1...proyecto...
TRANSCRIPT
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
16
3.- MODELOS MATEMÁTICOS
3.1 CARACTERISTICAS GENERALES DE LOS MODELOS
Los modelos que a continuación vamos a estudiar tienen como objeto resolver
problemas de la morfología del explicado en el apartado anterior, por tanto definimos a
continuación los datos, hipótesis y resultados del problema a tratar.
Datos del problema:
o Horarios que deben cumplir los vehículos
o Tiempo empleado en realizar cada trayecto por un vehículo de la flota
o Coste fijo derivado del empleo de cada vehículo adicional utilizado para realizar
la asignación de vehículos a los trayectos demandados.
o Coste variable derivado de la conducción de un vehículo. Este coste vendrá dado
en unidades monetarias por distancia recorrida.
o Velocidad de diseño a la que viajarán los vehículos
Hipótesis del problema:
o Existirán en el problema trayectos de ida y trayectos de vuelta entre dos tipos de
puntos clave denominados bases y destinos, siendo el numero de trayectos de ida
igual al numero de trayectos de vuelta.
o Todos los vehículos poseen similares características técnicas, con lo cual los
costes imputables serán idénticos para cada uno de los vehículos.
o Los vehículos realizaran los traslados a velocidad constante coincidente con la
velocidad de diseño, tanto si el vehículo esta lleno de pasajeros como si se
encuentra vació.
o Los costes asociados a la utilización de un vehículo adicional para la asignación
de trayectos serán mucho mayores que los asociados a la conducción de
vehículos.
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
17
Solución del problema:
La solución del problema será aquella en la cual todos los trayectos hayan sido
cubiertos y los costes sean mínimos. Esta solución tendrá pues las siguientes
características:
o Debido a que los costes asociados a la utilización de cada vehículo adicional
son dominantes en la función de costes, una asignación optima tratara de
minimizar el numero de vehículos utilizados para cubrir todos los trayectos.
o Entre dos soluciones que utilicen el mismo numero de vehículos para cubrir
todos los trayectos, será optima aquella que minimice la distancia recorrida
por la totalidad de vehículos, ya que los costes asociados a la conducción de
los vehículos son proporcionales a esta.
Para resolver el problema en cuestión se emplearan dos modelos:
El primer modelo ha sido desarrollado utilizando nociones de modelado
estudiadas el la asignatura Métodos cuantitativos y Organización de la producción en la
carrera de Ingeniería Industrial en la universidad de Sevilla. El modelo resultante es un
modelo completamente valido pero con unas limitaciones computacionales que se
comentaran mas adelante.
El segundo modelo esta basado en un articulo de investigación de B. Gavish, P.
Schweitzert y E. Shlifer llamado “Assigning buses to schedules in a metropolitan area”,
modificando uno de los modelos existentes para adecuarlos a las características de
nuestro problema particular. Este modelo es mas óptimo que el primero debido a que
utiliza menos recursos computacionales para obtener el mismo resultado, con lo cual
este será el modelo que usaremos para resolver el problema de asignación particular de
los autobuses en Cuba.
A continuación se desarrollarán e implementarán los dos modelos de una manera
progresiva para la mejor comprensión del lector.
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
18
3.1.- SOLUCIÓN MEDIANTE MODELO MATEMÁTICO Nº 1
3.1.1- Desarrollo del modelo
El primer modelo es un modelo de programación lineal basado en una función
objetivo a minimizar que refleja todos los costes del problema, fijos y variables, y una
serie de restricciones de carácter lineal derivadas de la naturaleza del modelo y que
persiguen la obtención de una solución que se adecue a los requisitos impuestos por los
datos del problema, tales como horario de los trabajadores o tiempo necesario para
realizar un trayecto por un autobús. Para facilitar la comprensión del modelo al lector
se expondrá este primeramente como un modelo de grafos, en el cual los nodos
representan los trayectos a realizar y los arcos representarán la unión entre dos trayectos
que puede realizar un autobús.
3.1.1.1.- Diagrama de Grafos
En el problema genérico y de acuerdo con la hipótesis de numero de viajes de
ida igual a numero de viajes de vuelta, tendremos n trayectos de ida y n trayectos de
vuelta. A cada nodo(que representa un trayecto), se le asociará un parámetro que
corresponde con el instante en el que el autobús debe partir. Para los n trayectos de ida
llamaremos a este parámetro Ai con i=1...n y para los n trayectos de vuelta los valores
Bj con j=1...n , correspondientes al instante temporal en el que el autobús debe partir.
Además existirán dos nodos auxiliares llamados nodo salida o nodo s y nodo entrada o
nodo e que representan la entrada y la salida de los vehículos en un deposito central,
donde todos los vehículos deben comenzar y acabar su actividad.
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
19
Así los nodos de nuestro problema y sus respectivos parámetros ai ,bj serán:
Figura 3.1 Nodos del problema
Los arcos que unen dos nodos representan a los autobuses que van a realizar en
primer lugar el trayecto del autobús desde el que sale el arco y en segundo lugar el
trayecto del nodo a el que llega el arco. Por ejemplo, el arco que va del nodo 3 al 4
representa a los autobuses que van a realizar el trayecto 3, y a continuación el trayecto
4.
Vuelta bj
Ida aj
S
E
a1
a2
an
b1
b2
bn
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
20
Para ello se le asociarán a cada arco un número de variables binarias que coincide
con el número de autobuses máximo disponible en la flota .Cada una de esas variables
podrá tomar valor 1 si dicho autobús ha sido asignado a ese arco o valor 0 si dicho
autobús no ha sido asignado a ese arco. Estas variables tomarán la siguiente notación:
• xt
ij para variables asociadas a arcos que van desde un trayecto de ida a un
trayecto de vuelta.
• xt
ji variables asociadas a arcos que van desde un trayecto de vuelta a un trayecto
e ida
• xt
ii para variables asociadas a arcos que van desde un trayecto de ida a otro
trayecto de ida
• xt
jj para variables asociadas a arcos que van desde un trayecto de vuelta a otro
trayecto de vuelta.
• xt
si para variables asociadas a un autobús que realizara por primera vez el
trayecto de ida i
• xt
sj para variables asociadas a un autobús que realizara por primera vez el
trayecto de vuelta j.
• xt
ie para variables asociadas a un autobús cuyo ultimo trayecto asociado es el
trayecto i.
• xt
je para variables asociadas a un autobús cuyo ultimo trayecto asociado es el
trayecto j.
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
21
El superíndice t esta asociado al autobús de la flota que estemos usando y los
subíndices i,j están asociados a los nodos origen y/o destino que están siendo unidos por
el arco. Cuando un autobús es asignado a un arco que une dos nodos, se interpreta como
que dicho autobús realiza en primer lugar el viaje del nodo del que sale el arco, y en
segundo lugar el viaje correspondiente al nodo al que llega el arco. En el ejemplo
grafico, el autobús II es asignado en primer lugar al trayecto de ida 3, y a continuación
al trayecto de vuelta 5. Ver figura:
Figura 3.2 Arcos y variables
En el siguiente grafo se representan todos los tipos de variables del problema
asociados a los diferentes tipos de arcos existentes. Cada una de las variables
representadas, por ejemplo tijx representa todas las variables correspondientes a
conjugar los índices i , j , t de 1 a n que representarían la unión de cada trayecto i con
cada trayecto j para cada autobús t.
Es decir cada variable representada del tipo tijx representa 3n variables y cada
variable representada del tipo tsix representa 3n variables, donde n es el número de
viajes de ida, igual al número de viajes de vuelta.
a3 b515,3==
==x IIt
ji
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
22
Figura 3.3 Tipología de arcos
A cada arco se le asociará un parámetro que representa el tiempo necesario para
que un autobús asignado a dicho arco realice el trayecto correspondiente al nodo del que
sale el arco y llegue al lugar desde donde va a salir el segundo viaje. Este parámetro se
llamara ijc para arcos que vayan desde un trayecto de ida a un trayecto de vuelta, jic
para un arco que vaya desde un nodo de vuelta a un nodo ida, iic para un arco que vaya
desde un nodo de ida a otro nodo de ida y jjc para un arco que vaya desde un nodo de
vuelta a otro de vuelta. En el caso de arcos que vayan desde un nodo de ida a un nodo
de vuelta este coste temporal es el tiempo necesario para realizar el trayecto de ida. En
el caso de arcos que vayan desde un nodo de vuelta a otro de ida, este coste temporal
será igual al tiempo necesario para realizar el trayecto de vuelta. En el caso de arcos que
Vuelta bj
Ida aj
Xijt
Xiit
Xjit
Xjjt
S
E
Xsi
Xsj
Xie
Xje
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
23
vayan desde un nodo de ida a otro de ida el coste temporal será el tiempo en realizar el
trayecto de ida mas el tiempo necesario para volver con el autobús vacío al origen desde
donde partió el autobús. Y por ultimo, en los arcos que vayan desde un nodo de vuelta
hasta otro nodo de vuelta el coste temporal asociado dicho arco será igual al tiempo
necesario para realizar dicho trayecto de vuelta mas el tiempo necesario para volver en
vacío al origen desde donde se realizo el trayecto de vuelta. Así se representa el
problema en cuestión con el siguiente grafo donde se ha representado un arco genérico a
cada tipo de arco que aparece en el problema, y se le asocia a cada tipo de arc o el
parámetro temporal correspondiente.
Figura 3.4 Costes asociados a arcos
Vuelta bj
Ida aj
Cij
Cii
Cij
Cjj
0
0
0
0
S
E
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
24
Como nota aclaratoria y a modo de resumen, decir que cada arco representado simboliza
todo el conjunto de arcos del mismo tipo. Por ejemplo el arco representado en el dibujo
con coste asociado ijt representa todos los arcos que van desde un trayecto de ida a un
trayecto de vuelta( cada uno de ellos tendrá un ijt diferente). Existen nn×
combinaciones posibles de arcos que unan un nodo de ida y un nodo de vuelta. Cada
uno de estos arcos llevara asociadas tantas variables como autobuses disponibles de ser
asignados haya el la flota, es decir n variables, ya que t= 1....n .
3.1.1.2.- Formulación del problema:
El problema anteriormente enunciado se puede modelar como un problema de
programación lineal entera, en el cual una función objetivo se tratará de minimizar
atendiendo a una serie de restricciones que deberán cumplir las variables del problema.
La función objetivo representa los costes en los que se incurra al fletar un nuevo
autobús y las restricciones representan las condiciones que deben cumplir los autobuses
para que el problema y la solución encontrada tengan sentido.
El problema matemático se representa de la siguiente manera:
Min xft
s.a. bAx ≤
{ }1,0=x
Donde:
x son las variables del problema ordenadas en un vector columna
A es la matriz de coeficientes que multiplica a las variables en las restricciones
b es el vector columna correspondiente al termino independiente de cada
restricción
tf es el vector fila de costes que multiplica a cada variable.
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
25
A continuación se explicará el modelo matemático. En primer lugar explicarán
las restricciones que deben de cumplir las variables del modelo y en segundo lugar
describiré la morfología de la función objeto a minimizar.
3.1.1.2.a Restricciones del problema:
Voy a agrupar las restricciones del problema en 5 grupos diferentes que a
continuación se explicarán detalladamente.
-Grupo de ecuaciones 1: Todos los trayectos deben cubrirse
Como se expresa en el enunciado del problema, todos los trayectos deben
cubrirse con un autobús. Esto es equivalente a decir que de todos las variables asociadas
a todos los arcos que entran en un nodo, al menos una y no mas de una debe ser igual a
1, significando ello que se le ha asignado un autobús a dicho nodo. Esto se expresa
matemáticamente como sumatorio de todas las variables de todos los arcos que entran a
un nodo igual a 1.
Para los nodos correspondientes a trayectos de ida, todos los arcos que entran
serán los arcos provenientes de trayectos de vuelta, los arcos provenientes de otros
trayectos de ida y los arcos provenientes del nodo de salida. Esto queda formulado de la
siguiente manera :
∑ ∑∑∑∑= === =
∀=++n
t
n
t
t
si
n
j
t
ji
n
t
n
i
t
iiixxx
1 111 1;1
Para los nodos correspondientes a trayectos de vuelta, todos los arcos que entran
serán los arcos provenientes de trayectos de ida, los arcos provenientes de otros
trayectos de vuelta y los arcos provenientes del nodo de salida. Esto queda formulado de
la siguiente manera :
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
26
∑ ∑∑∑∑= === =
∀=++n
t
n
t
t
si
n
i
t
ij
n
t
n
j
t
jjjxxx
1 111 1;1
El valor 1 simboliza que solo un autobús puede hacer el viaje y signo igual
implica que todos los trayectos deben asignarse a un autobús.
Grupo de ecuaciones 2.- Balance de nodos
Cuando un autobús entra en un nodo, o dicho con otras palabras, se le asigna
dicho autobús a dicho nodo, este puede hacer dos cosas:
o Cuando termine dicho trayecto realizar otro trayecto, lo que seria equivalente
a que la variable relativa a dicho autobús del arco que sale de ese nodo al
nuevo nodo tome valor 1.
o El autobús no se asigne a ningún otro trayecto, lo que es equivalente a dar
valor 1 a la variable relativa a dicho autobús del arco que une dicho nodo con
el nodo de entrada. De aquí se deduce que todo el flujo que llega a un nodo
(en nuestro problema flujo =1), debe ser igual al flujo que sale de dicho
nodo.
Matemáticamente para los nodos de ida:
tixxxxxx t
ie
n
j
t
ji
n
i
t
ii
t
si
n
j
t
ji
n
i
t
ii ∀∀++=++ ∑∑∑∑====
,';1
'1
'1
'1
'
Y para los nodos de vuelta:
tjxxxxxx t
je
n
i
t
ij
n
j
t
jj
t
sj
n
i
t
ij
n
j
t
jj ∀∀++=++ ∑∑∑∑====
,';1
'1
'!
'1
'
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
27
Grupo de ecuaciones 3.- Autobuses de salida:
Cada subíndice t para t=1...n de los autobuses disponibles está relacionado con
un autobús. Cada autobús de la flota puede o bien no salir, o bien salir, lo que es
evidente es que el valor de todas las variables asociadas a el de los arcos que unen el
nodo de salida con los diferentes trayectos debe ser menor o igual que uno. Esto se
expresa con la siguiente ecuación:
tn
j
t
sj
n
i
t
si xx ∀≤+∑∑==
;11!
Grupo de ecuaciones 4.- Balance de Autobuses Total:
El numero de autobuses que se vaya a utilizar para cubrir los trayectos
demandados deben regresar una vez terminada la jornada. Es decir:
tn
j
t
je
n
i
t
ie
n
j
t
sj
n
i
t
si xxxx ∀+=+ ∑∑∑∑====
;111!
Grupo de ecuaciones 5:Restricciones temporales
Cuando un autobús es asociado a un arco que une dos trayectos, debe tener
tiempo suficiente tras realizar el primero de ellos para realizar el segundo. Es decir la
hora de salida del primer trayecto mas el tiempo empleado en realizar el trayecto e ir al
lugar desde donde debe realizar el segundo debe ser menor a la hora de partida del
segundo trayecto. Para un primer trayecto de ida y un segundo trayecto de vuelta, esto
se expresa como:
jibxca j
n
t
t
ijiji∀∀≤+∑
=
,;1
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
28
En esta ecuación matemática puede surgir el problema de que la hora de partida
del primer trayecto a realizar sea menor que la hora de partida del segundo trayecto a
realizar, en cuyo caso la anterior restricción sería incompatible. Para paliar dicho
problema se realizar el siguiente análisis(realizado para un arco que va desde un
trayecto de ida a otro trayecto de vuelta):
En el caso normal en el que la hora del trayecto de vueltas sea mayor que la hora
del trayecto de ida, las variables asociadas al arco deben cumplir:
jibxca j
n
t
t
ijiji ∀∀≤+∑=
,;1
Si la hora de salida del trayecto de vuelta es mayor que la hora del trayecto de
ida la ecuación anterior seria incompatible, pero todas las variables deberían ser iguales
a 0, luego en este caso las variables asociadas al arco deben cumplir:
;,;01
jin
t
t
ijx ∀=∑=
Introducimos entonces el parámetro ijδ binario que tomara los siguientes
valores:
0=ijδ si ji ba ≥ , caso compatible
1=ijδ si ji ba < , caso incompatible
Luego como se quiere imponer que :
• Si ji ba ≥ ⇒ 0=ijδ ⇒ jibxca j
n
t
t
ijiji ∀∀≤+∑=
,;1
• Si ji ba < ⇒ 1=ijδ ⇒ ;,;01
jin
t
t
ijx ∀=∑=
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
29
Esto se consigue modelando de la siguiente manera:
jiKijj
n
t
t
ijiji bxca ∀∀−+≤+∑=
,);1(1
δ
;,;1
jiij
n
t
t
ijx ∀≤∑=
δ
Esto realizado para los cuatro grupos de restricciones temporales queda:
jiK ijj
n
t
t
ijiji bxca ∀∀−+≤+∑=
,);1(1
δ
jiK jii
n
t
t
jijij axcb ∀∀−+≤+∑=
,);1(1
δ
iiKiii
n
t
t
iiiii axca ∀∀−+≤+∑=
,);1(1
δ
jjK jjj
n
t
t
jjjjj bxcb ∀∀−+≤+∑=
,);1(1
δ
3.1.1.2.b Función objetivo:
La función objetivo representa los costes en los que se incurre al fletar un nuevo
autobús. Estos en nuestro modelo serán de dos tipos:
-Costes fijos al fletar un nuevo autobús:
Obviamente al utilizar un nuevo autobús para cubrir todos los trayectos del
problema se incurren en una serie de gastos tales como sueldo de un conductor,
disponibilidad de un nuevo coche, puesta a punto del autobús,etc. Si al promedio de
estos costes se le asigna el valor A para cada nuevo coche fletado el gasto total será:
⎟⎠
⎞⎜⎝
⎛+⋅ ∑∑∑∑
= == =
n
t
n
i
t
si
n
t
n
i
t
si xxA1 11 1
;,;1
jiij
n
t
t
ijx ∀≤∑=
δ
;,;1
jiji
n
t
t
jix ∀≤∑=
δ
;,';'1
' iiii
n
t
t
iix ∀≤∑=
δ
;,';'
1'
jjjj
n
t
t
jjx ∀≤∑=
δ
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
30
-Costes variables asociados a la conducción del autobús:
El coste variable asociado a la gasolina consumida, mantenimiento y
reparaciones, etc. será proporcional a la distancia recorrida por los autobuses. Ya que en
nuestro modelo los parámetros xyc representan el tiempo que se emplea al realizar el
trayecto que va desde x hasta y, y en nuestro modelo se ha supuesto que que los
autobuses viajan a velocidad constante, el numero de Km. realizado por los autobuses
será proporcional a la multiplicación de dichos costes temporales por las variables de
asignación del problema. Así quedaría del siguiente modo:
⎟⎟⎠
⎞⎜⎜⎝
⎛+++⋅ ∑∑∑∑∑∑∑∑∑∑∑∑
= = == = == = == = =
n
t
n
j
n
i
t
jiji
n
t
n
i
n
j
t
ijij
n
t
n
j
n
j
t
jjjj
n
t
n
i
n
i
t
iiii xcxcxcxcB1 1 11 1 11 1 1'
''1 1 1'
''
Si definimos K como la relación existente entre A y B la función objetivo nos quedaría
del siguiente modo:
⎟⎠
⎞⎜⎝
⎛+⋅++++ ∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑
= == == = == = == = == = =
n
t
n
i
t
si
n
t
n
i
t
si
n
t
n
j
n
i
t
jiji
n
t
n
i
n
j
t
ijij
n
t
n
j
n
j
t
jjjj
n
t
n
i
n
i
t
iiii xxxcxcxcxc K1 11 11 1 11 1 11 1 1'
''1 1 1'
''
siendo K un coeficiente que representa la relación entre el coste de utilizar un nuevo
autobús frente al coste por kilómetro recorrido por un autobús. Obviamente este
dependerá de las condiciones donde se desee aplicar el algoritmo pero por norma
general K>>1 ya que los costes derivados de emplear un vehículo mas para realizar la
asignación siempre serán muy superiores a los costes de conducción por realizar un
trayecto.
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
31
3.1.1.2.c Modelo Completo
El modelo completo quedaría de la siguiente manera:
Minimizar:
⎟⎠
⎞⎜⎝
⎛+⋅++++ ∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑
= == == = == = == = == = =
n
t
n
i
t
si
n
t
n
i
t
si
n
t
n
j
n
i
t
jiji
n
t
n
i
n
j
t
ijij
n
t
n
j
n
j
t
jjjj
n
t
n
i
n
i
t
iiii xxxcxcxcxc K1 11 11 1 11 1 11 1 1'
''1 1 1'
''
Sujeto a:
∑ ∑∑∑∑= === =
∀=++n
t
n
t
t
si
n
j
t
ji
n
t
n
i
t
iiixxx
1 111 1
;1
∑ ∑∑∑∑= === =
∀=++n
t
n
t
t
si
n
i
t
ij
n
t
n
j
t
jjjxxx
1 111 1
;1
tixxxxxx t
ie
n
j
t
ji
n
i
t
ii
t
si
n
j
t
ji
n
i
t
ii∀∀++=++ ∑∑∑∑
====
,';1
'1
'1
'1
'
tjxxxxxx t
je
n
i
t
ij
n
j
t
jj
t
sj
n
i
t
ij
n
j
t
jj∀∀++=++ ∑∑∑∑
====
,';1
'1
'!
'1
'
tn
j
t
sj
n
i
t
si xx ∀≤+∑∑==
;11!
tn
j
t
je
n
i
t
ie
n
j
t
sj
n
i
t
si xxxx ∀+=+ ∑∑∑∑====
;111!
jiKijj
n
t
t
ijiji bxca ∀∀−+≤+∑=
,);1(1
δ
;,;1
jiij
n
t
t
ijx ∀≤∑=
δ
donde 0=ijδ si ji ba ≥
1=ijδ si ji ba <
iiKiii
n
t
t
iiiii axca ∀∀−+≤+∑=
,);1(1
δ
;,';'1
' iiii
n
t
t
iix ∀≤∑=
δ
donde 0' =iiδ si ii aa ≥'
1' =iiδ si ii aa <'
con { }1,0=x
jiKjii
n
t
t
jijij axcb ∀∀−+≤+∑=
,);1(1
δ
;,;1
jiji
n
t
t
jix ∀≤∑=
δ
donde 0=jiδ si ij ab ≥
1=jiδ si ij ab <
jjKjjj
n
t
t
jjjjj bxcb ∀∀−+≤+∑=
,);1(1
δ
;,';'
1'
jjjj
n
t
t
jjx ∀≤∑=
δ
donde 0' =jjδ si jj bb ≥'
1' =jjδ si jj bb <'
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
32
3.2.2.- Implementación
Por la morfología lineal del problema y la topología entera de las variables, se ha
elegido para la resolución del problema un algoritmo de programación lineal entera
basado en el algoritmo Simplex para programación lineal continua pero con una serie de
modificaciones que más adelante se explicarán. Para ello se ha utilizado la herramienta
informática de programación y calculo matemático Matlab. En este apartado veremos en
primer lugar la morfología de problema en formato matricial, la implementación del
mismo en Matlab y el algoritmo de resolución usado para resolver el problema y su
programación en Matlab.
3.2.2.1 Morfología del problema en formato matricial
Para implementar el problema en matlab es necesario en primer lugar
introducirlo en formato matricial y en segundo lugar ejecutarlo. El formato matricial
tendrá la siguiente forma:
Min xft
s.a. bAx ≤
{ }1,0=x
Donde:
x son las variables del problema ordenadas en n vector columna
A es la matriz de coeficientes que multiplica a las variables en las restricciones
b es el vector columna correspondiente al termino independiente de cada
restricción
tf es el vector fila de costes que multiplica a cada variable.
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
33
Para resolverlo en Matlab hay que pasar el problema al formato estándar siguiente:
Min xft
s.a. bAx ≤
eqeq bxA =
{ }1,0=x
Donde:
x son las variables del problema ordenadas en n vector columna.
A es la matriz de coeficientes que multiplica a las variables en las restricciones
que se cumple con signo de menor o igual.
b es el vector columna correspondiente al termino independiente de cada
restricciones que se cumplen con signo de menor o igual.
eqA es la matriz de coeficientes que multiplica a las variables en las restricciones
que se cumple con signo de menor o igual.
eqb es el vector columna correspondiente al termino independiente de cada
restricciones que se cumplen con signo de menor o igual.
tf es el vector fila de costes que multiplica a cada variable.
Habrá que ordenar pues las restricciones por el tipo de relación que cumplan.
Definimos por simplicidad [ ]eqAAA ;= y [ ]eqbbb ;= , es decir la matriz A y vector pero
ordenados poniendo en primer lugar las restricciones que se cumplen con signo de
menor o igual y a continuación las restricciones que se cumplen con signo de igualdad.
Según esta nueva ordenación de las variables acorde con el formato matricial el
problema nos quedaría de la siguiente manera:
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
34
Minimizar:
⎟⎠
⎞⎜⎝
⎛+⋅++++ ∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑
= == == = == = == = == = =
n
t
n
i
t
si
n
t
n
i
t
si
n
t
n
j
n
i
t
jiji
n
t
n
i
n
j
t
ijij
n
t
n
j
n
j
t
jjjj
n
t
n
i
n
i
t
iiii xxxcxcxcxc K1 11 11 1 11 1 11 1 1'
''1 1 1'
''
Sujeto a:
(restricciones que se cumplen con signo de igualdad)
∑ ∑∑∑∑= === =
∀=++n
t
n
t
t
si
n
j
t
ji
n
t
n
i
t
iiixxx
1 111 1;1
∑ ∑∑∑∑= === =
∀=++n
t
n
t
t
si
n
i
t
ij
n
t
n
j
t
jjjxxx
1 111 1;1
tixxxxxx t
ie
n
j
t
ji
n
i
t
ii
t
si
n
j
t
ji
n
i
t
ii∀∀=−−−++ ∑∑∑∑
====
,';01
'1
'1
'1
'
tjxxxxxx t
je
n
i
t
ij
n
j
t
jj
t
sj
n
i
t
ij
n
j
t
jj∀∀=−−−++ ∑∑∑∑
====
,';01
'1
'!
'1
'
tn
j
t
je
n
i
t
ie
n
j
t
sj
n
i
t
si xxxx ∀=−−+ ∑∑∑∑====
;0111!
(restricciones que se cumplen con signo de menor o igual)
tn
j
t
sj
n
i
t
si xx ∀≤+∑∑==
;11!
jiKijij
n
t
t
ijij abxc ∀∀−+−≤∑=
,);1(1
δ ;
jiK jiji
n
t
t
jiji baxc ∀∀−+−≤∑=
,);1(1
δ ;
iiK iiii
n
t
t
iiii aaxc ∀∀−+−≤∑=
,);1(1
δ ;
jjKjjjj
n
t
t
jjjj bbxc ∀∀−+−≤∑=
,);1(1
δ ;
con { }1,0=x
;,;1
jiij
n
t
t
ijx ∀≤∑=
δ
;,;1
jiji
n
t
t
jix ∀≤∑=
δ
;,';'1
' iiii
n
t
t
iix ∀≤∑=
δ
;,';'1
' jjjj
n
t
t
jjx ∀≤∑=
δ
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
35
Pasemos a continuación a definir y explicar cada uno de los términos del modelo
matricial en profundidad.
-Vector x de variables:
Como ya se ha explicado anteriormente, las variables del problema son :
xxxxxxxx t
je
t
ie
t
sj
t
si
t
jj
t
ij
t
ji
t
ii,,,,,,,
Las cuatro primeras supermatrices de variables tendrán un total de nnn ××
componentes o variables. Para nuestra implementación estas se ordenaran en forma de
vector columna de 3n según la disposición que se indica en la siguiente figura:
[ ]nnnnnnnn
t
iixxxxxxxxx ;..........;,.....,,....., 22
111
;121
11
112
111=
[ ]nnnnnnnn
t
jixxxxxxxxx ;..........;,.....,,....., 22
111
;121
11
112
111=
[ ]nnnnnnnn
t
ijxxxxxxxxx ;..........;,.....,,....., 22
111
;121
11
112
111=
[ ]nnnnnnnn
t
ijxxxxxxxxx ;..........;,.....,,....., 22
111
;121
11
112
111=
De manera que para cada t los 2n términos correspondientes a las tijx se
ordenarían como las filas de la matriz cuadrada que formarían introducidas por filas en
un vector de 2n componentes. Esto hecho n veces (t=1..n) constituiría el vector de las
incógnitas del problema.
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
36
Las cuatro segundas supermatrices tendrán un total de 2n componentes o
variables que las ordenaremos del siguiente modo:
[ ]nsnsssnss
t
sixxxxxxx ;.....,.....,,....., 2
221
112
11=
[ ]nsnsssnss
t
sjxxxxxxx ;.....,.....,,....., 2
221
112
11=
[ ]nneeeneee
t
iexxxxxxx ;.....,.....,,....., 2
221
112
11=
[ ]nneeeneee
t
jexxxxxxx ;.....,.....,,....., 2
221
112
11=
El vector de variables del problema estaría constituido por los vectores
xxxxxxxx t
je
t
ie
t
sj
t
si
t
jj
t
ij
t
ji
t
ii ,,,,,,, , en ese orden constituyendo el vector de
4 3n +4 2n componentes que a continuación se representa:
[ ]xxxxxxxxx t
je
t
ie
t
sj
t
si
t
jj
t
ij
t
ji
t
ii,,,,,,,=
-Vector tf de costes:
Como la función objetivo tiene la forma
⎟⎠
⎞⎜⎝
⎛+⋅++++ ∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑
= == == = == = == = == = =
n
t
n
i
t
si
n
t
n
i
t
si
n
t
n
j
n
i
t
jiji
n
t
n
i
n
j
t
ijij
n
t
n
j
n
j
t
jjjj
n
t
n
i
n
i
t
iiii xxxcxcxcxc K1 11 11 1 11 1 11 1 1'
''1 1 1'
''
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
37
el vector tf será
[ ]0,0,,,,,, kkccccf jjijjiiit =
donde cada uno de los xxc representa un vector fila de 3n componentes
correspondientes a los costes temporales de realizar un viaje (hay que tener en cuenta
que como máximo hay solo 2n componentes diferentes ya que el coste de un arco es
independiente de t) y cada k representa a un vector de 2n componentes iguales a
k donde k es el coste de utilizar un autobús mas para realizar la asignación.
-Vector b:
El vector b esta compuesto por los términos independientes de las restricciones
del problema. Estos en la forma matricial propuesta corresponden a
Para b
[ ])1(),1(),1(),1(,1 δδδδ jjjjiiiijijiijij KKKK bbaabaabb −+−−+−−+−−+−=
y para eqb
[ ]0,0,0,0,1=eqb
teniendo finalmente
[ ]eqbbb ;=
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
38
-Matriz A de coeficientes:
La matriz A tendrá tantas filas como columnas existan y tantas columnas como
incógnitas tenga el problema, es decir 23 44 nn + filas y nn 410 2 + columnas.
Para introducir la matriz A en la computadora, es preciso primero realizar un
análisis de la morfología de las restricciones. A continuación se hará un análisis de
dicha morfología.
Para empezar dicho análisis veamos que supone realizar un sumatorio en i a un
vector xt
ij para unos t y j dados (t=τ ;j=1). Realizar este sumatorio se expresa como:
}{ ;...1;12111
1xxxx n
t
i
t
ijjt ττττ +++===∑
=
Esto es equivalente a realizar un producto vectorial entre un vector columna de
componentes 1 ó 0 y el vector fila x , teniendo en cuenta que los valores 1 coincidan con
las componentes del vector x que queremos sumar. Así nos quedaría el sumatorio de la
siguiente manera:
}{ { }( )[ ] Xnvecesjtn
i
t
ijx ⋅===∑=
0,.......0,)0,...,0,1(),0,...,0,1(,....,0,0,........0,...0,01;1
τ
Si realizamos las siguientes definiciones:
( ) n×= 10,...,0,00 ;
( ) ;0,...,0,00 21 n×=
( ) n×= 10,...,0,11 ;
( ) ;1,...,1,11 21 n×=
j=1
t=1 t=τ
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
39
El sumatorio anterior nos quedaría de la siguiente forma:
}{ [ ] Xjtn
i
t
ijx ⋅===∑=
0,........,1.........,,0,01;1
τ con 1 en la posición τ -ésima.
Estando colocado el elemento 1 en el lugar τ=t .
Si realizamos ahora el mismo sumatorio para una j genérica tendríamos:
-Sumatorio en i para una t y una j dada:
}{ ;...; 211
xxxx n
n
i
t
ij jt τ
γ
τ
γ
τ
γγτ +++===∑
=
Realizando la siguiente definición:
( )0,.....1,.....0,0,0=γ , con la componente 1 en el lugar γ -ésimo.
);,.......,,,( γγγγγ =
nos quedaría que:
}{ Xjtn
i
t
ijx ⋅⎥⎦⎤
⎢⎣⎡===∑
=
0,........,.........,,0,0;1
γγτ con γ en la posición τ -ésima.
Luego si una restricción fuese un sumatorio un i de todas las variables para un t
dado y un j dado, la fila de la matriz A correspondiente a dicha restricción tomaría la
forma del primer vector de la descomposición anterior. Así para conocer la morfología
de la matriz A, en primer lugar realizaremos el análisis anterior para todos los tipos de
sumatorios que nos vayamos a encontrar en las restricciones y posteriormente
pasaremos todas las restricciones a dicha forma, definiendo así la matriz.
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
40
Nota: Todos las operaciones y sumatorios se van a realizar para xt
ij, si bien son
igualmente aplicables a los demás subconjuntos de variables xxx t
jj
t
ji
t
ii,, . Para los
grupos de variables xxxx t
je
t
ie
t
sj
t
si,,, se hará otro análisis análogo a continuación de este
, ya que al ser vectores de solo 2n componentes, no es valido el análisis de xt
ij.
-Sumatorio en t y en i para una j dada:
}{ ;...........1
22
1
11
2
1
11
∑∑= =
++++++++==n
t
n
nnn
n
i
t
ij xxxxxxx jγγγγγγ
γ
Esto es equivalente a:
}{∑∑= =
⋅⎥⎦⎤
⎢⎣⎡==
n
t
n
i
t
ijXjx
1 1
,.......,,,........., γγγγγ , es decir n veces el vector
);,.......,,,( γγγγγ =
-Sumatorio en j para unos i y t dados:
Análogamente al análisis realizado para el sumatorio en i, realizaremos primero
el sumatorio para i = 1.
}{ ;...1; 112111
xxxx n
n
j
t
ij it ττττ +++===∑=
}{ ( )[ ] Xjtn
i
t
ijx ⋅===∑=
0,.......0,0,.......0,0,0),1,...,1,1(,....,0,0,........0,...0,01;1
τ
j=1
t=1 t=τ
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
41
Definiendo:
)1,....1,1(1 = vector de n componentes igual a 1.
)0,....,0,0,0,1(1 =
}{ [ ] Xitn
j
t
ijx ⋅===∑=
0,........,1.........,,0,01;1
τ con el elemento 1 en la posición t=τ
y para un i=φ genérico :
definiendo
)0,..1,....,0,0(=φ con el elemento 1 en la posición φ -ésima .
nos quedaría
}{ [ ] Xitn
j
t
ijx ⋅===∑=
0,........,.........,,0,0;1
φφτ con el elemento φ en la posición
τ -ésima.
-Sumatorio en t y en j para una i dada:
}{ ;...........1
22
1
11
2
1
11
∑∑= =
++++++++==n
t
n
nnn
n
j
t
ij xxxxxxx iφφφφφφ
φ
Esto es equivalente a:
}{ [ ]∑∑= =
⋅==n
t
n
j
t
ij Xix! 1
,...,,, φφφφφ , es decir n veces el vector )0,..1,....,0,0(=φ
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
42
-Sumatorio en t para los grupos de variables xxxx t
je
t
ie
t
sj
t
si,,,
Realizamos el análisis para xt
si siendo valido para los otros tres grupos de variables.
{ } [ ] Xin
t
t
six ⋅==∑=
γγγγ ,...,,1
con γ n veces.
A continuación se expondrá un cuadro resumen en el se encuentran todos los
sumatorios que se dan en el problema .
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
43
Sumatorio Descomposición Notación Matricial
}{ γτ ==∑=
jtn
i
t
ijx ;1
;...21 xxx n
τ
γ
τ
γ
τ
γ+++
[ ] X⋅0,........,.........,,0,0 γ
con γ en posición
esima−τ
}{∑∑= =
=n
t
n
i
t
ij jx1 1
γ xxxxx n
nn γγγγγ+++++++ ....... 22
1
1
2
1
1 [ ] X⋅γγγγ ,.......,,,.........,
}{ φτ ==∑=
itn
j
t
ijx ;1
xxx n
τ
φ
τ
φ
τ
φ+++ ...21
[ ] X⋅0,........,.........,,0,0 φ
con φ en posición
esima−τ
}{∑∑= =
=n
t
n
j
t
ijix
1 1φ xxxxx n
nn φφφφφ+++++++ ...... 22
1
1
2
1
1 [ ] X⋅φφφφ ,...,,,
{ }γ=∑=
in
t
t
six1
xxxx n
ssss γγγγ++++ ...321 [ ] X⋅γγγ ,...,,
{ }τ=∑=
tn
i
t
six1
xxxx snsss
ττττ ++++ ...321
[ ] X⋅0.,,1,..,0,0 con 1 en
posición esima−τ
{ }γφ ==∑=
jin
t
t
ijx ;1
xxxx n
φγφγφγφγ++++ ...321 X⋅⎥⎦
⎤⎢⎣⎡
φγφγφγ τττ ,...,,
Tabla 3.1 Sumatorios en formato matricial
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
44
Donde definimos :
Elemento Definición
γ ( ) xn10,.....1,.....0,0,0=γ , con 1 en la pos γ -ésimo.
γ 21),.......,,,(
xnγγγγγ =
1 n×= 1)1,....1,1(1
φ 21)0,..1,....,0,0( xn=φ con 1 en la pos. φ -ésima.
φγτ )0,...,,....,0,0( γτ φγ = con γ en la pos. φ -ésima.
Tabla 3.2 Definiciones
Ya hemos analizado como quedarían todos los tipos de sumatorios
descompuestos en un vector fila que multiplica al vector columna de variables X . A
partir de aquí es trivial formar la matriz A a partir de las restricciones del problema.
Solo hay que introducir los distintos sumatorios en la forma descompuesta estudiada y
sumarlos entre si.
-Morfología de las restricciones completas
Tras todo lo visto veamos como quedarían las distintas ecuaciones. En primer
lugar se vera un ejemplo siendo el razonamiento de las demás análogo. Posteriormente
se escribirán todas las restricciones en el orden establecido.
Como ejemplo veamos como quedaría el primer grupo de restricciones:
∑ ∑∑∑∑= === =
∀=++n
t
n
t
t
si
n
j
t
ji
n
t
n
i
t
ii ixxx1 111 1
;1
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
45
seria equivalente a
[ ]γγγγ ,.......,,,........., xt
ii+ [ ]γγγγ ,.......,,,........., xt
ji+ [ ]γγγ ,...,, xt
si=1 n...1=∀γ
Ya que
[ ]',,,,,,, xxxxxxxxx t
je
t
ie
t
sj
t
si
t
jj
t
ij
t
ji
t
ii= ,
si definimos
γ = [ ]γγγγ ,.......,,,........., , con γ n veces
0 = [ ]0,.......,0,,.........0,0 , con 0 n veces
φ)
= [ ]φφφφ ,...,...,........., , con φ n veces
el primer grupo de restricciones se podría representar de la siguiente manera:
[ γ , γ , 0 , 0 ,γ , 0 , 0 , 0 ] X⋅ = 1 n...1=∀γ
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
46
Realicemos razonamientos análogos para los otros grupos de restricciones.
Así definimos en primer lugar las siguientes elementos:
Elemento Sumatorio Definición
γ }{∑∑= =
=n
t
n
i
t
ij jx1 1
γ γ = [ ] 31,......,,,........., xnγγγγ , con γ n veces
0 - 0 = [ ] 310,.......,0,,.........0,0 xn , con 0 n veces
τγ }{ γτ ==∑=
jtn
i
t
ijx ;1
τγ = [ ] 310,......,,........,0,0 xnγ , con γ en pos.τ -ésima
φ)
}{∑∑= =
=n
t
n
j
t
ijix
1 1
φ φ)
= [ ]31
,...,....,.........,xn
φφφφ , con φ n veces
τφ)
}{ φτ ==∑=
itn
j
t
ijx ;1
τφ)
= [ ]31
0,...,.....,.........0,0xn
φ , con φ en pos.τ -ésima
ϕγτ) { }γφ ==∑=
jin
t
t
ijx ;1
τφ)
= [ ]φγφγφγφγ ττττ ...,...,, , con φγτ n veces
τγ }{ γτ == itxt
si; τγ = [ ] 210,...,.....,.........0,0 xnγ , con γ en pos.τ -ésima
Tabla 3.3 Definiciones de elementos
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
47
Y en la siguiente tabla se expresaran los diferentes grupos de restricciones, en
primer lugar para las restricciones que se cumplen con signo de igualdad,
Restricciones con signo de igualdad Aeq*x (1er Termino restr.)
∑ ∑∑∑∑= === =
∀=++n
t
n
t
t
si
n
j
t
ji
n
t
n
i
t
iiixxx
1 111 1
;1 [ γ , γ , 0 , 0 ,γ , 0 , 0 , 0 ] X⋅
γ∀
∑ ∑∑∑∑= === =
∀=++n
t
n
t
t
sj
n
i
t
ij
n
t
n
j
t
jjjxxx
1 111 1
;1 [ 0 , 0 , γ , γ , 0 ,γ , 0 , 0 ] X⋅
γ∀
tixxxxxx t
ie
n
j
t
ji
n
i
t
ii
t
si
n
j
t
ji
n
i
t
ii ∀∀=−−−++ ∑∑∑∑====
,';01
'1
'1
'1
'
[ ττ φγ ˆ− , τγ , τφ̂− , 0 , τγ , 0 , τγ , 0 ]X
γ∀ , τ∀
tjxxxxxx t
je
n
i
t
ij
n
j
t
jj
t
sj
n
i
t
ij
n
j
t
jj ∀∀=−−−++ ∑∑∑∑====
,';01
'1
'!
'1
'
[ 0 , τφ̂− , τγ , ττ φγ ˆ− , 0 , τγ , 0 , τγ ]X
γ∀ , τ∀
tn
j
t
je
n
i
t
ie
n
j
t
sj
n
i
t
si xxxx ∀=−−+ ∑∑∑∑====
;0111!
[ 0 , 0 , 0 , 0 ,γ ,γ ,-γ ,-γ ] X⋅
γ∀
Tabla 3.4 Restricciones con signo de igualdad
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
48
Y en segundo lugar para las restricciones que se cumplen con signos de menor o igual
Restricciones con signo de menor o igual A*x (1er Termino restr.)
tn
j
t
sj
n
i
t
si xx ∀≤+∑∑==
;11!
[ 0 , 0 , 0 , 0 ,γ ,γ , 0 , 0 ] X⋅ ; γ∀
jiK ijij
n
t
t
ijij abxc ∀∀−+−≤∑=
,);1(1
δ [ ] Xcij ⋅⋅ 0,0,0,0,0,,0,0))))
ϕγτ ; φγ ,∀
jiKjiji
n
t
t
jiji baxc ∀∀−+−≤∑=
,);1(1
δ [ ] Xc ji ⋅⋅ 0,0,0,0,0,0,,0))))
ϕγτ ; φγ ,∀
jjKjjjj
n
t
t
jjjj bbxc ∀∀−+−≤∑=
,);1(1
δ [ ] Xc jj ⋅⋅ 0,0,0,0,,0,0,0 ϕγτ))))
; φγ ,∀
iiKiiii
n
t
t
iiii aaxc ∀∀−+−≤∑=
,);1(1
δ [ ] Xcii ⋅⋅ 0,0,0,0,0,0,0,))))
ϕγτ ; φγ ,∀
;,;1
jiij
n
t
t
ijx ∀≤∑=
δ [ ] X⋅0,0,0,0,0,,0,0))))
ϕγτ ; φγ ,∀
;,;1
jiji
n
t
t
jix ∀≤∑=
δ [ ] X⋅0,0,0,0,0,0,,0))))
ϕγτ ; φγ ,∀
;,';'
1'
jjjj
n
t
t
jjx ∀≤∑=
δ [ ] X⋅0,0,0,0,,0,0,0 ϕγτ))))
; φγ ,∀
;,';'
1'
iiii
n
t
t
iix ∀≤∑=
δ [ ] X⋅0,0,0,0,0,0,0,))))
ϕγτ ; φγ ,∀
Tabla 3.5 Restricciones con signo de menor o igual
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
49
3.2.2.2 Introducción del modelo en formato matricial en Matlab
Tras haber analizado cómo quedarían dispuestas los vectores y matrices del
modelo, el siguiente paso será programar en Matlab funciones y programas que sean
capaces de generar tales matrices y vectores a partir de los datos iniciales.
Para ello se han programado en Matlab funciones que a partir de un tipo de
sumatorio que se desee realizar a un vector, por ejemplo }{ γτ ==∑=
jtt
i
t
ijx ;1
sea capaz
de devolver un vector columna de unos y ceros que al multiplicarlo por el vector xt
ijdé
cómo resultado el sumatorio deseado. De esta manera teniendo funciones como la
anterior para todos los tipos de sumatorios que se dan en el problema sólo hay que
realizar un programa que implemente todas las restricciones del problema llamando a
este tipo de funciones para conseguir introducir la matriz A del problema.
A continuación se explicará una función que realiza la operación
}{ γτ ==∑=
jtt
i
t
ijx ;1
siendo los demás programas de sumatorios análogos.
function [a]=sumatorioi(jau,tau,n) primero=(tau-1)*(n^2)+1; a=zeros(n^3,1); a(primero,1); for i=1:n; for j=1:n; if j==jau; a(primero+(i-1)*n+j-1,1)=1; end end end
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
50
La función sumatorioi consigue a través de unos argumentos de entrada n, jau y
tau que serán γ ,τ y n del problema devolver a que será el vector fila que multiplicado
por el vector tijx realice el sumatorio requerido. Para ello genera un vector de ceros del
mismo tamaño que tijx , es decir 3n y utilizamos la variable “primero” para señalar la
primera componente que será distinta de cero del vector a mediante las dos sentencias
primero=(tau-1)*(n^2)+1;
a=zeros(n^3,1);
a(primero,1);
A continuación y de acuerdo con el análisis realizado en el apartado anterior en el que
se concluye que
}{ [ ] Xjtn
i
t
ijx ⋅===∑=
0,........,.........,,0,0;1
γγτ con γ en la posición γ -ésima.
Existiría un 1 para cada termino en el que t fuera igual a tau y j fuera igual a jau.
Eso se traduce a
for i=1:n; for j=1:n; if j==jau; a(primero+(i-1)*n+j-1,1)=1; end end end
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
51
El resto de las funciones que realizan sumatorios están programadas de manera análoga
así que es relativamente sencilla su interpretación . Así tendríamos:
- Sumatorio en i y en t para una j dada
function [a]=sumatorioi_t(jau,n) a=zeros(n^3,1); for t=1:n; for i=1:n; for j=1:n; if j==jau; a((t-1)*n^2+(i-1)*n+j,1)=1; end end end end
- Sumatorio en j para una i y una t dada
function [a]=sumatorioj(iau,tau,n) primero=(tau-1)*(n^2)+1; a=zeros(n^3,1); a(primero,1); for i=1:n; for j=1:n; if i==iau; a(primero+(i-1)*n+j-1,1)=1; end end end
- Sumatorio en j y t para una i dada
function [a]=sumatorioj_t(iau,n) a=zeros(n^3,1); for t=1:n; for i=1:n; for j=1:n; if i==iau; a((t-1)*n^2+(i-1)*n+j,1)=1; end end end end
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
52
- Sumatorio en i para los elementos Xsit,Xsjt, Xie,Xje
function [a]=sumatorioi_simple(tau,n) primero=(tau-1)*n+1; a=zeros(n^2,1); a(primero,1); for i=1:n; a(primero+i-1,1)=1; end
- Sumatorio en t para los elementos Xsit,Xsjt, Xie,Xje
function [a]=sumatoriot_simple(iau,n) a=zeros(n^2,1); for t=1:n; for i=1:n; if i==iau; a((t-1)*n+i,1)=1; else a((t-1)*n+i,1)=0; end end end
- Sumatorio en t para una i y una j dada
function [a]=sumatoriot_doble(iau,jau,n) a=zeros(n^3,1); for t=1:n; for i=1:n; for j=1:n; if i==iau; if j==jau; a((t-1)*n^2+(i-1)*n+j,1)=1; end else a((t-1)*n^2+(i-1)*n+j,1)=0; end end end end
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
53
Para calcular el valor de los parámetros ij∂ de las restricciones temporales se ha creado
también esta función que calcula los parámetros delta en función de los valores de ai y
bj.
function [delta]=funciondelta(ai,bj,n); deltaij=zeros(n,n); for i=1:n; for j=1:n; if ai(i,1)>=bj(j,1); delta(i,j)=0; else delta(i,j)=1; end end end
A continuación podemos ver el código del programa que con ayuda de las
funciones anteriores es capaz de generar el modelo compuesto por la matriz A, y los
vectores b y f :
%definicion de datos:problema general %variables auxiliares para restricciones temporales K=1000000; deltaii=funciondelta(ai,ai,n); deltaji=funciondelta(bj,ai,n); deltaij=funciondelta(ai,bj,n); deltajj=funciondelta(bj,bj,n); %vars del problema Xii=zeros(n^3,1); Xji=zeros(n^3,1); Xij=zeros(n^3,1); Xjj=zeros(n^3,1); Xsi=zeros(n^2,1); Xsj=zeros(n^2,1); Xie=zeros(n^2,1); Xje=zeros(n^2,1); x=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]; [longitud,aa]=size(x); Aeq=zeros(1, longitud); %-------------------------MATRIZ Aeq -------------------
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
54
%primera restriccion for i=1:n; Xii=sumatorioi_t(i,n); Xji=sumatorioi_t(i,n); Xsi=sumatoriot_simple(i,n); auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]'; Aeq(i,1:longitud)=auxiliar; Xii=zeros(n^3,1);%reinizializando vars Xji=zeros(n^3,1); Xsi=zeros(n^2,1); end %segunda restriccion for i=1:n; Xjj=sumatorioi_t(i,n); Xij=sumatorioi_t(i,n); Xsj=sumatoriot_simple(i,n); auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]'; Aeq(i+n,1:longitud)=auxiliar; Xjj=zeros(n^3,1); Xij=zeros(n^3,1); Xsj=zeros(n^2,1); end %tercera restriccion for t=1:n; for i=1:n; Xii=sumatorioi(i,t,n); Xji=sumatorioi(i,t,n); Xsi=elemento(i,t,n); Xii=Xii-sumatorioj(i,t,n); Xij=-sumatorioj(i,t,n); Xie=-elemento(i,t,n); auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]'; Aeq((t-1)*n+2*n+i,1:longitud)=auxiliar; Xii=zeros(n^3,1); Xji=zeros(n^3,1); Xsi=zeros(n^2,1); Xij=zeros(n^3,1); Xie=zeros(n^2,1); end end
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
55
%cuarta restriccion for t=1:n; for i=1:n; Xjj=sumatorioi(i,t,n); Xij=sumatorioi(i,t,n); Xsj=elemento(i,t,n); Xjj=Xjj-sumatorioj(i,t,n); Xji=-sumatorioj(i,t,n); Xje=-elemento(i,t,n); auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]'; Aeq((t-1)*n+2*n+n^2+i,1:longitud)=auxiliar; Xjj=zeros(n^3,1); Xji=zeros(n^3,1); Xsi=zeros(n^2,1); Xij=zeros(n^3,1); Xje=zeros(n^2,1); end end %6ª restriccion (flujo de salida=entrada) for t=1:n; Xsi=sumatorioi_simple(t,n); Xsj=sumatorioi_simple(t,n); Xie=-sumatorioi_simple(t,n); Xje=-sumatorioi_simple(t,n); auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]'; Aeq(2*n+2*n^2+t,1:longitud)=auxiliar; Xsi=zeros(n^2,1); Xsj=zeros(n^2,1); Xie=zeros(n^2,1); Xje=zeros(n^2,1); end %-----------Matriz A----------------- %5ª restriccion (flujo de salida) for t=1:n; Xsi=sumatorioi_simple(t,n); Xsj=sumatorioi_simple(t,n); auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]'; A(t,1:longitud)=auxiliar; Xsi=zeros(n^2,1); Xsj=zeros(n^2,1); end %restriccion 7.1 (temporal ai,bj) for i=1:n; for j=1:n; Xij=cij(i,j)*sumatoriot_doble(i,j,n); auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]'; A(n+(i-1)*n+j,1:longitud)=auxiliar; Xij=zeros(n^3,1); end end
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
56
%restriccion 7.2 (temporal bj,ai) for i=1:n; for j=1:n; Xji=cji(i,j)*sumatoriot_doble(i,j,n); auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]'; A(n+n^2+(i-1)*n+j,1:longitud)=auxiliar; Xji=zeros(n^3,1); end end %restriccion 7.3 (temporal ai,ai) for i=1:n; for j=1:n; Xii=cii(i,j)*sumatoriot_doble(i,j,n); auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]'; A(n+2*n^2+(i-1)*n+j,1:longitud)=auxiliar; Xii=zeros(n^3,1); end end %restriccion 7.4 (temporal bj,bj) for i=1:n; for j=1:n; Xjj=cjj(i,j)*sumatoriot_doble(i,j,n); auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]'; A(n+3*n^2+(i-1)*n+j,1:longitud)=auxiliar; Xjj=zeros(n^3,1); end end %restriccion 8.1 (condicion delta) for i=1:n; for j=1:n; Xij=sumatoriot_doble(i,j,n); auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]'; A(n+4*n^2+(i-1)*n+j,1:longitud)=auxiliar; Xij=zeros(n^3,1); end end %restriccion 8.2 (condicion delta) for i=1:n; for j=1:n; Xji=sumatoriot_doble(i,j,n); auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]'; A(n+5*n^2+(i-1)*n+j,1:longitud)=auxiliar; Xji=zeros(n^3,1); end end %restriccion 8.3 (condicion delta) for i=1:n; for j=1:n; Xii=sumatoriot_doble(i,j,n); auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]'; A(n+6*n^2+(i-1)*n+j,1:longitud)=auxiliar; Xii=zeros(n^3,1); End end
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
57
%restriccion 8.4 (condicion delta) for i=1:n; for j=1:n; Xjj=sumatoriot_doble(i,j,n); auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje]'; A(n+7*n^2+(i-1)*n+j,1:longitud)=auxiliar; Xjj=zeros(n^3,1); end end %--------------vector beq--------------------- beq=zeros(3*n+2*n^2,1); %restricciones 1 y 2 beq(1:2*n,1)=1; %---------------b------------------------ b=zeros(1,1); %restr 5 for i=1:n; b(i,1)=1; end %restr 7.1 for i=1:n; for j=1:n; b(n+(i-1)*n+j,1)=bj(j,1) - ai(i,1) + K*(1-deltaij(i,j)); end end %restr 7.2 for i=1:n; for j=1:n; b(n+n^2+(i-1)*n+j,1)=ai(j,1) - bj(i,1) + K*(1-deltaji(i,j)); end end %restr 7.3 for i=1:n; for j=1:n; b(n+2*n^2+(i-1)*n+j,1)=ai(j,1) - ai(i,1) + K*(1-deltaii(i,j)); end end %restr 7.4 for i=1:n; for j=1:n; b(n+3*n^2+(i-1)*n+j,1)=bj(j,1) - bj(i,1) + K*(1-deltajj(i,j)); end end %restr 8.1 for i=1:n; for j=1:n; b(n+4*n^2+(i-1)*n+j,1)=deltaij(i,j); end end
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
58
%restr 8.2 for i=1:n; for j=1:n; b(n+5*n^2+(i-1)*n+j,1)=deltaji(i,j); end end %restr 8.3 for i=1:n; for j=1:n; b(n+6*n^2+(i-1)*n+j,1)=deltaii(i,j); end end %restr 8.4 for i=1:n; for j=1:n; b(n+7*n^2+(i-1)*n+j,1)=deltajj(i,j); end end % funcion objetivo f=zeros(1,1); COSTE=5000; for t=1:n; for i=1:n; for j=1:n; f((t-1)*n^2+(i-1)*n+j,1)=cii(i,j); end end end for t=1:n; for i=1:n; for j=1:n; f(n^3+(t-1)*n^2+(i-1)*n+j,1)=cji(i,j); end end end for t=1:n; for i=1:n; for j=1:n; f(2*n^3+(t-1)*n^2+(i-1)*n+j,1)=cij(i,j); end end end for t=1:n; for i=1:n; for j=1:n; f(3*n^3+(t-1)*n^2+(i-1)*n+j,1)=cjj(i,j); end end end f(4*n^3+1:4*n^3+2*n^2,1)=COSTE; f(4*n^3+2*n^2+1:4*n^3+4*n^2,1)=0;
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
59
3.3.- MODELO MATEMÁTICO Nº 2
3.3.1.- Desarrollo del modelo
El segundo modelo que vamos a emplear esta basado en modelos de asignación de
autobuses en áreas metropolitanas desarrollados en el estudio “ An Approach for
solving class of transportation scheduling problems” llevado a cabo por B. Gavish,
P.Schweitzert y E Shilefer. En el se estudian modelos de problemas de asignación para
diversas situaciones. Todos estos modelos para problemas de asignación tienen unas
características comunes tales como:
o Todos los vehículos están localizados en un deposito central.
o Cada vehículo comienza desde el deposito central, realiza una cadena de
itinerarios y acaba en el mismo deposito central
o Todos los trayectos deben ser realizado por un y solo un vehículo.
Aparte de estas características cada problema de asignación particular tendrá unas
condiciones especificas que habrá que cumplir, en función de la naturaleza del problema
a tratar. En nuestro caso particular, y dado que nuestro problema de asignación parte de
la premisa de que los trayectos que deben de ser asignados deben cumplir unos horarios
previamente establecidos, introducimos la siguiente característica particular:
o Para que un vehículo pueda realizar un trayecto a continuación de otro es
necesario que el tiempo empleado en realizar el primer trayecto más el tiempo
necesario en llegar al punto donde comienza el segundo trayecto sea menor que
la diferencia de los tiempos programados para dichos trayectos.
Aparte de estas características generales, el modelo que vamos a desarrollar es un
modelo de programación lineal en el cual habrá una función objetivo compuesta por las
variables del problema multiplicadas por unos coeficientes que serán los costes del
problema y mediante un algoritmo de optimización se minimizará el valor de esa
función objetivo, con la condición de que las variables del problema deban cumplir unas
restricciones derivadas de la naturaleza del problema.
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
60
Así los costes a minimizar en este problema los podemos dividir en costes de uso
de un nuevo vehículo(salario del conductor, puesta en marcha del vehículo,...) y costes
de conducción de un vehículo( gasto de gasolina, mantenimiento ,...).
Las restricciones del problema están dictadas por la naturaleza del problema con
restricciones tales como: tiempo de realización de un trayecto, todos los autobuses
deben partir y regresar del deposito central, hay que realizar todos los trayectos por uno
y sólo un vehículo,...
Las variables serán de tipo cero, uno donde una variable cero implicara que un
autobús no ha realizado un determinado trayecto y el valor 1 significará que un autobús
ha sido asociado a una determinada ruta.
Tras esta descripción general del modelo pasaremos a una descripción exhaustiva de
las partes del modelo.
Formulación del problema de asignación
En el problema existen n trayectos que deben ser realizados por los autobuses
disponibles. Asociemos el subíndice i=0 al deposito central y los subíndices i=1..n a los
diferentes n trayectos a ser cubiertos. De esta manera todos los vehículos deberán
comenzar su recorrido en el deposito central (i=0) realizarán una cadena de itinerarios
asociados con i=1...n y retornaran al depósito central (i=0)
Uno y sólo un vehículo realizará cada uno de los trayectos. La función objetivo
tratara de determinar el numero optimo de vehículos necesarios para tal propósito.
Entonces:
Sean:
o 1=ijx si un vehículo realiza el trayecto i y a continuación realiza el trayecto
j.
o 0=xij en cualquier otro caso.
o V El coste en que se incurre al utilizar un vehículo para realizar la
planificación en vez de dejarlo en el deposito.
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
61
o ijt Tiempo necesario para realizar el trayecto i y llegar al punto donde
comienza el trayecto j.
o ijc Coste de conducir durante el trayecto i y hasta el punto donde comienza
el trayecto j. Este será proporcional a la distancia recorrida y por tanto al
tiempo empleado en el trayecto luego ijij tkc ⋅=
o ia Hora a la que está programada la salida del trayecto i
Entonces el modelo se formula como:
Min.
∑∑∑== =
⋅+=n
jj
n
j
n
iijijI xVxcZ
10
0 0
(1)
s.a.
njxn
iij ,...2,1;1
0
==∑=
(2)
nixn
jij ,...2,1;1
0
==∑=
(3)
nxn
ii =∑
=00 ; (4)
nxn
ii =∑
=00 ; (5)
0)( ≥−−− siijjij tatax (6)
njixij ,..1,;0,1 =∀=
00x variable entera
En la función objetivo podemos diferenciar el primer termino correspondiente a
los costes de conducción de un vehículo y el segundo término correspondiente a los
costes en los que se incurre con la utilización de un vehículo en lugar de que este
permanezca en el deposito.
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
62
Las restricciones (2) y (3) aseguran que cada nodo será visitado una vez por
exactamente un vehículo y las restricciones (4) y (5) obligan a que todos los autobuses
partan del nodo i=0 ( deposito central ) y terminen su ruta en el mismo sitio, pudiendo
en el camino realizar otros trayectos, o bien permanecer en este depósito central. La
variable 00x toma el valor del numero de autobuses que permanecen en el deposito
central y no realizan ninguno de los n trayectos a cubrir.
La restricción (6) asegura que dos trayectos pueden ser unidos por un vehículo si
y solo si :
0≥−−− siijj tata (7)
Donde se ha introducido un tiempo de seguridad para evitar esperas en caso de
atascos o demás incidentes.
Vamos a eliminar estas 2n restricciones asociando un coste M a todos los pares
i,j donde no se cumple (7) . M es un numero suficientemente grande tal que la función
objetivo empeora claramente cuando se le asocia algún valor a la variable ijx .
Entonces la función objetivo quedara de la siguiente manera:
∑∑∑== =
⋅+=n
jj
n
j
n
iijijI xVxcZ
10
0 0
donde =ijC M si 0<−− iijj ata
ijij tkC ⋅= si 0≥−− iijj ata
Debido a la morfología particular de nuestro problema vamos a realizar un
cambio en la notación del problema.
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
63
En el caso particular de nuestro problema existen claramente diferenciados unos
nodos de origen y unos nodos de destino desde donde parten o donde llegan todos los
trayectos. Cada trayecto de ida de un nodo origen a un nodo destino lleva asociado un
trayecto de vuelta, lo que incita a dividir los trayectos en trayectos de ida y vuelta.
Así, la nueva notación quedara de la siguiente manera:
Asociamos a los trayectos de ida los índices i =1,...n y a los trayectos de vuelta
el índice j=1,...n . A cada trayecto de ida le será asignado el valor ia correspondiente
con el instante temporal en el que el vehículo comenzara a realizar dicho trayecto. A
cada trayecto de vuelta se le asignará el valor jb correspondiente con el instante
temporal en el que comienza dicho trayecto de vuelta. El deposito central tiene
asociados los nodos s y e, nodos salida y entrada. Todos los vehículos deben comenzar
su recorrido en el nodo s y terminar en el nodo e. En caso de que un vehículo
permanezca en el deposito central, este se contabilizará en la variable xse
• xij para variables asociadas a arcos que van desde un trayecto de ida a un
trayecto de vuelta.
• x ji variables asociadas a arcos que van desde un trayecto de vuelta a un trayecto
e ida
• xii para variables asociadas a arcos que van desde un trayecto de ida a otro
trayecto de ida
• x jj para variables asociadas a arcos que van desde un trayecto de vuelta a otro
trayecto de vuelta.
• xsi para variables asociadas a un autobús que realizará por primera vez el
trayecto de ida i
• xsj para variables asociadas a un autobús que realizará por primera vez el
trayecto de vuelta j.
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
64
• xie para variables asociadas a un autobús cuyo último trayecto asociado es el
trayecto i.
• x je para variables asociadas a un autobús cuyo último trayecto asociado es el
trayecto j.
• xse para contabilizar el numero de autobuses que permanecen en el depósito
central.
Con este cambio de variables el problema anterior quedaría formulado de la
siguiente manera:
Min
⎟⎟⎠
⎞⎜⎜⎝
⎛+
++++=
∑∑
∑∑∑∑∑∑∑∑
==
= == == == =
n
jj
n
ii
n
j
n
jjjjj
n
i
n
iiiii
n
j
n
ijiji
n
j
n
iijijI
XXV
XCXCXCXCZ
10
10
1 11 11 11 1 (8)
s.a.
nixxx si
n
iji
n
iii ,...2,1;1
11
==++∑∑==
(9.a)
njxxx sj
n
jjj
n
iij ,...2,1;1
11==++∑∑
==
(9.b)
nixxx ie
n
jij
n
iii ,...2,1;1
11==++∑∑
==
(10.a)
njxxx je
n
iji
n
jjj ,...2,1;1
11==++∑∑
==
(10.b)
nxxx se
n
jsj
n
isi =++∑∑
== 11 (11)
nxxx se
n
jje
n
iie =++∑∑
== 11 (12)
donde
=ijC M si 0<−−− siijj tatb ;
ijij tkC ⋅= si 0≥−−− siijj tatb ;
=jiC M si 0<−−− sjjii tbta ;
jiji tkC ⋅= si 0≥−−− sjjii tbta ;
=iiC M si 0<−−− siiii tata
iiii tkC ⋅= si 0≥−−− siiii tata
=jjC M si 0<−−− sjijj tbtb
jjjj tkC ⋅= si 0≥−−− sjijj tbtb
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
65
Las restricciones (9.a) y (9.b) serian equivalentes a la restricción (2) de la
primera formulación. Las restricciones (10.a) y (10.b) serian equivalentes a la
restricción (3).Las restricciones (11) y (12) representan lo mismo que (4) y (5). 3.3.2.- Implementación
Al igual que con el primer modelo usaremos el paquete Matlab para la
implementacion y aplicación de este nuevo algoritmo. Para ello en primer lugar se
desarrollará una aplicación para introducir los datos en forma matricial en Matlab y a
continuación se ensayarán varios algoritmos de programación lineal para resolver el
problema de asignación inicial.
3.3.2.1 Morfología del problema en formato matricial
El Problema queda en forma matricial de la siguiente manera:
Min xft
s.a. bAx =
{ }1,0=x
Vector x de variables
Introduciremos el vector x de la siguiente forma:
[ ]xxxxxxxxxx sejeiesjsijjijjiii,,,,,,,,=
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
66
donde cada vector xijesta ordenado de la siguiente manera:
Los cuatro primero vectores de variables tendrán un total de nn× componentes
o variables. Para nuestra implementación estas se ordenaran en forma de vector
columna de 2n según la disposición que se indica en la siguiente figura:
[ ]nnniixxxxxx ,.....,,....., 2111211=
[ ]nnnjixxxxxx ,.....,,....., 2111211=
[ ]nnnijxxxxxx ,.....,,....., 2111211=
[ ]nnnjjxxxxxx ,.....,,....., 2111211=
Los cuatro segundos vectores tendrán un total de n componentes o variables
que las ordenaremos del siguiente modo:
[ ]snsssi xxxx ,....., 21=
[ ]snsssjxxxx ,....., 21=
[ ]neeeiexxxx ,....., 21=
[ ]neeejexxxx ,....., 21=
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
67
Matriz A y Vector b
Usando la notación usada en el apartado 3.1.2 podemos formular las
restricciones de una manera mas esquemática que nos da una idea de la morfología de
estas. Así realizamos en primer lugar las siguientes definiciones:
Elemento Definición
γ ( ) xn10,.....1,.....0,0,0=γ , con 1 en la pos γ -esimo.
γ 21),.......,,,(
xnγγγγγ =
1 n×= 1)1,....1,1(1
φ 21
)0,..1,....,0,0(xn
=φ con 1 en la pos. φ -esima.
0 ( ) n×= 10,...,0,00
0 ( ) ;0,...,0,00 21 n×=
Tabla 3.6 Definiciones de elementos
Y las restricciones quedarían como se refleja en el siguiente cuadro:
Restricción Formato Matricial
nixxx si
n
jji
n
iii ,...2,1;1
11==++∑∑
==
[γ ,γ , 0 , 0 ,γ , 0 , 0 , 0 ,0] X⋅ = 1 n...1=∀γ
njxxx sj
n
jjj
n
iij ,...2,1;1
11==++∑∑
==
[ 0 , 0 ,γ ,γ , 0 ,γ , 0 , 0 ,0] X⋅ = 1 n...1=∀γ
nixxx ie
n
jij
n
iii ,...2,1;1
11==++∑∑
==
[φ , 0 ,φ , 0 , 0 , 0 ,γ , 0 ,0] X⋅ = 1 n...1=∀γ
njxxx je
n
iji
n
jjj ,...2,1;1
11==++∑∑
==
[ 0 ,φ , 0 ,φ , 0 , 0 , 0 ,γ ,0] X⋅ = 1 n...1=∀γ
nxxx se
n
jsj
n
isi =++∑∑
== 11 [ 0 , 0 , 0 , 0 ,1,1, 0 , 0 ,1] X⋅ = n
nxxx se
n
jje
n
iie =++∑∑
== 11 [ 0 , 0 , 0 , 0 , 0 , 0 ,1,1,1] X⋅ = n
Tabla 3.7 Restricciones en formato matriccial
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
68
Vector tf de costes
El vector tf tomara pues la siguiente forma:
[ ]0,0,0,1,1,,,, ⋅⋅= VVccccf jjijjiiit
donde jjijjiii cccc ,,, tienen 2n componentes cada uno ordenados de la siguiente
manera:
[ ]nnnii xccccc ...,..,, ,21,11211= ;
[ ]nnnji xccccc ...,..,, ,21,11211=
[ ]nnnij xccccc ...,..,, ,21,11211=
[ ]nnnjj xccccc ...,..,, ,21,11211=
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
69
3.3.2.2 Introducción del modelo en formato matricial en Matlab
Donde las funciones auxiliares que se han empleado son:
Funciondelta(ai,bj,cij,n) - Esta función asigna un coste M a los arcos que no
pueden cumplir la restricción (7) y por tanto son arcos prohibidos, tal y como se
explico en el desarrollo del modelo.
function [delta]=funciondelta(ai,bj,cij,n); tiempseg=10; delta=zeros(n,n); for i=1:n; for j=1:n; if bj(j,1) < ai(i,1) + cij(i,j)+tiempseg; delta(i,j)=1; end end end
Sumatorioi(jau,n) – Esta función realiza el sumatorio de un elemento ijx en i
para un j dado.
function [a]=sumatorioi(jau,n) a=zeros(n^2,1); for i=1:n; for j=1:n; if j==jau; a((i-1)*n+j,1)=1; end end end
Sumatorioj(iau,n) – Esta función realiza el sumatorio de un elemento ijx en j
para un i dado.
function [a]=sumatorioj(iau,n) a=zeros(n^2,1); for i=1:n; for j=1:n; if i==iau; a((i-1)*n+j,1)=1; end end end
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
70
El código utilizado para introducir el modelo completo es el siguiente:
%definición de datos: problema general %parámetros auxiliares para elegir variables cuyo coste
relativo es M deltaii=funciondelta(ai,ai,cii,n); deltaji=funciondelta(bj,ai,cji,n); deltaij=funciondelta(ai,bj,cij,n); deltajj=funciondelta(bj,bj,cjj,n);
%vars del problema Xii=zeros(n^2,1); Xji=zeros(n^2,1); Xij=zeros(n^2,1); Xjj=zeros(n^2,1); Xsi=zeros(n,1); Xsj=zeros(n,1); Xie=zeros(n,1); Xje=zeros(n,1); Xse=0; x=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje;Xse]; [longitud,aa]=size(x); Aeq=zeros(1, longitud); %-------------------------MATRIZ Aeq -----------------------
------ %primera restriccion for i=1:n; Xii=sumatorioi(i,n); Xji=sumatorioi(i,n); Xsi(i,1)=1; auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje;Xse]'; Aeq(i,1:longitud)=auxiliar; Xii=zeros(n^2,1);%reinizializando vars Xji=zeros(n^2,1); Xsi=zeros(n,1); end
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
71
%segunda restriccion for i=1:n; Xjj=sumatorioi(i,n); Xij=sumatorioi(i,n); Xsj(i,1)=1; auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje;Xse]'; Aeq(i+n,1:longitud)=auxiliar; Xjj=zeros(n^2,1); Xij=zeros(n^2,1); Xsj=zeros(n,1); end %tercera restriccion for i=1:n; Xii=sumatorioj(i,n); Xij=sumatorioj(i,n); Xie(i,1)=1; auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje;Xse]'; Aeq(i+2*n,1:longitud)=auxiliar; Xii=zeros(n^2,1); Xij=zeros(n^2,1); Xie=zeros(n,1); end %cuarta restriccion for i=1:n; Xjj=sumatorioj(i,n); Xji=sumatorioj(i,n); Xje(i,1)=1; auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje;Xse]'; Aeq(i+3*n,1:longitud)=auxiliar; Xjj=zeros(n^2,1); Xji=zeros(n^2,1); Xje=zeros(n,1); end %quinta Xsi(1:n,1)=1; Xsj(1:n,1)=1; Xse=1; auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje;Xse]'; Aeq(4*n+1,1:longitud)=auxiliar; Xsi=zeros(n,1); Xsj=zeros(n,1); Xse=0; %sexta Xie(1:n,1)=1; Xje(1:n,1)=1; Xse=1; auxiliar=[Xii;Xji;Xij;Xjj;Xsi;Xsj;Xie;Xje;Xse]'; Aeq(4*n+2,1:longitud)=auxiliar; Xie=zeros(n,1); Xje=zeros(n,1); Xse=0;
PROYECTO FIN DE CARRERA Desarrollo, Implementación y Análisis de modelos Matemáticos
para la asignación de vehículos a trayectos
72
%--------------vector beq--------------------- beq(1:4*n,1)=1; beq(4*n+1:4*n+2,1)=n; % funcion objetivo f=zeros(1,1); COSTE=5000; M=100000000000; for i=1:n; for j=1:n; if deltaii(i,j)==1 f((i-1)*n+j,1)=M; else f((i-1)*n+j,1)=cii(i,j); end end end for i=1:n; for j=1:n; if deltaji(i,j)==1 f(n^2+(i-1)*n+j,1)=M; else f(n^2+(i-1)*n+j,1)=cji(i,j); end end end for i=1:n; for j=1:n; if deltaij(i,j)==1 f(2*n^2+(i-1)*n+j,1)=M; else f(2*n^2+(i-1)*n+j,1)=cij(i,j); end end end for i=1:n; for j=1:n; if deltajj(i,j)==1 f(3*n^2+(i-1)*n+j,1)=M; else f(3*n^2+(i-1)*n+j,1)=cjj(i,j); end end end f(4*n^2+1:4*n^2+2*n,1)=COSTE; f(4*n^2+2*n+1:4*n^2+4*n+1,1)=0;