WEBVTT

00:00:00.670 --> 00:00:03.010
The following content is
provided under a Creative

00:00:03.010 --> 00:00:04.430
Commons license.

00:00:04.430 --> 00:00:06.640
Your support will help
MIT OpenCourseWare

00:00:06.640 --> 00:00:10.730
continue to offer high quality
educational resources for free.

00:00:10.730 --> 00:00:13.270
To make a donation or to
view additional materials

00:00:13.270 --> 00:00:17.230
from hundreds of MIT courses,
visit MIT OpenCourseWare

00:00:17.230 --> 00:00:18.103
at ocw.mit.edu.

00:00:22.670 --> 00:00:24.930
PROFESSOR: All right, so
let's go ahead and proceed

00:00:24.930 --> 00:00:28.810
with vehicle scheduling.

00:00:28.810 --> 00:00:31.950
What we try to do in
vehicle scheduling,

00:00:31.950 --> 00:00:36.370
and that's up to this
point, we have frequently

00:00:36.370 --> 00:00:40.330
determined for different
routes, identify

00:00:40.330 --> 00:00:44.860
to deliver the service that
this specified on the timetable.

00:00:44.860 --> 00:00:49.360
And then vehicle scheduling,
which is the main part,

00:00:49.360 --> 00:00:54.460
is basically how we are
using the existing fleet

00:00:54.460 --> 00:00:58.750
to deliver the service that is
specified on the timetable, how

00:00:58.750 --> 00:01:04.680
we are basically defining
the duties for vehicles

00:01:04.680 --> 00:01:10.580
from the time that they pull
out from depot till the time

00:01:10.580 --> 00:01:13.700
that they pull back
in to depot again.

00:01:13.700 --> 00:01:19.820
What is the sequences of
the revenue trips or revenue

00:01:19.820 --> 00:01:24.320
movements, and
where that involve

00:01:24.320 --> 00:01:28.250
deadhead arcs, layover
arcs, and et cetera.

00:01:28.250 --> 00:01:30.770
We will discuss
this in this lecture

00:01:30.770 --> 00:01:32.720
and we will get to that.

00:01:37.790 --> 00:01:41.060
So the task of
developing the timetable

00:01:41.060 --> 00:01:45.500
is basically the task of
translating frequencies

00:01:45.500 --> 00:01:49.190
into a timetable.

00:01:49.190 --> 00:01:53.330
We may all be familiar with what
a bus service or train service

00:01:53.330 --> 00:01:55.550
timetable is.

00:01:55.550 --> 00:01:59.930
It basically includes the list
of departures and arrivals

00:01:59.930 --> 00:02:05.470
to different stops
by different routes.

00:02:05.470 --> 00:02:11.390
There are alternative ways
of determining the timetable.

00:02:11.390 --> 00:02:15.950
The simplest way is to
just use equal head ways.

00:02:15.950 --> 00:02:21.770
And the frequency that you
allocated to the route the time

00:02:21.770 --> 00:02:23.900
period, during the
time period, just

00:02:23.900 --> 00:02:29.770
distribute them evenly
over the time period.

00:02:33.400 --> 00:02:38.560
If you look at the figure
on the bottom left here,

00:02:38.560 --> 00:02:45.560
we will have an example
of even head ways here.

00:02:45.560 --> 00:02:53.470
However, if the demand is not
uniformly distributed during

00:02:53.470 --> 00:02:58.750
the period, for which the
example could be peak of peak,

00:02:58.750 --> 00:03:01.310
that is usually happening--
depending on the network,

00:03:01.310 --> 00:03:02.260
it may vary--

00:03:02.260 --> 00:03:06.370
but usually happens between
7:00 and 8:00, 7:30 and 8:30.

00:03:06.370 --> 00:03:11.020
Then we want to work
out the head ways,

00:03:11.020 --> 00:03:13.930
and work out the
timetable in a way

00:03:13.930 --> 00:03:21.580
to result in balanced
loads and equal loads.

00:03:21.580 --> 00:03:24.040
So in order to do this,
what you need to do

00:03:24.040 --> 00:03:30.910
is to generate the cumulative
passenger flow arrivals.

00:03:30.910 --> 00:03:38.300
And then if you distribute
your headways on the time axis,

00:03:38.300 --> 00:03:45.080
you will get even headways
or equal headway service.

00:03:45.080 --> 00:03:47.270
If you distribute
your head weighs

00:03:47.270 --> 00:03:50.360
on the cumulative
passenger flow evenly,

00:03:50.360 --> 00:03:55.550
then you would get
balanced loads.

00:03:55.550 --> 00:03:59.570
As you can see, the
headways which is here,

00:03:59.570 --> 00:04:03.500
one, two, three, four,
five balancing loads

00:04:03.500 --> 00:04:06.060
for time table development.

00:04:06.060 --> 00:04:09.470
The other alternative way
of developing timetables

00:04:09.470 --> 00:04:13.860
would be trying to design a
weight clock-face service.

00:04:17.200 --> 00:04:22.480
Why would we want to design
a clock-face time table?

00:04:22.480 --> 00:04:25.100
Does anyone have
any suggestions?

00:04:25.100 --> 00:04:25.656
Yep.

00:04:25.656 --> 00:04:28.730
AUDIENCE: Sometimes it
makes scheduling easier

00:04:28.730 --> 00:04:33.700
if we have some sort
of cyclical pattern.

00:04:33.700 --> 00:04:36.640
It's easier to assign
drivers that way.

00:04:36.640 --> 00:04:38.940
PROFESSOR: Right, yes.

00:04:38.940 --> 00:04:41.950
So that is actually one
reason-- it may eventually,

00:04:41.950 --> 00:04:44.380
in the next step, which
is crew scheduling,

00:04:44.380 --> 00:04:50.259
makes the service more
efficient and cost efficient.

00:04:50.259 --> 00:04:51.300
Is there any other-- yep.

00:04:51.300 --> 00:04:52.966
AUDIENCE: It's easier
for the passengers

00:04:52.966 --> 00:04:54.170
to remember the schedule.

00:04:54.170 --> 00:04:55.450
PROFESSOR: Exactly.

00:04:55.450 --> 00:04:59.800
If the waiting time
estimations that we are doing,

00:04:59.800 --> 00:05:03.100
with respect to frequencies
and with respect to headways,

00:05:03.100 --> 00:05:06.140
if passengers are able to
coordinate with the service,

00:05:06.140 --> 00:05:11.290
the expected waiting time would
be less than the situation

00:05:11.290 --> 00:05:13.990
where they cannot
coordinate with the service.

00:05:13.990 --> 00:05:19.420
That's only the case when
headway is 10, 15, 20, 30

00:05:19.420 --> 00:05:23.080
or minutes or 60 minutes.

00:05:23.080 --> 00:05:29.270
And then we would
have service every--

00:05:29.270 --> 00:05:31.090
on minute one, for
example, that that

00:05:31.090 --> 00:05:36.410
would be 7-1, 7-11, 7-21,
and so on and so forth.

00:05:36.410 --> 00:05:41.680
So it's easier for passengers
to remember the service that

00:05:41.680 --> 00:05:44.060
is designed clock face.

00:05:44.060 --> 00:05:51.850
So again, for the two approaches
to headway distribution,

00:05:51.850 --> 00:05:55.480
equal heavy distribution
is basically,

00:05:55.480 --> 00:05:59.920
as it can be
imagined, each headway

00:05:59.920 --> 00:06:05.140
would be calculated as peak
period duration divided

00:06:05.140 --> 00:06:08.110
by number of
vehicles or frequency

00:06:08.110 --> 00:06:12.280
that we determined for the
route at the time period.

00:06:12.280 --> 00:06:15.400
And in terms of
balance load solution,

00:06:15.400 --> 00:06:22.750
we basically need to first
realize what the loads are,

00:06:22.750 --> 00:06:24.640
the balance loads
are, by dividing

00:06:24.640 --> 00:06:28.150
the passenger flows to
n and then work out,

00:06:28.150 --> 00:06:33.790
on the cumulative
passenger arrivals,

00:06:33.790 --> 00:06:39.250
to realize what the timetable
arrivals and departures are.

00:06:39.250 --> 00:06:40.670
Is there any
questions about this?

00:06:40.670 --> 00:06:41.295
AUDIENCE: Yeah.

00:06:41.295 --> 00:06:44.410
Looking at the
graph on the left,

00:06:44.410 --> 00:06:47.510
let's say PE4 minus
PE [INAUDIBLE]

00:06:47.510 --> 00:06:51.265
is greater than the capacity of
a bus, then we have a problem.

00:06:51.265 --> 00:06:55.790
Because if the number of
passengers there is [INAUDIBLE]

00:06:55.790 --> 00:06:57.580
problem with the clock faced--

00:06:57.580 --> 00:06:58.250
PROFESSOR: Mhm.

00:06:58.250 --> 00:07:04.380
Yeah, that's-- however, what we
basically did in previous step,

00:07:04.380 --> 00:07:07.220
in frequency determination,
that's one of the checks that

00:07:07.220 --> 00:07:10.570
we do, the maximum load.

00:07:10.570 --> 00:07:14.060
And we basically make
sure that maximum load is

00:07:14.060 --> 00:07:18.627
within the allowed standards.

00:07:18.627 --> 00:07:20.210
AUDIENCE: But
basically, so what we're

00:07:20.210 --> 00:07:25.340
saying is if we do
clock faced, then

00:07:25.340 --> 00:07:30.310
we look where we have the
maximum flow of passengers

00:07:30.310 --> 00:07:34.700
and take that headway and
replicate that headway all

00:07:34.700 --> 00:07:38.540
across the rest of
the time period,

00:07:38.540 --> 00:07:41.810
is what you're saying if
I understand correctly.

00:07:41.810 --> 00:07:46.880
I'm saying I have to design a
headway to serve the maximum,

00:07:46.880 --> 00:07:50.190
and then the rest of the time
period, which has lower flows,

00:07:50.190 --> 00:07:52.550
will have, you know,
excess capacity.

00:07:52.550 --> 00:07:53.450
PROFESSOR: Right.

00:07:53.450 --> 00:07:55.350
Yeah.

00:07:55.350 --> 00:07:56.610
So yeah, that makes sense.

00:07:56.610 --> 00:08:01.450
It really depends if we design
based on the time period

00:08:01.450 --> 00:08:07.750
and we distribute the
frequencies evenly

00:08:07.750 --> 00:08:15.270
and make sure that we are
checking the requirements that

00:08:15.270 --> 00:08:18.570
are related to
maximum load factors,

00:08:18.570 --> 00:08:22.020
then we won't have any problems.

00:08:22.020 --> 00:08:25.740
However, the other issue
that could actually

00:08:25.740 --> 00:08:30.030
be the counterpart of the
issue that you suggested

00:08:30.030 --> 00:08:35.860
is that when we're designing the
timetable based on balance load

00:08:35.860 --> 00:08:40.289
solution, we may
actually end up having

00:08:40.289 --> 00:08:46.240
to use more vehicles
required for that solution.

00:08:46.240 --> 00:08:49.200
And the reason for that--

00:08:49.200 --> 00:08:54.250
does anyone have any suggestions
for the reason for [INAUDIBLE]

00:08:54.250 --> 00:08:55.030
if the number--

00:08:57.820 --> 00:08:59.500
why the number of
vehicles that we

00:08:59.500 --> 00:09:02.170
may want to require
for balance [INAUDIBLE]

00:09:02.170 --> 00:09:03.540
could be [INAUDIBLE]?

00:09:07.950 --> 00:09:11.280
AUDIENCE: Because if you have
a peak right at a certain time,

00:09:11.280 --> 00:09:13.455
the vehicle would be
able to make one trip,

00:09:13.455 --> 00:09:16.120
and then you'll be sending out
a bus just to make a single trip

00:09:16.120 --> 00:09:18.661
and go back, which adds a lot
of deadhead time on either end.

00:09:18.661 --> 00:09:19.661
PROFESSOR: Right.

00:09:19.661 --> 00:09:20.160
Yeah.

00:09:20.160 --> 00:09:23.200
So that could be one reason.

00:09:23.200 --> 00:09:25.290
The other reason
would be if we have

00:09:25.290 --> 00:09:30.720
a peak of peak in our
passenger arrivals,

00:09:30.720 --> 00:09:34.310
then we would have really short
time intervals or short head

00:09:34.310 --> 00:09:40.410
ways during peak of the peak,
and rather longer headways

00:09:40.410 --> 00:09:42.480
during the off peak.

00:09:42.480 --> 00:09:45.750
And then what happens is that
if these longer headways exceed

00:09:45.750 --> 00:09:48.450
the maximum headway
that is allowed, then

00:09:48.450 --> 00:09:52.710
we would have to basically throw
in more vehicles to make sure

00:09:52.710 --> 00:09:56.590
that we do not exceed the
maximum headway allowed,

00:09:56.590 --> 00:09:58.440
which is one of the
considerations related

00:09:58.440 --> 00:10:00.990
to maximum waiting time
for passengers and level

00:10:00.990 --> 00:10:02.260
of service.

00:10:02.260 --> 00:10:04.560
So that's one of the issues.

00:10:04.560 --> 00:10:08.580
So as a result, in
general, it is better

00:10:08.580 --> 00:10:13.080
to assume that
design of timetable

00:10:13.080 --> 00:10:15.870
is going to be based
on equal headways,

00:10:15.870 --> 00:10:17.970
and when we do the
frequency computations,

00:10:17.970 --> 00:10:20.132
be consistent with that.

00:10:20.132 --> 00:10:33.360
AUDIENCE: So when we [INAUDIBLE]
and they are, like, strictly

00:10:33.360 --> 00:10:39.644
bound to follow the movement
they are set on [INAUDIBLE]??

00:10:39.644 --> 00:10:43.606
PROFESSOR: I'm not sure I
understand your comment.

00:10:43.606 --> 00:10:44.730
Can you repeat that please?

00:10:44.730 --> 00:10:46.422
AUDIENCE: If
there's [INAUDIBLE]??

00:10:46.422 --> 00:10:47.130
PROFESSOR: Right.

00:10:47.130 --> 00:10:51.855
AUDIENCE: [INAUDIBLE] then
the number of vehicles

00:10:51.855 --> 00:10:53.370
is going to go up.

00:10:53.370 --> 00:10:56.840
But since the number of vehicles
required during off-peak

00:10:56.840 --> 00:11:03.936
[INAUDIBLE] then it
necessarily [INAUDIBLE]

00:11:03.936 --> 00:11:06.060
you need more vehicles
during service [INAUDIBLE]..

00:11:08.596 --> 00:11:09.804
AUDIENCE: That's interesting.

00:11:09.804 --> 00:11:11.160
I have a question--

00:11:11.160 --> 00:11:13.840
why do you think
that a balance load

00:11:13.840 --> 00:11:16.560
will require more vehicles?

00:11:16.560 --> 00:11:18.540
I tend to believe
that it's somewhat

00:11:18.540 --> 00:11:24.970
more efficient, capacity
wise, than the alternative.

00:11:24.970 --> 00:11:27.136
Why do you think that
it has more vehicles?

00:11:27.136 --> 00:11:29.260
AUDIENCE: I thought it was
because the frequency is

00:11:29.260 --> 00:11:30.880
higher.

00:11:30.880 --> 00:11:33.135
AUDIENCE: Only at
certain points.

00:11:33.135 --> 00:11:35.180
It's higher only--

00:11:35.180 --> 00:11:37.770
AUDIENCE: You have enough
vehicles to cover [INAUDIBLE]..

00:11:37.770 --> 00:11:39.186
AUDIENCE: But what
you were saying

00:11:39.186 --> 00:11:41.880
is that you can't cut
service so short that you

00:11:41.880 --> 00:11:45.130
don't need those load factors.

00:11:45.130 --> 00:11:48.320
So in the end, you end
up using more vehicles.

00:11:48.320 --> 00:11:51.000
PROFESSOR: So the reason
that we would basically

00:11:51.000 --> 00:11:53.660
require more vehicles,
in balanced load,

00:11:53.660 --> 00:11:56.850
is that for some
of these headways,

00:11:56.850 --> 00:11:59.040
we need to stretch
the headway in a way

00:11:59.040 --> 00:12:03.630
that it basically
meets the balance

00:12:03.630 --> 00:12:06.900
load on the other headways.

00:12:06.900 --> 00:12:10.100
And then, once we do that,
we may actually go over

00:12:10.100 --> 00:12:16.350
the maximum allowed
headway, that

00:12:16.350 --> 00:12:19.800
is basically trying to take
care of maximum waiting

00:12:19.800 --> 00:12:23.490
time and level of
service in the end.

00:12:23.490 --> 00:12:26.490
In that case, then we need
to throw in more vehicles

00:12:26.490 --> 00:12:29.960
during the same
period of the route.

00:12:29.960 --> 00:12:32.240
And if we need to do
this for all the routes

00:12:32.240 --> 00:12:34.880
at the same time, then
we would eventually

00:12:34.880 --> 00:12:41.720
observe more deficit, and
more vehicles to be used.

00:12:41.720 --> 00:12:44.420
Is this the point
that you tried to--

00:12:44.420 --> 00:12:46.680
AUDIENCE: Yes, but [INAUDIBLE].

00:13:02.500 --> 00:13:04.189
PROFESSOR: On reverse?

00:13:04.189 --> 00:13:05.686
AUDIENCE: [INAUDIBLE].

00:13:30.531 --> 00:13:32.530
PROFESSOR: Well, these
are two different factors

00:13:32.530 --> 00:13:35.270
and both are important in
terms of level of service.

00:13:35.270 --> 00:13:40.870
Headway consideration is
related to maximum waiting time.

00:13:40.870 --> 00:13:44.200
You don't want to have like
reading the long headways that

00:13:44.200 --> 00:13:46.800
would force people
to wait longer.

00:13:46.800 --> 00:13:49.420
And at the same
time, you don't want

00:13:49.420 --> 00:13:52.870
buses that are
overcrowded, and there's

00:13:52.870 --> 00:13:57.910
discomfort resulting
from the crowding effect.

00:13:57.910 --> 00:14:03.070
So these are two different
sources of this utility,

00:14:03.070 --> 00:14:07.870
basically, in the service,
that we try to balance somehow.

00:14:07.870 --> 00:14:12.220
The other issue that you brought
up first, in terms of the fact

00:14:12.220 --> 00:14:15.340
that the service may be
directional, and demand

00:14:15.340 --> 00:14:19.150
may be directional
during peak, and there

00:14:19.150 --> 00:14:23.590
could be possibility of using
vehicles in other directions,

00:14:23.590 --> 00:14:27.070
or using deadheading,
and situations

00:14:27.070 --> 00:14:29.800
like that, we are actually
going to cover that.

00:14:29.800 --> 00:14:35.707
And that's true for both
of the two scenarios.

00:14:35.707 --> 00:14:37.207
AUDIENCE: It seems
like there should

00:14:37.207 --> 00:14:38.620
be some kind of
hybrid way to say,

00:14:38.620 --> 00:14:40.536
this is the amount of
vehicles I want to use--

00:14:40.536 --> 00:14:44.370
and there's a way to not
have to go over schedule

00:14:44.370 --> 00:14:49.090
based on equal headways, and
still [INAUDIBLE] demand.

00:14:49.090 --> 00:14:50.870
PROFESSOR: Exactly, yeah.

00:14:50.870 --> 00:14:54.760
And so there is all sorts of
tricks in these steps, where

00:14:54.760 --> 00:14:58.210
you tweak some of the
solutions from one level

00:14:58.210 --> 00:15:02.650
and go back to the previous
levels, and adjust those.

00:15:02.650 --> 00:15:05.110
There is all sorts of
engineering judgments,

00:15:05.110 --> 00:15:09.400
and the planning judgments that
are involved, and can actually

00:15:09.400 --> 00:15:10.070
take place.

00:15:10.070 --> 00:15:13.960
We will see a couple of
those in this lecture, too.

00:15:13.960 --> 00:15:15.160
OK, so let's go.

00:15:18.040 --> 00:15:24.080
So now, once we know
what the timetable is,

00:15:24.080 --> 00:15:28.050
the sequence of arrivals and
departures for different trips,

00:15:28.050 --> 00:15:30.300
for all routes,
then it's a matter

00:15:30.300 --> 00:15:33.720
of determining what's
the fleet size that

00:15:33.720 --> 00:15:41.250
is required for delivering the
service that is timetabled.

00:15:41.250 --> 00:15:46.650
There is this famous
theorem in the literature

00:15:46.650 --> 00:15:51.360
that deals with an
estimation of number of fleet

00:15:51.360 --> 00:15:52.300
that is required.

00:15:52.300 --> 00:15:54.840
It is basically an upper
bound to the number

00:15:54.840 --> 00:16:00.460
of vehicles that are required
to deliver the service.

00:16:00.460 --> 00:16:02.100
The reason that
it's an upper bound

00:16:02.100 --> 00:16:05.610
is that it basically
assumes that we

00:16:05.610 --> 00:16:10.540
are going to stick to
the original timetable,

00:16:10.540 --> 00:16:13.020
and we are not allowed
to do any trip shifting,

00:16:13.020 --> 00:16:16.800
or we are not doing any
trip shifting in this step

00:16:16.800 --> 00:16:20.520
to accommodate some
of [INAUDIBLE] that

00:16:20.520 --> 00:16:27.180
are one or two minutes, or a few
minutes basically conflicting.

00:16:27.180 --> 00:16:29.760
And then the other
assumption that

00:16:29.760 --> 00:16:35.070
is made here to compute the
upper bound of fleet size

00:16:35.070 --> 00:16:39.090
is that we are not
allowing deadheading trips

00:16:39.090 --> 00:16:42.360
to balance the deficit
among the terminals.

00:16:42.360 --> 00:16:45.150
So let's start with
the definitions.

00:16:45.150 --> 00:16:55.890
The function l of k, t, and
s-- k is the index of terminal,

00:16:55.890 --> 00:17:01.640
t is the index of time, and s is
the index of the schedule that

00:17:01.640 --> 00:17:05.410
is already developed.

00:17:05.410 --> 00:17:10.560
So l is basically
the cumulative number

00:17:10.560 --> 00:17:17.099
of departures from terminal by
time t following the schedule.

00:17:17.099 --> 00:17:20.010
And a would be the
cumulative number

00:17:20.010 --> 00:17:25.319
of arrivals at terminal k by
time t following that schedule.

00:17:25.319 --> 00:17:27.960
Then we define a
function, which is

00:17:27.960 --> 00:17:31.230
the difference
between the two, it's

00:17:31.230 --> 00:17:33.840
basically the deficit
function which

00:17:33.840 --> 00:17:40.620
is the cumulative departures
minus cumulative arrivals.

00:17:40.620 --> 00:17:43.290
We use this deficit
function to estimate

00:17:43.290 --> 00:17:46.500
what's the required to
deliver the service.

00:17:46.500 --> 00:17:56.040
So the fleet size theorem
says that, if we basically

00:17:56.040 --> 00:18:02.700
compute the maximum
number of deficit

00:18:02.700 --> 00:18:12.010
over all time intervals for each
terminal, and we add those up,

00:18:12.010 --> 00:18:14.850
we will get the total
number that is required--

00:18:14.850 --> 00:18:16.320
number of vehicles
that is required

00:18:16.320 --> 00:18:18.070
to deliver the service.

00:18:18.070 --> 00:18:19.860
So it's basically this equation.

00:18:19.860 --> 00:18:22.710
The summation over
all terminals, maximum

00:18:22.710 --> 00:18:27.520
over t of the deficit function.

00:18:27.520 --> 00:18:30.530
So in this figure,
we basically on top,

00:18:30.530 --> 00:18:34.370
we see different trips
that are scheduled,

00:18:34.370 --> 00:18:39.690
and each trip is basically
identified with a number

00:18:39.690 --> 00:18:45.210
and a pair of terminals.

00:18:45.210 --> 00:18:49.080
That's, for example, trip one,
it starts from terminal m,

00:18:49.080 --> 00:18:52.540
and ends at terminal u.

00:18:52.540 --> 00:18:57.510
And then, as you can see, these
trips all start at terminal m,

00:18:57.510 --> 00:19:00.060
some of them go to u,
some of them go to v,

00:19:00.060 --> 00:19:02.970
and there is also
trips between u and v,

00:19:02.970 --> 00:19:06.730
and basically some of
them come back to m again.

00:19:06.730 --> 00:19:12.940
So if we basically work
out the deficit function

00:19:12.940 --> 00:19:16.970
for terminal m, what we
see is that, for example,

00:19:16.970 --> 00:19:21.010
at time around 5:00 AM, we will
have one trip scheduled here,

00:19:21.010 --> 00:19:22.690
trip number six.

00:19:22.690 --> 00:19:25.630
And at 6:00, there
is another one.

00:19:25.630 --> 00:19:31.930
Our deficit is basically
growing, until at noon,

00:19:31.930 --> 00:19:36.550
where the first trip
comes back to terminal m.

00:19:36.550 --> 00:19:43.420
And then, at that point, it
continues at a deficit level

00:19:43.420 --> 00:19:49.480
three, where there is one
departure and one arrival

00:19:49.480 --> 00:19:57.660
scheduled at 17, at 5:00 PM.

00:19:57.660 --> 00:20:03.180
And then it continues until the
last trip arrivals, at a little

00:20:03.180 --> 00:20:04.710
be before 10:00 PM.

00:20:04.710 --> 00:20:10.550
So in this case, if we
look at the maximum deficit

00:20:10.550 --> 00:20:16.130
over time for this
terminal, it would be four.

00:20:16.130 --> 00:20:20.680
And that's for terminal m.

00:20:20.680 --> 00:20:22.750
When we look at all
terminals in the network,

00:20:22.750 --> 00:20:24.820
and some of the
maximum deficits,

00:20:24.820 --> 00:20:26.830
the summation will give
us the number of fleet

00:20:26.830 --> 00:20:28.640
that is required.

00:20:28.640 --> 00:20:31.760
However, there are
a couple tricks

00:20:31.760 --> 00:20:36.200
that we can basically
improve the efficiency.

00:20:36.200 --> 00:20:37.790
One of the tricks
would be shifting

00:20:37.790 --> 00:20:40.040
the departures or
arrivals a little,

00:20:40.040 --> 00:20:43.680
bit so we accommodate
more trips.

00:20:43.680 --> 00:20:45.270
If they're required,
for example,

00:20:45.270 --> 00:20:53.270
in this case, like the deficit
part that actually gets

00:20:53.270 --> 00:21:02.200
to level four, is as the result
of trip nine being scheduled

00:21:02.200 --> 00:21:05.710
around like 11:15, or so.

00:21:05.710 --> 00:21:08.460
If we can manage to shift
trip nine a little bit

00:21:08.460 --> 00:21:15.490
forward, up to noon,
then we may actually

00:21:15.490 --> 00:21:19.420
get rid of the fourth
unit of deficit

00:21:19.420 --> 00:21:27.640
here, and make the total
deficit, or maximum deficit,

00:21:27.640 --> 00:21:31.340
here equal to three.

00:21:31.340 --> 00:21:34.190
There's also the
issue of reliability

00:21:34.190 --> 00:21:37.670
that you may want to consider
for these trip arrivals

00:21:37.670 --> 00:21:38.930
and departures.

00:21:38.930 --> 00:21:42.800
For example, if you
look at this point

00:21:42.800 --> 00:21:48.620
here, where trip two
arrives, and it's basically

00:21:48.620 --> 00:21:50.780
based on this
method, it is going

00:21:50.780 --> 00:21:54.230
to be assigned to trip eight.

00:21:54.230 --> 00:22:02.584
However, what if trip two
is late by a few minutes?

00:22:02.584 --> 00:22:04.000
What should be
doing in that case?

00:22:04.000 --> 00:22:07.520
Are we going to delay trip
eight to accommodate that?

00:22:07.520 --> 00:22:13.170
One way of looking at this is
that instead of working out

00:22:13.170 --> 00:22:19.160
the deficit functions with trip
times, and then schedule trips,

00:22:19.160 --> 00:22:23.270
we can work it out with half
cycles that already includes

00:22:23.270 --> 00:22:27.980
layovers, and 95
percentiles at the terminus,

00:22:27.980 --> 00:22:35.170
to make sure that we have
a leeway at the terminals.

00:22:35.170 --> 00:22:42.560
That will definitely require
and result in higher deficits.

00:22:42.560 --> 00:22:46.520
But again, if we are allowed
to shift the trips a little bit

00:22:46.520 --> 00:22:49.580
back and forth, then
that's something

00:22:49.580 --> 00:22:52.400
that would be recommended--
to work with half cycles,

00:22:52.400 --> 00:22:55.640
instead of working with
the scheduled trips.

00:22:55.640 --> 00:22:57.830
Is there any
questions about fleet

00:22:57.830 --> 00:23:00.680
size required computation here?

00:23:03.440 --> 00:23:12.122
AUDIENCE: [INAUDIBLE] to
reduce fleet size deficits?

00:23:12.122 --> 00:23:15.950
Do they actually employ
the techniques of shifting?

00:23:15.950 --> 00:23:17.900
PROFESSOR: Yeah, of course.

00:23:17.900 --> 00:23:21.890
That's a part in timetable--

00:23:21.890 --> 00:23:29.480
it's going back to one of the
steps that was already decided

00:23:29.480 --> 00:23:31.870
and optimized in the past.

00:23:31.870 --> 00:23:35.990
But there are all sorts of these
revisiting that is going on

00:23:35.990 --> 00:23:38.900
in transit agencies.

00:23:38.900 --> 00:23:44.630
Because we do not optimize
all the components

00:23:44.630 --> 00:23:48.520
in an integrated manner,
all at the same time,

00:23:48.520 --> 00:23:52.310
and we basically do a
sequential optimization,

00:23:52.310 --> 00:23:54.620
there is always this
requirement to go back

00:23:54.620 --> 00:23:57.140
to some of those
decisions that you thought

00:23:57.140 --> 00:24:03.050
were optimal at the upper level,
and adjust those to account

00:24:03.050 --> 00:24:06.926
for gains in the lower level.

00:24:06.926 --> 00:24:11.930
AUDIENCE: I assume-- suppose
that this graph represents

00:24:11.930 --> 00:24:18.490
an entire agency, and we'll
reduce that agency's fleet size

00:24:18.490 --> 00:24:21.860
from four to three, saving
money on another bus.

00:24:21.860 --> 00:24:24.410
That's a lot of
money in savings,

00:24:24.410 --> 00:24:26.150
by not having that fourth bus.

00:24:29.050 --> 00:24:32.770
Do they look--

00:24:32.770 --> 00:24:34.990
PROFESSOR: When they
design timetables,

00:24:34.990 --> 00:24:39.130
they try to have some
sort of coordination

00:24:39.130 --> 00:24:42.670
with arrivals and
departures to the terminals.

00:24:42.670 --> 00:24:44.680
There is an example at
the end of this lecture

00:24:44.680 --> 00:24:47.920
that we're going to talk about,
how you can coordinate back

00:24:47.920 --> 00:24:51.640
and forth trips, so it will
result in lower deficit

00:24:51.640 --> 00:24:53.510
in the first place.

00:24:53.510 --> 00:25:00.400
But yeah, sometimes
it may actually

00:25:00.400 --> 00:25:04.610
be at the level of the
fleet size determination,

00:25:04.610 --> 00:25:07.410
that you do this
these shiftings again

00:25:07.410 --> 00:25:11.630
to improve the efficiency.

00:25:11.630 --> 00:25:15.130
Any other questions?

00:25:15.130 --> 00:25:17.690
It's a bit faster
on these parts.

00:25:17.690 --> 00:25:23.850
So when it comes to matter of
vehicle scheduling problems,

00:25:23.850 --> 00:25:26.580
it is a very interesting
problem to optimize.

00:25:26.580 --> 00:25:29.970
The objective of this problem
is to define vehicle blocks,

00:25:29.970 --> 00:25:35.970
or sequence of duties for
vehicles that includes revenue

00:25:35.970 --> 00:25:38.970
trips and non-revenue trips.

00:25:38.970 --> 00:25:43.650
In other words, deadheads
to rebalance, or to balance

00:25:43.650 --> 00:25:45.180
the deficit at terminals.

00:25:47.870 --> 00:25:51.620
Or layovers that would
actually take place

00:25:51.620 --> 00:25:55.280
for reliability considerations.

00:25:55.280 --> 00:26:01.610
So the objective is basically
to define these vehicle blocks,

00:26:01.610 --> 00:26:05.510
given that we are going to cover
all the trips that are already

00:26:05.510 --> 00:26:10.090
scheduled, in a way
to minimize the fleet

00:26:10.090 --> 00:26:13.750
size as a measure
of the capital cost,

00:26:13.750 --> 00:26:17.530
and minimize the non-revenue
time and mileage.

00:26:17.530 --> 00:26:20.240
As a measure of a
non-revenue time,

00:26:20.240 --> 00:26:25.480
could actually
account for crew cost,

00:26:25.480 --> 00:26:30.010
and mileage could account
for both crew cost and fuel

00:26:30.010 --> 00:26:35.460
and basic operational costs.

00:26:35.460 --> 00:26:39.385
One important observation is
that these are proxies for us.

00:26:39.385 --> 00:26:42.220
Again, in the [INAUDIBLE]
step of the work when

00:26:42.220 --> 00:26:44.840
we are doing the
scheduling for crew,

00:26:44.840 --> 00:26:47.890
we will realize
some of the costs

00:26:47.890 --> 00:26:55.630
actually depends on how these
vehicle blocks are defined.

00:26:55.630 --> 00:27:00.130
And probably the important
components of cost

00:27:00.130 --> 00:27:01.790
that is related to--

00:27:01.790 --> 00:27:04.000
they're related to
crew duties are going

00:27:04.000 --> 00:27:05.770
to be determined in data stage.

00:27:05.770 --> 00:27:09.370
So these are only proxies
for cost, fleet size,

00:27:09.370 --> 00:27:13.000
and non-revenue
time and mileages.

00:27:13.000 --> 00:27:16.780
Input into the vehicles
scheduling problem

00:27:16.780 --> 00:27:21.100
would be [INAUDIBLE] vehicle
revenue trips is the timetable

00:27:21.100 --> 00:27:24.220
that we are to deliver.

00:27:24.220 --> 00:27:27.790
Each is characterized by trip
stop time, and the end time

00:27:27.790 --> 00:27:29.470
and point.

00:27:29.470 --> 00:27:33.050
Then the other input would
be possible layover arcs

00:27:33.050 --> 00:27:38.440
to account for reliability of
these trips, and delay trips.

00:27:38.440 --> 00:27:44.260
And deadhead arcs connecting
depots to trip starting

00:27:44.260 --> 00:27:49.170
points-- we call those pull-out
arcs from [? depots. ?]

00:27:49.170 --> 00:27:52.270
And then pull-ins back
into depots from trip end

00:27:52.270 --> 00:27:53.620
points to depots.

00:27:53.620 --> 00:28:01.180
And then the deadhead, or
balancing deficit arcs--

00:28:01.180 --> 00:28:03.760
these are basically
trips that bring vehicles

00:28:03.760 --> 00:28:08.140
from terminals with
lower deficit than what

00:28:08.140 --> 00:28:12.820
is scheduled to terminals
with higher deficit.

00:28:12.820 --> 00:28:16.090
So what we try to do is
that, from these arcs,

00:28:16.090 --> 00:28:20.110
we certainly need to choose
the optimal combination

00:28:20.110 --> 00:28:22.630
of these arcs to
deliver the service,

00:28:22.630 --> 00:28:27.280
and bring our vehicles out
from depot and the same number

00:28:27.280 --> 00:28:32.810
back to people depot again,
after the day is over.

00:28:32.810 --> 00:28:35.960
So another important
observation, or quick note,

00:28:35.960 --> 00:28:41.470
here, is that there may be many
possible number of deadhead

00:28:41.470 --> 00:28:43.250
and layover arcs.

00:28:43.250 --> 00:28:46.050
It's actually from a
combinatorial nature.

00:28:46.050 --> 00:28:51.680
However, the designer,
or the person

00:28:51.680 --> 00:28:56.240
who tries to solve this problem,
needs to review these arcs,

00:28:56.240 --> 00:29:03.290
and come up with feasible and
plausible arcs to start with.

00:29:03.290 --> 00:29:05.750
And then, as I mentioned,
the layover arcs

00:29:05.750 --> 00:29:10.910
are also important in terms
of making sure we will have

00:29:10.910 --> 00:29:14.240
a certain level of reliability.

00:29:14.240 --> 00:29:18.290
There are variations to
the problem that actually

00:29:18.290 --> 00:29:22.010
can make the problem
more complicated,

00:29:22.010 --> 00:29:27.050
but we are going to stick
to the simplest one,

00:29:27.050 --> 00:29:32.390
and show how we can formulate
the problem, model it, and what

00:29:32.390 --> 00:29:34.580
are the algorithms that
can solve it for us.

00:29:34.580 --> 00:29:38.420
These variations,
basically, are related to--

00:29:38.420 --> 00:29:40.370
one possible
variation is related

00:29:40.370 --> 00:29:45.890
to vehicles servicing single
lines, or single routes,

00:29:45.890 --> 00:29:50.880
or inter-lining between
different routes.

00:29:50.880 --> 00:29:54.560
The other variation would
be related to possibility

00:29:54.560 --> 00:29:59.690
of having multiple depots
in the network, big,

00:29:59.690 --> 00:30:04.190
larger transit agencies
usually have multiple depots.

00:30:04.190 --> 00:30:08.540
For example, for Boston,
I know a few of those.

00:30:08.540 --> 00:30:11.790
I do not know what's the
exact number of depots

00:30:11.790 --> 00:30:14.410
that exist in the network.

00:30:14.410 --> 00:30:16.520
Alfred Street is one--

00:30:16.520 --> 00:30:22.605
AUDIENCE: Albany, Southhampton,
two of them at Lynn,

00:30:22.605 --> 00:30:27.220
Fellsway, North
Cambridge-- that's it.

00:30:27.220 --> 00:30:31.560
PROFESSOR: That's, yeah, OK,
so it's almost close to 10--

00:30:31.560 --> 00:30:32.220
eight, nine.

00:30:32.220 --> 00:30:36.920
OK, so when it comes to
different depots, and having

00:30:36.920 --> 00:30:40.070
multiple depots, there
will be more complexities

00:30:40.070 --> 00:30:41.390
introduced to the problem.

00:30:41.390 --> 00:30:44.480
Because you may want to make
sure that the exact number

00:30:44.480 --> 00:30:49.820
of vehicles who depart at a
depot, come back to depot.

00:30:49.820 --> 00:30:51.710
There are also
some considerations

00:30:51.710 --> 00:30:56.850
related to the fuel
that the fleet is using.

00:30:56.850 --> 00:31:00.650
You may have diesel buses,
you may have CNG buses.

00:31:00.650 --> 00:31:05.270
If you have restriction in
terms of fueling facilities

00:31:05.270 --> 00:31:09.750
in these depots, you may want
to return back the vehicles

00:31:09.750 --> 00:31:12.470
to the particular
depots that are

00:31:12.470 --> 00:31:16.640
consistent with
the fueling system.

00:31:16.640 --> 00:31:21.230
Then, there are
different considerations

00:31:21.230 --> 00:31:26.660
related to vehicle types,
related to parking spaces

00:31:26.660 --> 00:31:29.562
at the depots, and
that actually makes

00:31:29.562 --> 00:31:30.770
the problem more complicated.

00:31:30.770 --> 00:31:34.130
But we can actually make
some simplifying assumptions

00:31:34.130 --> 00:31:36.080
for now, and see how
the problem looks

00:31:36.080 --> 00:31:38.300
like in the most basic form.

00:31:41.590 --> 00:31:44.970
So this is the time space
network representation

00:31:44.970 --> 00:31:47.400
of the vehicle
scheduling problem--

00:31:47.400 --> 00:31:49.380
we are trying, in the
next three slides,

00:31:49.380 --> 00:31:53.740
we are trying to build on
the time and space network

00:31:53.740 --> 00:31:57.450
structure, to realize what
is the decision that we're

00:31:57.450 --> 00:32:00.510
trying to make, and how we
can basically solve this.

00:32:00.510 --> 00:32:04.350
So this is time
space representation

00:32:04.350 --> 00:32:11.100
with x-axis being time of
day, and y-axis being space.

00:32:11.100 --> 00:32:13.200
This is only one
dimensional space here,

00:32:13.200 --> 00:32:18.480
but it could be two
dimensional space, too.

00:32:18.480 --> 00:32:22.920
So in this case,
we have two routes

00:32:22.920 --> 00:32:25.980
that are represented
here-- route one,

00:32:25.980 --> 00:32:28.920
or n routes-- route
one to route n.

00:32:28.920 --> 00:32:32.370
As you can see there are
trips from either direction

00:32:32.370 --> 00:32:36.570
of these routes, that
are already timetabled,

00:32:36.570 --> 00:32:38.860
and we have already committed
to deliver this service.

00:32:41.490 --> 00:32:45.930
So the black arcs
here are revenue arcs

00:32:45.930 --> 00:32:48.060
that are the arcs
that we committed,

00:32:48.060 --> 00:32:52.230
and these have to be
delivered between the two

00:32:52.230 --> 00:32:54.510
terminals of every route.

00:32:54.510 --> 00:33:00.150
Then we have-- in this problem,
we have only one depot.

00:33:00.150 --> 00:33:04.080
There are two nodes here that
are represented as depot,

00:33:04.080 --> 00:33:06.540
but it's basically
the representation

00:33:06.540 --> 00:33:09.840
of depot at the beginning of
the day when vehicles pull out,

00:33:09.840 --> 00:33:13.380
and the representation at the
end of the day when vehicles

00:33:13.380 --> 00:33:15.050
pull in, basically.

00:33:15.050 --> 00:33:18.120
There are also
layover arcs, where

00:33:18.120 --> 00:33:24.600
you connect all possible
alternatives that you may think

00:33:24.600 --> 00:33:29.270
would be plausible for
connecting these trips to one

00:33:29.270 --> 00:33:31.040
another.

00:33:31.040 --> 00:33:34.220
So in this figure, we
only have a few of those--

00:33:34.220 --> 00:33:35.960
probably the closest
one-- but you

00:33:35.960 --> 00:33:40.370
can work out any possible
combination of bus arrival

00:33:40.370 --> 00:33:43.370
to a terminal, being
connected to a different trip

00:33:43.370 --> 00:33:44.732
from that terminal.

00:33:44.732 --> 00:33:46.190
AUDIENCE: Would
you mind explaining

00:33:46.190 --> 00:33:48.170
what the [INAUDIBLE]?

00:33:48.170 --> 00:33:49.480
Maybe I'm missing something.

00:33:49.480 --> 00:33:51.035
Like, for example,
when we start out

00:33:51.035 --> 00:33:54.186
at the beginning of
the day, [INAUDIBLE]..

00:33:56.750 --> 00:34:01.040
We have two lines emanating from
the very beginning of the day,

00:34:01.040 --> 00:34:04.590
so is that two buses leaving
the depot at the same time?

00:34:04.590 --> 00:34:05.840
Maybe slightly different time?

00:34:05.840 --> 00:34:10.760
PROFESSOR: Right, so let me go
ahead and continue and finish

00:34:10.760 --> 00:34:12.659
all the arcs in the network--

00:34:12.659 --> 00:34:14.870
that may clarify the situation.

00:34:14.870 --> 00:34:17.510
Because there are other
arcs in the network, too.

00:34:17.510 --> 00:34:24.679
So there are arcs that are
pull-out arcs, from the depot

00:34:24.679 --> 00:34:30.560
to start these trips, and arcs
that return the vehicles back

00:34:30.560 --> 00:34:31.850
to the depot.

00:34:31.850 --> 00:34:37.580
There's also arcs that are there
to account for possibilities

00:34:37.580 --> 00:34:41.449
of deadheading trips, from
one route to another route.

00:34:41.449 --> 00:34:46.010
AUDIENCE: So now we have those
two nodes going into route one,

00:34:46.010 --> 00:34:49.940
so two buses going
into route one, right?

00:34:49.940 --> 00:34:51.530
PROFESSOR: That's only a link.

00:34:51.530 --> 00:34:54.440
That link may include
multiple vehicles.

00:34:58.320 --> 00:35:00.840
AUDIENCE: Multiple vehicles
at different times?

00:35:00.840 --> 00:35:06.785
PROFESSOR: Multiple vehicles
at different times--

00:35:10.870 --> 00:35:12.550
well, it could be--

00:35:12.550 --> 00:35:18.050
yeah, this is not the
exact representation

00:35:18.050 --> 00:35:20.630
of time-dependent service.

00:35:20.630 --> 00:35:23.210
You can actually
have connections,

00:35:23.210 --> 00:35:25.420
if you consider each
one of these links

00:35:25.420 --> 00:35:29.790
to carry only one
vehicle or not,

00:35:29.790 --> 00:35:32.750
then you need to add
vehicles from depot

00:35:32.750 --> 00:35:37.280
to other trips along
the time dimension,

00:35:37.280 --> 00:35:40.530
to vehicles that are
basically joining that route

00:35:40.530 --> 00:35:41.880
[INAUDIBLE] time.

00:35:41.880 --> 00:35:44.820
AUDIENCE: What is
the top [INAUDIBLE]??

00:35:44.820 --> 00:35:48.370
PROFESSOR: The top
line, you can--

00:35:48.370 --> 00:35:50.290
the top line is just--

00:35:50.290 --> 00:35:50.850
[INAUDIBLE]

00:35:50.850 --> 00:35:54.730
AUDIENCE: [INAUDIBLE].

00:35:54.730 --> 00:35:56.040
PROFESSOR: It could be--

00:35:56.040 --> 00:35:57.280
yeah, this is--

00:35:57.280 --> 00:35:58.937
AUDIENCE: [INAUDIBLE].

00:35:58.937 --> 00:36:01.020
PROFESSOR: This is, again,
a simplified situation,

00:36:01.020 --> 00:36:04.530
but you can pull out at the
middle of the route, too.

00:36:04.530 --> 00:36:10.620
Where you can, for example,
just serve a vehicle from here.

00:36:10.620 --> 00:36:13.890
But you may want to make sure
that the scheduled trip is

00:36:13.890 --> 00:36:15.610
served.

00:36:15.610 --> 00:36:19.290
So if you have services
that's basically

00:36:19.290 --> 00:36:24.510
a start from the middle of the
line, then you can model that,

00:36:24.510 --> 00:36:25.200
too.

00:36:25.200 --> 00:36:30.070
This is just to show how you
can model a situation like this.

00:36:30.070 --> 00:36:33.626
It may not be all comprehensive
combinations, or situation.

00:36:33.626 --> 00:36:36.250
AUDIENCE: I just wanted to make
sure I understand what it says.

00:36:36.250 --> 00:36:37.791
PROFESSOR: Doesn't
id make sense now?

00:36:37.791 --> 00:36:39.527
AUDIENCE: Yeah, I think so.

00:36:39.527 --> 00:36:41.735
I think one of the confusing
things about this model,

00:36:41.735 --> 00:36:44.440
actually, is that you
have that horizontal line.

00:36:44.440 --> 00:36:46.691
And it's saying
[INAUDIBLE] revenue.

00:36:46.691 --> 00:36:49.066
Really what you should have
is that layover arc shouldn't

00:36:49.066 --> 00:36:51.680
be an arc, it should just be
a line connecting the end of--

00:36:51.680 --> 00:36:52.640
[INAUDIBLE]

00:36:52.640 --> 00:36:55.370
PROFESSOR: Exactly--
these horizontal lines,

00:36:55.370 --> 00:36:57.170
I should actually remove that.

00:36:57.170 --> 00:36:58.010
I will--

00:36:58.010 --> 00:37:00.180
AUDIENCE: Yeah, just make
the layover arcs lines.

00:37:00.180 --> 00:37:03.300
PROFESSOR: Yeah,
exactly, layover arcs--

00:37:03.300 --> 00:37:04.250
that's exactly true.

00:37:06.790 --> 00:37:11.440
Actually, make the connection
between the two directions

00:37:11.440 --> 00:37:15.060
of the route, and then the
other arcs that are involved

00:37:15.060 --> 00:37:18.670
are the deadhead arc's
points in the network.

00:37:18.670 --> 00:37:22.300
AUDIENCE: But it could
be noted that the layover

00:37:22.300 --> 00:37:24.800
arcs are not really--

00:37:24.800 --> 00:37:28.120
[INAUDIBLE] there's no
spatial dimension to them,

00:37:28.120 --> 00:37:29.570
because the bus isn't moving.

00:37:29.570 --> 00:37:31.210
PROFESSOR: Right, yeah, exactly.

00:37:31.210 --> 00:37:35.020
Maybe that's-- the only spatial
dimension to it would be just

00:37:35.020 --> 00:37:38.290
go ahead and turn
around over the corner.

00:37:38.290 --> 00:37:39.580
And then come back, yeah.

00:37:39.580 --> 00:37:40.180
AUDIENCE: It would
still be the case

00:37:40.180 --> 00:37:42.250
that the bus that pulls into the
terminal is the next one out.

00:37:42.250 --> 00:37:44.541
So that's when you might
actually want to have the arc,

00:37:44.541 --> 00:37:47.350
to show that even though
it's not really moving--

00:37:47.350 --> 00:37:49.000
[INAUDIBLE] there
is a reason why you

00:37:49.000 --> 00:37:50.429
might want to show it that way.

00:37:50.429 --> 00:37:51.220
PROFESSOR: Exactly.

00:37:51.220 --> 00:37:53.710
And then the other
point is that, this

00:37:53.710 --> 00:37:59.910
is, like even front from this
node to nodes further down,

00:37:59.910 --> 00:38:03.150
the reason that we
are [INAUDIBLE] think

00:38:03.150 --> 00:38:06.070
the optimization problem
in the network structure,

00:38:06.070 --> 00:38:08.320
like many other
optimization problems,

00:38:08.320 --> 00:38:13.990
is that with networks that
consists of nodes and arcs,

00:38:13.990 --> 00:38:17.980
we can represent the
constraints very efficiently.

00:38:17.980 --> 00:38:20.140
And there are
efficient algorithms

00:38:20.140 --> 00:38:27.050
that use this representation to
solve the optimization problem.

00:38:27.050 --> 00:38:31.900
So whenever we can present
an optimization problem

00:38:31.900 --> 00:38:33.640
in a network
structure, we do that,

00:38:33.640 --> 00:38:37.930
because we have really
elegant algorithms and network

00:38:37.930 --> 00:38:42.950
flows that can be used to
solve optimization problems.

00:38:42.950 --> 00:38:45.440
So let's see what's the
optimization problem we

00:38:45.440 --> 00:38:48.330
are trying to solve here.

00:38:48.330 --> 00:38:50.820
One other link that
we need to add here

00:38:50.820 --> 00:38:53.100
is basically from
depot to depot,

00:38:53.100 --> 00:38:57.300
to make sure that the total
number of vehicles that

00:38:57.300 --> 00:39:00.792
are going out of the
depot, in the morning,

00:39:00.792 --> 00:39:03.000
are going to be equal to
the total number of vehicles

00:39:03.000 --> 00:39:05.474
that are coming back to depot.

00:39:05.474 --> 00:39:06.890
AUDIENCE: So we're
assuming-- just

00:39:06.890 --> 00:39:08.848
to go back to that--
there are some lines there

00:39:08.848 --> 00:39:11.198
that don't have a pull-out,
so we assume those

00:39:11.198 --> 00:39:13.170
are coming from other depots?

00:39:13.170 --> 00:39:15.740
PROFESSOR: Yeah,
in this example,

00:39:15.740 --> 00:39:19.620
we are only simplifying it
into one depot situation,

00:39:19.620 --> 00:39:20.997
but some of the--
yeah, exactly--

00:39:20.997 --> 00:39:22.700
some of the other routes
could actually be--

00:39:22.700 --> 00:39:24.250
AUDIENCE: I guess the
question is, if a route ends,

00:39:24.250 --> 00:39:26.839
the first one that's going
from the bottom to the top

00:39:26.839 --> 00:39:28.380
doesn't have a
pull-out, and so there

00:39:28.380 --> 00:39:29.620
should be an arrow going back.

00:39:29.620 --> 00:39:31.953
PROFESSOR: There should be
an arrow, yeah, to that, too.

00:39:31.953 --> 00:39:34.040
But it's missing in this.

00:39:34.040 --> 00:39:36.290
These arrows are
only representative,

00:39:36.290 --> 00:39:40.670
and they are not comprehensive.

00:39:40.670 --> 00:39:45.230
And we basically are
defining integer capacities

00:39:45.230 --> 00:39:49.250
that would reflect
a number of vehicles

00:39:49.250 --> 00:39:53.060
that are doing that
duty, or are basically

00:39:53.060 --> 00:39:55.560
assigned to those duties.

00:39:55.560 --> 00:39:58.970
These arcs are revenue,
layover, and deadhead arcs.

00:39:58.970 --> 00:40:01.970
And these arcs,
again, have costs.

00:40:01.970 --> 00:40:07.040
Like revenue arcs have
given amount of cost,

00:40:07.040 --> 00:40:12.620
depending on the time that they
take to make the trip, and so

00:40:12.620 --> 00:40:13.640
on and so forth.

00:40:13.640 --> 00:40:18.980
Layover trips, depending
on how much time they take.

00:40:18.980 --> 00:40:21.920
And deadhead arcs, depending
on how much time they take,

00:40:21.920 --> 00:40:26.080
and how much mileage
they require to travel,

00:40:26.080 --> 00:40:27.300
the vehicles.

00:40:27.300 --> 00:40:29.770
However, what's interesting
is that [INAUDIBLE]

00:40:29.770 --> 00:40:33.710
arcs costs of zero for those,
because it's not relevant.

00:40:33.710 --> 00:40:39.170
We eventually would have to
deliver those revenue arc

00:40:39.170 --> 00:40:40.630
services.

00:40:40.630 --> 00:40:43.400
So it's a constant in
the optimization problem.

00:40:43.400 --> 00:40:46.890
We might as well
just remove them.

00:40:46.890 --> 00:40:48.410
But what's important
is that when we

00:40:48.410 --> 00:40:51.200
want to see what the layovers--

00:40:51.200 --> 00:40:55.600
what's the optimal combination
of layovers and deadheads

00:40:55.600 --> 00:40:56.660
in this problem?

00:40:56.660 --> 00:41:04.190
So again, the bounds that
we have for revenue arcs

00:41:04.190 --> 00:41:08.160
is basically lower bound
is one, upper bound is one.

00:41:08.160 --> 00:41:11.680
Why is it like this?

00:41:11.680 --> 00:41:14.260
Does anyone have
any suggestion, why

00:41:14.260 --> 00:41:18.910
the lower bound and upper
bound are both equal to one

00:41:18.910 --> 00:41:19.945
for revenue arcs?

00:41:19.945 --> 00:41:21.820
AUDIENCE: Because you
said we have to operate

00:41:21.820 --> 00:41:23.050
the trips, no matter what.

00:41:23.050 --> 00:41:25.930
PROFESSOR: And we only have to
operate to deliver them once,

00:41:25.930 --> 00:41:28.120
right?

00:41:28.120 --> 00:41:34.030
Remember, these are trips in
the time space representation.

00:41:34.030 --> 00:41:36.610
So each trip is
basically one arc--

00:41:36.610 --> 00:41:38.290
we need to deliver it once.

00:41:38.290 --> 00:41:43.320
So it's basically the matter
of choosing [INAUDIBLE]

00:41:43.320 --> 00:41:47.620
or configuration of layover
arcs between zero and one,

00:41:47.620 --> 00:41:49.770
and deadhead arcs
between zero and one.

00:41:49.770 --> 00:41:53.200
A maximum block length
is a guarantee--

00:41:53.200 --> 00:41:55.300
this is usually not a problem.

00:41:55.300 --> 00:41:58.120
If the fuel
situation, especially

00:41:58.120 --> 00:42:02.630
for electric vehicles,
is restricting,

00:42:02.630 --> 00:42:07.360
we may want to put additional
restrictions on maximum length

00:42:07.360 --> 00:42:08.290
of the vehicle.

00:42:08.290 --> 00:42:13.940
But with the existing
diesel and CNG vehicles,

00:42:13.940 --> 00:42:17.380
these are usually fine to
deliver the whole service day

00:42:17.380 --> 00:42:20.314
services without
having to refuel.

00:42:20.314 --> 00:42:21.730
It's [INAUDIBLE]
that is something

00:42:21.730 --> 00:42:28.300
that is already taken care of in
the vehicle scheduling problem.

00:42:28.300 --> 00:42:30.910
However, shifting
heuristic needs

00:42:30.910 --> 00:42:35.480
to take place before we
get to vehicle scheduling,

00:42:35.480 --> 00:42:37.930
at the level of
timetable development,

00:42:37.930 --> 00:42:44.240
as we discussed after
the deficit functions.

00:42:44.240 --> 00:42:47.860
So the matter would be the--

00:42:47.860 --> 00:42:51.190
if we have multiple
depot, the problem

00:42:51.190 --> 00:42:53.590
becomes a little bit
more complicated.

00:42:53.590 --> 00:42:57.010
For single depot situation,
we solved the problem

00:42:57.010 --> 00:43:02.290
with network flow algorithms,
minimum cost flow algorithm,

00:43:02.290 --> 00:43:07.330
that is very efficient
and very, very fast.

00:43:07.330 --> 00:43:13.370
When it comes to [INAUDIBLE]
flow with integer, [INAUDIBLE]

00:43:13.370 --> 00:43:16.450
which is [INAUDIBLE] in
the problem that we have,

00:43:16.450 --> 00:43:20.650
that problem becomes really
difficult. It becomes NP-hard,

00:43:20.650 --> 00:43:24.790
and it basically is
very difficult to scale.

00:43:24.790 --> 00:43:28.270
That basically
means that we do not

00:43:28.270 --> 00:43:34.570
use the network flow algorithms
for multi depot situation.

00:43:34.570 --> 00:43:39.750
We use some of the existing
[INAUDIBLE] stakes.

00:43:39.750 --> 00:43:41.990
Are there are any questions
about this so far?

00:43:41.990 --> 00:43:44.990
So this is another
network representation

00:43:44.990 --> 00:43:49.430
of the multiple vehicle
scheduling problem.

00:43:49.430 --> 00:43:54.590
This is not a time space
representation anymore,

00:43:54.590 --> 00:44:00.650
because it would become really
complicated with time space

00:44:00.650 --> 00:44:01.700
representation.

00:44:01.700 --> 00:44:05.120
As you can see, there
are different depots

00:44:05.120 --> 00:44:11.390
in the network, and there
are different services

00:44:11.390 --> 00:44:13.810
that need to actually--
or revenue arcs--

00:44:13.810 --> 00:44:16.970
that need to be served.

00:44:16.970 --> 00:44:18.650
There may be some
constraints on number

00:44:18.650 --> 00:44:23.090
of vehicles that pull out
from each one of these depots,

00:44:23.090 --> 00:44:25.790
and the pull in each
one of these depots.

00:44:25.790 --> 00:44:29.750
And again, if we didn't
have the constraint

00:44:29.750 --> 00:44:36.770
of having integer solution, this
could be solved in linear time,

00:44:36.770 --> 00:44:37.490
too.

00:44:37.490 --> 00:44:40.610
However, with integer
constraints, it's not possible.

00:44:44.430 --> 00:44:48.630
So is there any
questions about this?

00:44:48.630 --> 00:44:52.410
It basically-- in order to
be able to implement this,

00:44:52.410 --> 00:44:56.820
we need to make a
definition on trips,

00:44:56.820 --> 00:44:59.750
and identify compatible trips.

00:44:59.750 --> 00:45:05.850
Two compatible trips at a
terminal, I and J, two trips I

00:45:05.850 --> 00:45:08.330
and J are compatible
at the terminal,

00:45:08.330 --> 00:45:13.230
if J is arriving to terminal,
I is departing from terminal,

00:45:13.230 --> 00:45:15.960
and the time difference
between the two

00:45:15.960 --> 00:45:20.160
is actually greater than
the layover that we want.

00:45:20.160 --> 00:45:26.910
And then, also, less than twice
the time of traveling to depot.

00:45:26.910 --> 00:45:31.230
The solution may be only as
good as just sending the vehicle

00:45:31.230 --> 00:45:36.460
back to depot, and then
pull it out from depot

00:45:36.460 --> 00:45:38.250
to another part of the network.

00:45:38.250 --> 00:45:42.930
So we only restrict the
search for compatible trips

00:45:42.930 --> 00:45:44.370
to these two bounds.

00:45:44.370 --> 00:45:49.770
Like MK here is the
minimum recovery time

00:45:49.770 --> 00:45:52.080
that we define as a
lower bound of time

00:45:52.080 --> 00:45:56.790
difference between the arrival
of trip I minus departure

00:45:56.790 --> 00:46:01.020
of trip J. And
then, we use 2 times

00:46:01.020 --> 00:46:06.510
DK, which is the deadhead
time from terminal to depot.

00:46:06.510 --> 00:46:09.300
Then the algorithm
is really simple--

00:46:09.300 --> 00:46:11.470
it has only four steps.

00:46:11.470 --> 00:46:17.000
We start with the earliest
arrival at terminal.

00:46:17.000 --> 00:46:20.450
If there is no earliest
arrival, we go to step D.

00:46:20.450 --> 00:46:25.040
And basically, in step D, we
need to pull out from depot

00:46:25.040 --> 00:46:28.320
to serve that service.

00:46:28.320 --> 00:46:31.010
But if there is one
earliest arrival,

00:46:31.010 --> 00:46:32.810
then we link that
earliest arrival

00:46:32.810 --> 00:46:37.760
to compatible trip departure,
based on the compatibility

00:46:37.760 --> 00:46:41.240
constraint, or
definition that we had.

00:46:41.240 --> 00:46:44.900
Again, if there is no trips
that is compatible with that,

00:46:44.900 --> 00:46:54.410
we need to go back to
step A, and basically use

00:46:54.410 --> 00:47:01.020
the next arrival at terminal.

00:47:01.020 --> 00:47:05.820
If there is one trip that is
compatible with the trip that

00:47:05.820 --> 00:47:10.440
arrives, then we will
check the vehicle block

00:47:10.440 --> 00:47:14.700
length against the
existing constraint.

00:47:14.700 --> 00:47:19.810
Again, that could actually
be related to the fuel,

00:47:19.810 --> 00:47:21.970
fueling constraint,
and so on and so forth.

00:47:21.970 --> 00:47:23.790
If it's constraining,
then we need

00:47:23.790 --> 00:47:28.020
to do to cancel that and
return the vehicle to depot.

00:47:28.020 --> 00:47:32.790
Otherwise, we would
basically make the connection

00:47:32.790 --> 00:47:37.250
between the compatible
trips, and consider

00:47:37.250 --> 00:47:44.310
the second trip a new arrival
to the other [? extreme ?]

00:47:44.310 --> 00:47:46.570
[INAUDIBLE] basically.

00:47:46.570 --> 00:47:51.160
After that, we serve, again,
all remaining unlinked trips

00:47:51.160 --> 00:47:53.428
from depot.

00:47:57.100 --> 00:48:02.650
We need to work out in
your mind these steps once.

00:48:02.650 --> 00:48:05.980
It's very easy to practice,
to realize how this works.

00:48:05.980 --> 00:48:09.230
But it's basically using
the strict first in,

00:48:09.230 --> 00:48:14.890
first out rule, based on
compatibility of trips

00:48:14.890 --> 00:48:17.012
and over the compatible trips.

00:48:17.012 --> 00:48:17.956
Is there any question?

00:48:17.956 --> 00:48:21.008
AUDIENCE: Kind of going back
a little bit, [INAUDIBLE]

00:48:21.008 --> 00:48:23.468
the single depot [INAUDIBLE]?

00:48:28.890 --> 00:48:32.340
PROFESSOR: For single
depot situation,

00:48:32.340 --> 00:48:35.820
the existing algorithms
that solve minimum cost

00:48:35.820 --> 00:48:39.840
flow, like successive shortest
path algorithm, or some

00:48:39.840 --> 00:48:42.870
of the negative cycle
canceling algorithms,

00:48:42.870 --> 00:48:46.620
can give you integer solution.

00:48:46.620 --> 00:48:48.920
However, when it
comes to multi-depot,

00:48:48.920 --> 00:48:52.550
and when it comes to
multi-commodity flow,

00:48:52.550 --> 00:48:54.120
that's not always true.

00:48:54.120 --> 00:48:58.070
So you may actually get a
solution with a linear--

00:48:58.070 --> 00:49:03.710
or with a network flow algorithm
that is in linear time,

00:49:03.710 --> 00:49:05.360
but it's not integer.

00:49:05.360 --> 00:49:12.380
So you may have you decimal,
or partial vehicles going back

00:49:12.380 --> 00:49:14.060
to different depots.

00:49:14.060 --> 00:49:16.390
That's the difference
between the two cases.

00:49:21.000 --> 00:49:23.210
So other questions?

00:49:23.210 --> 00:49:27.970
All right, so after this, we
will have just one single route

00:49:27.970 --> 00:49:33.260
of scheduling practice,
with two nodes, A and B,

00:49:33.260 --> 00:49:36.500
or with two terminals,
A and B. This

00:49:36.500 --> 00:49:42.540
is one route that we want to
schedule for AM peak period,

00:49:42.540 --> 00:49:43.820
and base period.

00:49:43.820 --> 00:49:47.030
AM peak is defined
from 6:00 to 9:00.

00:49:47.030 --> 00:49:49.090
And base period is after 9:00.

00:49:49.090 --> 00:49:54.340
Headways are during
peak period, 20 minutes.

00:49:54.340 --> 00:49:58.690
And scheduled trip times are
40 minutes for both directions.

00:49:58.690 --> 00:50:00.070
Layover is 10.

00:50:02.590 --> 00:50:05.550
During off-peak,
headways are 30.

00:50:05.550 --> 00:50:07.540
Scheduled trip time is 35.

00:50:07.540 --> 00:50:09.910
And minimum layover
is, again, 10.

00:50:09.910 --> 00:50:14.890
Dominant direction
of travel is AM peak.

00:50:14.890 --> 00:50:17.860
And it's in the
direction of A to B.

00:50:17.860 --> 00:50:21.460
So then, what we do is that we
will [INAUDIBLE] direction A

00:50:21.460 --> 00:50:26.470
to B, and given the
headways and running times,

00:50:26.470 --> 00:50:30.970
we work out the [INAUDIBLE]
for all the trips

00:50:30.970 --> 00:50:34.210
that are scheduled during
peak from 6:00 to 9:00,

00:50:34.210 --> 00:50:37.330
and then after that up
to 11:00, and the rest

00:50:37.330 --> 00:50:39.100
could be actually similar.

00:50:39.100 --> 00:50:42.100
So as you can see, the
headways from 6:00 to 9:00

00:50:42.100 --> 00:50:45.170
are 20 minutes, after that
it becomes 30 minutes.

00:50:45.170 --> 00:50:50.760
The running time is 40
minutes in the peak, and 35

00:50:50.760 --> 00:50:51.440
[INAUDIBLE].

00:50:51.440 --> 00:50:56.260
First thing that we do is
that we tie the two directions

00:50:56.260 --> 00:50:57.400
together.

00:50:57.400 --> 00:51:01.780
This is the kind of
coordination that we previously

00:51:01.780 --> 00:51:06.580
discussed with the comment
that [? Aton ?] made

00:51:06.580 --> 00:51:10.700
in terms of shifting
these trips together.

00:51:10.700 --> 00:51:15.520
So this is one example of
shifting some of the trips

00:51:15.520 --> 00:51:18.260
to make better efficiency
in the next steps.

00:51:18.260 --> 00:51:23.410
In this case, we tie the
trips in the first direction

00:51:23.410 --> 00:51:25.460
with trips in the
reverse direction.

00:51:25.460 --> 00:51:29.590
So first trip that departs
at 6:00 arrives at 6:40.

00:51:29.590 --> 00:51:32.800
Considering 10
minutes layover, we

00:51:32.800 --> 00:51:36.580
will schedule the first trip
for the reverse direction

00:51:36.580 --> 00:51:38.320
from 6:50.

00:51:38.320 --> 00:51:41.890
And it's anticipated
to arrive at 7:30.

00:51:41.890 --> 00:51:44.830
And this is so on and so
forth for all the timetable,

00:51:44.830 --> 00:51:50.040
given the travel times between
the two ends, and the headways.

00:51:50.040 --> 00:51:52.060
AUDIENCE: Which means
we need five buses?

00:51:52.060 --> 00:51:55.760
PROFESSOR: Yes, but
you will work this out.

00:51:55.760 --> 00:52:00.310
Right, we need five buses, but
some of them are partial only.

00:52:00.310 --> 00:52:04.326
They can pull in in the
middle, and pull out.

00:52:04.326 --> 00:52:05.700
But we will see
that in a second.

00:52:08.360 --> 00:52:12.880
So we will start
with first pull-out--

00:52:12.880 --> 00:52:16.900
that is the bus that is going
to serve the first round trip.

00:52:16.900 --> 00:52:20.110
After one cycle,
it's going to be

00:52:20.110 --> 00:52:24.370
able to serve the
7:40 trip for us,

00:52:24.370 --> 00:52:26.950
after 10 minutes of layover.

00:52:26.950 --> 00:52:30.070
It will end this trip at 9:10.

00:52:30.070 --> 00:52:32.110
Given 10 minutes
layover, it will

00:52:32.110 --> 00:52:38.890
be able to serve 9:30 for
us, and also 11:00 again.

00:52:38.890 --> 00:52:42.880
The next bus that we
will have to pull out

00:52:42.880 --> 00:52:47.140
can serve the trip from
6:20, and from 8:00.

00:52:47.140 --> 00:52:51.580
After 8:00, once it does the
cycle, it's going to be 9:30.

00:52:51.580 --> 00:52:54.070
And 9:30 is already--

00:52:54.070 --> 00:52:55.810
trip is already taken.

00:52:55.810 --> 00:53:00.700
Then we will have to
choose between sending

00:53:00.700 --> 00:53:07.450
this back to the depot, or
using it for trip at 10:00.

00:53:07.450 --> 00:53:12.400
This trip at 10:00 basically
means like 30 more minutes,

00:53:12.400 --> 00:53:14.770
or 20 minutes of
waiting, we decide

00:53:14.770 --> 00:53:18.130
to send it back to depot.

00:53:18.130 --> 00:53:23.810
We will have five blocks
for five different buses.

00:53:23.810 --> 00:53:26.620
Block one basically
gives the itinerary

00:53:26.620 --> 00:53:32.320
of duties for bus
one, or for whichever

00:53:32.320 --> 00:53:34.780
bus that this is assigned to.

00:53:34.780 --> 00:53:41.030
Then so on and so forth
for all the buses.

00:53:41.030 --> 00:53:44.790
You mainly will have to
work with this method

00:53:44.790 --> 00:53:47.790
for the homework.

00:53:47.790 --> 00:53:51.470
But it's valuable to know
what are the [INAUDIBLE]

00:53:51.470 --> 00:53:55.920
approaches in
practice, and what's

00:53:55.920 --> 00:54:01.200
going on in research that
deals with problems like this.

00:54:01.200 --> 00:54:03.440
Any questions?

00:54:03.440 --> 00:54:05.550
All right, OK.

00:54:05.550 --> 00:54:07.650
Thank you very much.