WEBVTT

00:00:04.500 --> 00:00:07.300
We were able to solve our
sports scheduling problem

00:00:07.300 --> 00:00:11.630
with 4 teams, 24 decision
variables, and 22

00:00:11.630 --> 00:00:14.330
basic constraints,
pretty quickly.

00:00:14.330 --> 00:00:18.140
However, the problem
size increases rapidly.

00:00:18.140 --> 00:00:20.980
The same problem
with 10 teams, would

00:00:20.980 --> 00:00:27.850
have 585 decision variables
and 175 basic constraints.

00:00:27.850 --> 00:00:30.180
For scheduling major
league baseball,

00:00:30.180 --> 00:00:33.510
the problem has 100,000
decision variables

00:00:33.510 --> 00:00:36.590
and 200,000 constraints.

00:00:36.590 --> 00:00:40.000
For small problems, spreadsheet
softwares, like LibreOffice,

00:00:40.000 --> 00:00:41.190
are great.

00:00:41.190 --> 00:00:43.170
But for large
problems like this,

00:00:43.170 --> 00:00:46.820
solving them in LibreOffice
would be impossible.

00:00:46.820 --> 00:00:49.900
So how are integer
optimization models like this

00:00:49.900 --> 00:00:52.840
solved in practice?

00:00:52.840 --> 00:00:55.950
Many different tricks are
used to solve large integer

00:00:55.950 --> 00:00:58.090
optimization problems.

00:00:58.090 --> 00:01:01.360
One is to reformulate
the problem.

00:01:01.360 --> 00:01:03.970
The sports scheduling
problem with more teams

00:01:03.970 --> 00:01:07.590
is often solved by
changing the formulation.

00:01:07.590 --> 00:01:09.420
Instead of the
decision variables

00:01:09.420 --> 00:01:12.220
we discussed in this
lecture, the variables

00:01:12.220 --> 00:01:14.720
are sequences of games.

00:01:14.720 --> 00:01:18.150
Additionally, the problem can
be split into three smaller

00:01:18.150 --> 00:01:22.010
problems that can each be self
separately and much faster

00:01:22.010 --> 00:01:25.120
than just solving
the whole problem.

00:01:25.120 --> 00:01:27.530
Another trick that's
often used, is

00:01:27.530 --> 00:01:30.300
what are called
Heuristic methods.

00:01:30.300 --> 00:01:35.530
These methods find good, but not
necessarily optimal decisions.

00:01:35.530 --> 00:01:37.950
A good decision is
sometimes accepted

00:01:37.950 --> 00:01:39.810
since the problem
is so much easier

00:01:39.810 --> 00:01:42.050
to solve using a
heuristic method.

00:01:45.180 --> 00:01:47.030
In addition to changing
the formulation

00:01:47.030 --> 00:01:51.120
in using heuristics, there are
general purpose optimization

00:01:51.120 --> 00:01:54.770
solvers that can
solve large problems.

00:01:54.770 --> 00:02:00.600
These include CPLEX,
Gurobi, GLPK and Cbc,

00:02:00.600 --> 00:02:02.910
a COIN-OR project.

00:02:02.910 --> 00:02:06.410
Most practitioners who solve
large optimization problems

00:02:06.410 --> 00:02:09.720
use one of these
software packages.

00:02:09.720 --> 00:02:13.680
And in the past 20 years, the
speed of integer optimization

00:02:13.680 --> 00:02:18.180
solvers has increased
by a factor of 250,000,

00:02:18.180 --> 00:02:22.370
which doesn't even include the
increasing speed of computers.

00:02:22.370 --> 00:02:26.000
Assuming a modest
machine speedup of 1,000,

00:02:26.000 --> 00:02:27.760
this means that a
problem that can

00:02:27.760 --> 00:02:31.800
be solved in one second
today, took seven years

00:02:31.800 --> 00:02:34.470
to solve 20 years ago.

00:02:34.470 --> 00:02:36.470
Because of this
increase in speed

00:02:36.470 --> 00:02:39.260
were able to solve much
larger and more complicated

00:02:39.260 --> 00:02:45.130
optimization problems today,
than just a few years ago.

00:02:45.130 --> 00:02:48.020
So how about the sports
scheduling problem?

00:02:48.020 --> 00:02:52.000
When the Sports Scheduling
Group was started in 1996,

00:02:52.000 --> 00:02:56.210
integer optimization software
was too slow to be useful.

00:02:56.210 --> 00:02:58.490
Now, they can use
powerful solvers

00:02:58.490 --> 00:03:01.080
to generate sports schedules.

00:03:01.080 --> 00:03:03.150
Even with these
solvers, it can take

00:03:03.150 --> 00:03:06.620
months to make the major
league baseball schedule.

00:03:06.620 --> 00:03:10.180
This is due to several reasons,
including the enormous list

00:03:10.180 --> 00:03:12.090
of ever changing
constraints that they

00:03:12.090 --> 00:03:15.920
have to account for, the
need to define priorities

00:03:15.920 --> 00:03:19.640
on the constraints to find a
feasible solution, and the fact

00:03:19.640 --> 00:03:23.910
that it takes several iterations
to get a good schedule.

00:03:23.910 --> 00:03:26.290
But even with these
challenges, analytics

00:03:26.290 --> 00:03:29.760
offers a significant edge
in sports scheduling.

00:03:29.760 --> 00:03:32.500
The use of optimization
allows for the addition

00:03:32.500 --> 00:03:35.730
of new constraints
or schedule changes.

00:03:35.730 --> 00:03:38.160
A new schedule can
easily be generated

00:03:38.160 --> 00:03:41.920
based on an updated
requirement or request.

00:03:41.920 --> 00:03:45.570
Now, all professional sports
and most college sports,

00:03:45.570 --> 00:03:49.400
construct their schedules
using optimization.

00:03:49.400 --> 00:03:52.520
In this lecture, we've seen
one powerful use of integer

00:03:52.520 --> 00:03:55.740
optimization, but this
method has a huge number

00:03:55.740 --> 00:03:57.820
of applications,
which you'll see

00:03:57.820 --> 00:04:01.370
more of in the second
lecture, The Recitation,

00:04:01.370 --> 00:04:03.810
and in the homework assignment.