Course Match - The University of Chicago Booth School of Business

Course Match: A Large-Scale Implementation
of Approximate Competitive Equilibrium from Equal Incomes
for Combinatorial Allocation⇤
Eric Budish†
Gérard P. Cachon‡
Judd Kessler§
Abraham Othman¶
July 23, 2015
Abstract
Combinatorial allocation involves assigning bundles of items to agents when the use of money
is not allowed. Course allocation is one common application of combinatorial allocation, in which
the bundles are schedules of courses and the assignees are students. Existing mechanisms used
in practice have been shown to have serious flaws, which lead to allocations that are inefficient,
unfair, or both. A new mechanism proposed by Budish [2011] is attractive in theory, but
has several features that limit its feasibility for practice: reporting complexity, computational
complexity, and approximations that can lead to violations of capacity constraints. This paper
reports on the design and implementation of a new course allocation mechanism, Course Match,
that enhances the Budish [2011] mechanism in various ways to make it suitable for practice. To
find allocations, Course Match performs a massive parallel heuristic search that solves billions
of Mixed-Integer Programs to output an approximate competitive equilibrium in a fake-money
economy for courses. Quantitative summary statistics for two semesters of full-scale use at a
large business school (Wharton, which has about 1,700 students and up to 350 courses in each
semester) demonstrate that Course Match is both fair and efficient, a finding reinforced by
student surveys showing large gains in satisfaction and perceived fairness.
⇤
Acknowledgments: A committee of faculty (Sigal Barsade, Gérard Cachon - chair, Dean Foster, Robert
Holthausen, and Jagmohan Raju), sta↵ (Peggy Bishop-Lane, Frank Devecchis, Stephan Dieckmann, Howie Kaufold, Alec Lamon, Jason Lehman, Nathan Mische, John Piotrowski, and Naomi Tschoegl) and students (Pardon
Makumbe, Paul Nolen, Kathryn Scarborough, and Jessica Stoller) were responsible for the initial design and development of Course Match. Disclosure: the market design theory in Budish [2011] and computational procedure in
Othman et al. [2010] are in the public domain. The software implementation of Course Match was funded by and
is owned by Wharton. If Course Match is commercialized, then royalties could accrue to Othman and to a market
design research lab overseen by Budish. The Wharton administration had no right of prior review of the present
paper.
†
[email protected], University of Chicago
‡
[email protected], University of Pennsylvania
§
[email protected], University of Pennsylvania
¶
[email protected], University of Pennsylvania
1
1
Introduction
There are numerous settings in which resources must be allocated but markets with money are
not permitted. Prominent examples include assigning kidneys to donors (Roth et al. [2004, 2005]),
medical residents to hospitals (Roth and Peranson [1999], Roth [2002]), or students to public
schools (Abdulkadiroglu and Sönmez [2003]). In many of these applications, each participant seeks
one item: one kidney, one residency position, or one school. However, there are also settings in
which the allocation problem is combinatoric because each participant requires a bundle of items,
which increases the economic and computational complexity of the allocation problem. Workforce
scheduling is a prime example; airline crews have preferences over a bundle of flights that they
might be assigned, and nurses have preferences over bundles of shifts they might work. Other
examples include the allocation of players to sports teams, shared scientific resources to users, and
airport takeo↵-and-landing slots to airlines.
The combinatorial allocation problem also arises in the context of student course scheduling,
i.e., the course allocation problem. Each student generally wants more than one course, students
have heterogeneous preferences across courses, students cannot attend courses that meet at the
same time (or courses that they have already taken or lack prerequisites for), and courses have
capacity limits, thereby making the seats in some courses scarce resources. This paper describes
a new mechanism to solve the course allocation problem, called Course Match, and reports on its
successful implementation at the Wharton School at the University of Pennsylvania (“Wharton”),
a large business school with approximately 1,700 students and up to 350 courses in each semester.
In addition to quantitative measures of the quality of the Course Match solution, we are able
to confirm directly, with actual “before and after” survey data from Wharton students, real and
substantial improvement in satisfaction and perceived fairness.
Roughly speaking, Course Match works as follows. Shortly before a semester begins, students
report their preferences across the set of o↵ered courses and each student is given an endowment
of fake money. Next, using the reported preferences, endowments, course capacities, and course
timetable, Course Match conducts a massive parallel heuristic search that solves billions of MixedInteger Programs to find a price for each course such that: (i) each student receives the best feasible
schedule they can a↵ord given their reported preferences, their endowment, and the course prices;
and (ii) all course capacity constraints are satisfied.
The primary goal of a course allocation mechanism is to maximize student satisfaction. To
achieve this, market designers often focus on two criteria: efficiency and fairness. In an efficient
course allocation, it is not possible to make some students better o↵ while leaving all other students
equally well o↵. Fairness can be defined in a number of ways, but roughly speaking, a fair course
allocation avoids outcomes in which some students greatly envy the course schedule of others, such
as when some students have all of their most preferred courses while other students have none.
Fairness is desirable in the context of course allocation because schools generally want to provide
students with equal access to all courses. Although not generally emphasized in the theoretical
literature, the successful implementation of an allocation mechanism also depends on its ease-of2
use. For example, the mechanism should not requires students to complete an overly complex
decision task nor require an excessive amount of time.
Most existing course allocation mechanisms — including both those described by theory and
implemented in practice — can deliver either fair or efficient outcomes but not both, and many
deliver neither. For example, in the serial dictatorship mechanism emphasized in some of the
extant matching theory, students select their entire bundle of courses sequentially, generally with
a random sequence. The lucky first student is assured her best schedule while the unlucky last
student probably is relegated to select seats from a limited set of the least popular courses. Hence,
while this mechanism is efficient, it scores poorly in terms of fairness. The draft mechanism used
by Harvard Business School, in which students take turns choosing courses one-at-a-time rather
than all-at-once (as in the drafting of professional sports teams), improves on the fairness of the
dictatorship but has efficiency problems because of incentives to misreport preferences strategically
(Budish and Cantillon [2012]). Auctions are used by a number of schools, including Wharton before
the implementation of Course Match. With an auction, students are endowed with fake money and
then they bid, generally over multiple rounds, for course seats. Although auctions can be both
efficient and fair in many markets that use real money (e.g., selling a painting or allocating wireless
spectrum), it has been shown that auctions with fake money have incentives problems that do not
arise when the money is real, ultimately leading to allocations that are neither efficient nor fair
(Sönmez and Ünver [2010], Krishna and Ünver [2008]). Furthermore, and even more importantly
for our purposes, students reported low satisfaction with Wharton’s auction mechanism.
Budish [2011] proposes a new mechanism for the combinatorial allocation problem, called the
Approximate Competitive Equilibrium from Equal Incomes mechanism (A-CEEI), and demonstrates that it is has desirable properties of efficiency, fairness, and incentives. However, there are
three major concerns with respect to its implementation in practice. First, because of the nature
of the approximation errors, it may (and is likely to) violate course capacity constraints. This
renders the solution infeasible for practice — a school may be required to abide strictly by capacity
constraints. Second, the computational procedure in Othman et al. [2010] only finds solutions to
the A-CEEI mechanism for “small,” simulated problems, leaving open the question of whether
it can be solved for an actual problem of Wharton’s size in sufficient time. Third, the A-CEEI
mechanism assumes students are able to report their preferences accurately. If a student is unable
to report her preferences correctly, then A-CEEI would solve the “wrong” problem, which could
lead to unsatisfied students. Therefore, it is unknown if A-CEEI is sufficiently robust to errors in
reported preferences. Course Match addresses each of these issues. First, it adds two additional
stages to the Budish [2011] algorithm so that a high-quality, feasible solution is constructed. Second, Course Match implements a software architecture that allows it to scale sufficiently to solve
a Wharton-sized problem in a reasonable amount of time. Third, Course Match includes a rich
preference reporting language and user interface to assist students in reporting preferences.
3
2
The Course Allocation Problem
The course allocation problem is to assign a set of courses to each student while satisfying capacity
constraints and maximizing some notion of overall well-being. To be specific, there is a set of M
courses, indexed by j, with integer capacities (the supply) (qj )M
j=1 , and a set of N students. The
capacity, qj , is referred to as the “target capacity” for course j, or, for short, just the “capacity,”
because it is the desired (or target) maximum enrollment for the course. In practice, there also
exists a maximum capacity, qˆj , for each course, such that a course allocation is not feasible, i.e., it
cannot be implemented, if there are more than qˆj students in a course, where clearly qj  qˆj . For
example, a course could have a desired maximum enrollment of 36 students, qj = 36, but meet in a
room that has 40 seats. The school has the option to set qˆj = 36, meaning that absolutely no more
than 36 students can be enrolled in this course for a feasible solution. However, the school might
also choose qˆj = 40, meaning that it is strongly preferred that there be no more than 36 students
in the course, but a solution is feasible as long as there are no more than 40 students enrolled.
Earlier work on the course allocation problem assumes qj = qˆj , but for practical implementation,
as discussed later, it is important to consider qj < qˆj as an option. That said, Course Match can
solve problems with qj = qˆj .
Each student i has a set
i
✓ 2M of permissible course bundles, with each bundle containing at
most k  M courses. In the Wharton application, students are allowed to choose their own k, but,
for ease of exposition, we assume, without loss of generality, that there is a common k. The set
i
encodes both scheduling constraints (e.g., courses that meet at the same time) and any constraints
specific to student i (e.g., prerequisites).
3
The A-CEEI Mechanism and Implementation Concerns
The A-CEEI mechanism has the following four steps. First, students report their preferences over
schedules of courses. The theory assumes that student i reports her complete ordinal preferences
over permissible schedules, denoted 4i . Second, the mechanism randomly assigns to each student
i a budget
i
of fake money (or “tokens”), which they use to purchase courses. The theory allows
for budgets to be approximately, but not exactly, equal; budgets can be arbitrarily close together
but no two budgets can be exactly the same. Third, a computer finds approximate market-clearing
prices, i.e., a price p⇤j for each course j such that when each student i purchases the bundle of
courses x⇤i that she likes best out of all schedules she can a↵ord, the market approximately clears
(we describe the nature of the approximation in detail below). Fourth, each student is allocated
her most preferred a↵ordable bundle given the preferences, budgets, and prices, i.e., student i is
assigned the bundle x⇤i which solves the problem
2
x⇤i = arg max 4xi 2
4i
i
:
X
j
4
xij p⇤j 
3
i5 .
(1)
Note that the preference language we design allows this problem to be represented as a MixedInteger Program (MIP).
Budish [2011] reports that A-CEEI has several attractive properties for large problems and
approximately so for finite sized problems. First, it is Pareto efficient — no student can be made
better o↵ without making another student worse o↵. This property arises because the mechanism
finds an allocation that is (approximately) a competitive equilibrium. Second, the allocation from
A-CEEI satisfies a desirable fairness property. To explain, a mechanism is envy free if there do
not exist two di↵erent students, i and i0 , such that student i prefers student i0 ’s schedule to her
own. Although A-CEEI cannot guarantee an envy free solution (indeed, no mechanism can), it
does yield a solution that is “envy bounded by a single good,” meaning that if student i envies
student i0 ’s schedule, then it is possible to remove a single course from student i0 ’s schedule to
eliminate the envy. Hence, the degree of envy with A-CEEI is limited; this property arises from
the fact that the budgets are approximately, but not exactly, equal. (Using exactly equal budgets
would be more attractive for fairness but could make it impossible to find market-clearing prices.)
Finally, A-CEEI is strategy-proof, which means that it is in a student’s best interest to report
his or her true preferences, no matter how other students choose to report their preferences. This
comes from the fact that student i’s allocation x⇤i is her most-preferred bundle given her budget
and the prices, and the student cannot a↵ect either her budget (which is assigned randomly) or the
prices (which depend on the preferences of all students, so in a large market prices are exogenous
from the perspective of each individual student). As a result, a student does not need to consider
the behavior or preferences of other students, which greatly simplifies the student’s decision task,
which in turn can help to increase satisfaction with the mechanism. Furthermore, given that the
institution can assume preferences are reported truthfully, this mechanism provides useful data to
better understand students, such as which courses, timeslots, or instructors they find desirable.
A-CEEI significantly improves on other mechanisms described in theory and used in practice.
However, as noted above, there are three important concerns with the actual implementation of ACEEI: (i) it is not guaranteed to find a price vector and course allocation that satisfies all capacity
constraints, (ii) it may not find a solution quickly enough for a real-world sized problem, and (iii)
it finds a solution that maximizes reported preferences, but is not guaranteed to find a desirable
solution if students misreport or are unable to report their true preferences.
To understand the first concern with A-CEEI (feasibility), let zj be the clearing error for course
j with price pj :
zj =
( P
⇤
ij
i xh⇣
max
qj
P ⇤
i xij
⌘
qj , 0
i
if p⇤j > 0;
if p⇤j = 0.
If the course is assigned a positive price, then the clearing error is the di↵erence between the
number of students assigned to the course (i.e., total demand) and the course’s capacity. A course
P
is over-subscribed if its demand exceeds its capacity, i x⇤ij > qj , and it is under-subscribed if its
P
demand is less than its capacity, i x⇤ij < qj , and its price is strictly positive. If a course’s price
P
is zero, i.e., p⇤j = 0, then it can have i x⇤ij < qj without counting as clearing error, as is standard
5
in the definition of competitive equilibrium. A price vector is said to clear the market (i.e., it is a
clearing price vector) if it has no clearing error, i.e., ↵ = 0, where
↵⌘
sX
zj2 .
j
Unfortunately, a price vector with zero error may not exist, and has been shown not to exist
for some problems. However, Budish [2011] shows that as long as no two students have precisely
the same budget (i.e., there do not exist students i and j, i 6= j, such that i = j ), there exists a
p
price vector with market-clearing error of no more than ↵ = kM/2. Students generally take 4-5
courses per semester, but some take as many as 8, so for the purpose of the worst-case bound say
k = 8 and say an MBA program o↵ers 300 courses so M = 300. In that case, the bound is achieved
⇣p
⌘2
with a solution that has a squared clearing error no greater than 1, 200 =
8 ⇥ 300/2 : e.g.,
all 300 courses with a clearing error of 2 seats; or 48 courses with a clearing error of 5 seats and
252 courses with no clearing error; etcetera. As course capacities are not included in the bound,
p
kM/2, the clearing error as a fraction of the total number of available seats converges to zero
quite fast as total capacity increases. But this is not sufficient for the solution to be considered
feasible as is.
Clearing error due to under-subscription is not desirable (because a seat in a popular course is
left unassigned), but this error is viewed as less problematic than over-subscription error. In particP
ular, Wharton simply cannot implement a solution in which, due to over-subscription, i x⇤ij > qˆj .
The second concern with A-CEEI (computational e↵ort) is primarily due to the complexity
of the task. Recent work by Othman, Papadimitriou, and Rubinstein [2014] has proved that the
combinatorial allocation problem is PPAD-complete, even with access to an oracle that can solve
the student demand problem in constant time. PPAD is a complexity class that was originally
developed and motivated in Papadimitriou [1994]; briefly, it represents search problems in which
an algorithm can only follow successive steps down a path of indeterminate length. Many other
search problems are PPAD-complete, including solving for Nash Equilibria, finding many kinds of
market equilibria, finding repeated game equilibria, finding Brouwer fixed points, and detecting a
completely colored node in the Sperner’s lemma setting [Papadimitriou, 1994, Abbott et al., 2005,
Codenotti et al., 2006, Huang and Teng, 2007, Borgs et al., 2008, Chen and Teng, 2009, Daskalakis
et al., 2009, Kintali et al., 2009, Pálvölgyi, 2009, Chen and Teng, 2011, Vazirani and Yannakakis,
2011, Chen et al., 2013, Rubinstein, 2014]. An algorithm that could solve course allocation to
the theoretical bound in polynomial time would also be able to solve all of these problems in
polynomial time, too. However, the consensus among computer scientists is that, just like for the
better known complexity class NP, there do not exist polynomial-time worst-case algorithms to
solve PPAD problems [Papadimitriou, 1994, Daskalakis et al., 2009].
Although the theoretical results on computation e↵ort are not encouraging, Othman et al.
[2010] report on a Tabu-search heuristic algorithm that finds, with reasonable e↵ort, price vectors that yield clearing error even lower than the bound in simulated problems. That algorithm
6
examines many candidate price vectors, and uses the resulting degree of over-subscription and
under-subscription to guide the selection of additional price vectors. However, a real-sized problem
is considerably larger than the problems solved in Othman et al. [2010].
The third concern with A-CEEI (preference reporting) is not discussed in the theoretical literature because it is simply assumed that the preference reporting language is sufficiently rich to
capture a student’s full set of preferences and students are able to correctly “speak” this language
(i.e., they do not make errors reporting their preferences). These assumptions are unlikely to hold
in practice. A real-sized problem may have 300 courses o↵ered by 150 professors in 14 time slots,
meaning that by necessity a real-world preference reporting language must be simpler than asking
students to rank complete schedules ordinally from most- to least-preferred. Any simplification risks
preventing students from reporting their actual preferences if their preferences cannot be expressed
using the language provided. Furthermore, given the size of real problems, even a student whose
preferences in principle can be expressed using the provided language may find it non-trivial to do
so, perhaps especially if the provided language is rich. Hence, while A-CEEI might yield a solution
that maximizes each student’s reported preference given their budget, it might not maximize their
actual preference, which jeopardizes student satisfaction (i.e., a student may blame themselves for
the error, or, quite possibly, they could blame the mechanism).
4
The Course Match Solution
Shortly before a semester begins, Course Match elicits preferences from students. Course Match
also requires a number of other inputs, including: (i) each student’s budget, (ii) each course’s
target, qj , and maximum capacity, q̂j , (iii) the meeting times for each course (a student cannot be
registered for two courses that have overlapping meeting times), and (iv) the set of courses each
student has already taken (because they cannot take the same course twice). Next, Course Match
uses a computational engine to derive a course allocation that is reported to students about a week
before classes start. A few days before classes begin, a drop/add period opens in which students, on
a first-come-first serve basis, can drop a course, add a course with an open seat, or add themselves
to a course waiting list that automatically advances if seats become available in the course. The
primary purpose of the drop/add period is to enable students to make adjustments to their schedule
in case their preferences change, especially once they start taking classes.
As described later in this section, Course Match implements a refinement of the A-CEEI mechanism. Consequently, based on the theoretical properties of A-CEEI, student budgets are set equal
to a base budget plus a small idiosyncratic tie-breaking subsidy. At Wharton, the MBA students
are divided into several groups: all second-year students are one group and the first-year students
are divided into groups based on the semester and the number of core courses they have tested out
of. (The Wharton MBA is a two-year program.) Each of the Ng students in group g is randomly assigned to a distinct tie-breaking budget surplus in {0.1, 0.2, . . . , Ng /10}. This amount is sufficiently
small that even the largest tie-breaking budget surplus is unable to increase a student’s budget
7
above the base budget of the next higher group — with 800 second-year students, the maximum
tie-breaker is 80, which is 1.6% of their base budget of 5,000. Unused budgets from one semester do
not carry over to subsequent semesters because allowing so would introduce incentives to misreport
preferences and increase decision complexity (students would have to think about how much of
their budget they want to reserve for future use).
The remainder of this section is divided into three parts. The first part describes the Course
Match preference language used to elicit preferences from students. The second part details the
computational engine used to derive an implementable course allocation (i.e., a solution in which
none of the maximum capacity constraints are violated) for a Wharton-sized problem (computational performance is covered in Section 5). The third part discusses alternative approaches
considered, and rejected, for addressing under-subscription and over-subscription.
4.1
Preference Elicitation
Although the theory of A-CEEI assumes that students report a complete ordering i over their
set of valid schedules
i,
in practice it is not possible for students to enumerate their preferences
fully because the cardinality of
i
is large. Hence, Course Match requires a simple preference
language that students can understand and use to report their preferences with reasonable accuracy.
Furthermore, the language must result in preferences that can be solved quickly and reliably by
a computer. For our purposes, this means that they must be translatable into a MIP that finds
a student’s most preferred schedule at a given price vector (i.e., their most preferred a↵ordable
bundle). Course Match’s elicitation procedure of translating complex human utilities into MIPs
is similar to the process used in practice to elicit preferences in combinatorial auctions [Sandholm
and Boutilier, 2006, Sandholm, 2007].
The reporting language in Course Match allows students to report a (cardinal) utility value for
each course as well as for pairs of courses (i.e., “extra” utility value, positive or negative, associated
with getting the two courses together in a schedule). Utilities for both individual courses and
course pairs are weighted by credit units (CUs), the measure of how much a course counts towards
a Wharton degree. Most courses are worth either 1.0 or 0.5 CUs. The student’s utility for a
schedule is then taken to be the (CU-weighted) sum of the student’s utilities for the courses in
that schedule, plus (or minus) any reported utilities for course pairs in that schedule. Schedules
can be rank-ordered by their utilities to determine the student’s best schedule given a price vector
and their budget, i.e., to solve (1). Observe that this language transforms problem (1) into a MIP.
Following are more details on the data student input:
Individual Course Utilities Students report their utility (i.e., preference) for each course on a
0 to 100 integer scale: 0 means the student does not want the course and 100 means the
course is the most preferred. While it is not strictly necessary to place a cap on the utility for
each course, the cap provides an intuitive focal point for students. Given that the utility of a
schedule is the CU weighted sum of the reported utilities, a 0.5 CU course can contribute at
most 50 to the utility of a schedule, even though the student can still report utilities up to
8
100. This is done so that the sum of the maximum utilities for two 0.5 CU courses cannot be
greater than the sum of the maximum utility for a 1.0 CU course. It was found that students
preferred this approach over summing utilities without adjusting for credit units. Figure 1
displays a screen shot of the student preference reporting interface.
Figure 1: Main utility entry interface students use to input their preferences
Notes: The first column lists the course number (when a course is cross-listed in multiple departments, the student can choose which department she wants to take it from in the fifth column,
e.g., to satisfy requirements for a major). The second column provides the course name and other
course details. The third column lists the number of CUs of the course. The fourth column indicates whether the course is the full semester or whether it meets for only the first or second quarter
of the semester (a semester is made of two quarters). The fifth column is where students enter their
utilities. All inputs are defaulted at 0 and can be set to any integer between 0 and 100. The “My
Utility Distribution” tab shows the course numbers ranked by the student’s reported utilities.
Pairwise Adjustments Students can select any pair of courses and apply either a positive or
negative utility adjustment to the pair between -200 and 200. This allows students to express
the preference that taking two courses is either more desirable than the sum of the courses
9
individually (with a positive adjustment) or taking the two courses is less desirable than the
sum of the courses individually (with a negative adjustment). For instance, if a student really
wants to take an entrepreneurship and a venture capital course together, then the student
can assign a high utility to each of them individually and a positive adjustment for the pair
to indicate that the bundle is particularly desirable (worth more than the sum of the two
individual utilities). Or, if the student wants to take either the entrepreneurship class or the
venture capital class, but not both, the student can assign a negative adjustment to lower the
value of the bundle in the schedule. This adjustment can be chosen so that the bundle’s utility
is non-positive, insuring that the bundle is never selected. While it is not necessary to have
an upper bound of 200 for adjustments, it was found that unbounded adjustments created
confusion with some students in preliminary tests. In particular, some students thought they
could use adjustments to circumvent the upper bound on the utility for each course without
realizing that utilities are relative, so the absolute scale doesn’t matter. The upper bound on
adjustments avoids this misunderstanding by a few students while not significantly limiting
the ability of students to report their preferences. Allowing for adjustments on sets of 3+
classes was discussed but rejected; ultimately, the potential benefits from increased preference
expression were judged not to be worth the additional complexity. Figure 2 shows the utility
entry page with the “Adjustment” tab shown on the right hand side.
Capacity Constraints Students can specify the maximum number of credit units they wish to
take in a semester.
Although students are able to think about their preferences over courses and pairs of courses
intuitively, their ultimate preference is over the course schedule they receive. However, even ignoring
the price vector and budgets, it is non-trivial for a student to map their reported preferences to a
rank order over permissible schedules. Hence, the user interface also provides students with a way to
view their “top schedules” given their reported utilities, as shown in Figure 3. This feature enables
students to see, using a calendar view, the rank order of their schedules and the di↵erences in utility
values across schedules. For example, in Figure 3 there are relatively large gaps in utility between
the first, second, and third schedules, but a small gap between the third and fourth. Students are
told that they will receive the highest ranked schedule that they can a↵ord once course prices are
determined. Consequently, if they do not like the ranking of schedules as seen through this feature,
they can refine their inputted course values and adjustments to better reflect their preferences over
schedules.
10
Figure 2: Alternate tab of utility placement screen showing interface for adjusting utilities placed
on combinations of courses
Notes: The right panel illustrates pairwise adjustments. For the left panel see the notes to the
previous figure. The lock in the fifth column indicates that the student is ineligible to take the
course, e.g., because they have already taken it or lack a prerequisite.
11
Figure 3: A student’s top schedules are generated from their reported preferences and shown in
a separate step before the input is saved
12
4.2
Computational Engine
Course Match finds a solution to the course allocation problem with an algorithm divided into
three stages. Stage 1, Price Vector Search, uses an enhanced version of the Othman et al. [2010]
computational procedure to find a price vector p⇤ that is an approximate competitive equilibrium
in the sense defined by Budish [2011]. This allocation may have both over-subscription and undersubscription errors. Stage 2, Eliminate Over-subscription, modifies the prices from Stage 1 so
as to eliminate all over-subscription errors that cause violations of the strict capacity constraints
(the q̂j capacities); at this stage, the solution is feasible. Stage 3, Reduce Under-subscription,
then attempts to reduce, to the extent possible, any under-subscription errors, without too much
compromise of fairness considerations.
4.2.1
Stage 1: Price Vector Search
Stage 1 in Course Match computes the A-CEEI mechanism. To obtain a solution with minimal price
clearing error below the theoretical bound, it follows a Tabu search heuristic originally developed
in Othman et al. [2010]. The pseudocode for this stage is displayed in Algorithm 1.
The heuristic search is performed over the price space and is composed of a series of search starts
until the allotted time for searching is reached (e.g., 48 hours). A search start proceeds through a
series of steps, each with a candidate price vector, the first of which is a randomly generated price
vector (line 3). With each step, a set of neighbor price vectors is generated (line 8). Each neighbor
is an intuitive permutation of the candidate price vector. Neighbors that yield a course allocation
identical to one of the previous candidate price vectors are dropped. This “Tabu” component of
the search prevents visiting the same e↵ective spot in the search space multiple times (i.e., even
if two price vectors are not identical, if they generate identical course allocations, then they are
e↵ectively identical). The remaining neighbor with the lowest clearing error, based on the target
capacities qj , is selected as the new candidate (line 20), even if its clearing error is greater than
the clearing error of the previous candidate price vector. This allows the search process to explore
other regions of what is presumed to be a rugged landscape. However, the search start terminates
if there is no improvement in the best clearing error across five consecutive steps (i.e., candidate
price vectors) or if the allotted time is reached. If a search start terminates and time remains,
another search start is initiated. Search starts are independent of each other in the sense that they
might adopt equivalent price vectors, i.e., the Tabu list of visited price vectors is cleared with each
search start (line 5).
As in Othman et al. [2010], neighbors are composed of the union of two distinct sets of neighborhoods:
Gradient Neighbors In a gradient neighbor, the price of every course is adjusted proportionally
to its number of seats of under-subscription or over-subscription. So a course that is oversubscribed by four seats will see its price raised twice as much as a course over-subscribed by
two seats, and the neighborhood is formed by considering a number of potential step sizes
13
Algorithm 1 Heuristic search algorithm through price space, originally developed in Othman et al.
[2010].
Input: ¯ the maximum student budget, d : p 7! ZM course demands at a price vector, N : p 7!
(p̃k )K
k=1 function that generates the set of neighbors of a price vector sorted by clearing error
↵2 ascending, t overall time limit
Output: p⇤ price vector corresponding to approximate competitive equilibrium with lowest clearing error.
1: besterror
1
. besterror tracks the best error found over every search start
2: repeat
M
3:
p
U [0, 1] · ¯ j=1
. Start the search from a random, reasonable price vector
4:
searcherror
↵(d(p))
. searcherror tracks the best error found in this search start
5:
⌧
;
. ⌧ is the tabu list
6:
c
0
. c tracks the number of steps taken without improving error
7:
while c < 5 do
. Restart the search if we haven’t improved our error in five steps
8:
N
N (p)
. This requires evaluating the clearing error of each neighbor
9:
foundnextstep
false
10:
repeat
11:
p̃
N.pop()
. Remove the front of the neighbor list
12:
d
d(p̃)
13:
if d 62 ⌧ then
. If p̃ does not induce demands found in our tabu list, it becomes
the next step in our search
14:
foundnextstep
true
15:
end if
16:
until foundnextstep or N.empty()
17:
if N.empty() then
18:
c
5
. All neighbors are in the Tabu list; force a restart
19:
else
. p̃ has the next step of the search
20:
p
p̃
21:
⌧.append(d)
22:
currenterror
↵2 (d)
23:
if currenterror < searcherror then
24:
searcherror
currenterror
25:
c
0
. We improved our search solution, so reset the step counter
26:
else
. We didn’t improve our solution from this search start, so add to the step
counter
27:
c
c+1
28:
end if
29:
if currenterror < besterror then
30:
besterror
currenterror
31:
p⇤
p
32:
end if
33:
end if
34:
end while
35: until current time > t
14
along this gradient vector (we used up to 12). These steps can be thought of as a tâtonnement
performed by a Walrasian auctioneer.
Individual Adjustment Neighbors Each neighbor of this type is the product of changing the
price of a small set of courses. Let C be the number of under or over-subscribed courses. To
limit the number of neighbors, min{C, 40} neighbors are created. If C  40, then each of the
C neighbors adjusts the price of a single course. If 40 < C, then the C courses are evenly
(and randomly) assigned to 40 neighbors. With each neighbor, the price of an over-subscribed
course slated for adjustment is increased to reduce its demand by exactly one student, while
the price of an under-subscribed course slated for adjustment is dropped to zero.
There exists a time constraint in Course Match because both administrators and students expect
to see schedules for a semester produced within a few days of submitting preferences. However,
an enormous amount of computational work is required to find an approximate equilibrium in the
heuristic search. To give a sense of the computational e↵ort required in a Wharton-sized problem,
evaluating the clearing error at each candidate price vector requires solving approximately 1,700
MIPs (one for each student), each iteration requires evaluating approximately 50 neighbors, a
typical search start may take 100 steps (i.e., candidate price vectors), and an entire Course Match
run may perform 500 search starts. So in total, solving a Wharton-sized problem requires computing
solutions to about 4.25 billion MIPs. If it takes one millisecond to solve each MIP — an optimistic
assumption in practice — finding an approximate competitive equilibrium would still take about
seven weeks.
To reduce the time needed to find a solution in Stage 1, it is possible to parallelize some of the
work. The natural point to parallelize is the evaluation of each of the neighbor price vectors with
each step of a search start because given a price vector, each student’s MIP is independent of all
the other MIPs that need to be solved. Thus, at this step approximately 85,000 independent MIPs
need to be solved (1,700 MIPs per price vector and 50 price vectors). In the software architecture
described in Othman et al. [2010], those MIPs are solved on a single compute server consisting of
distinct cores. In Course Match each compute server has 32 cores. About 3 cores are needed to
perform non-MIP solving tasks, leaving about 29 cores dedicated to solving MIPs. Hence, with
each search step those 29 cores can simultaneously solve MIPs, with each assigned approximately
2,931 MIPs (85,000 / 29). This approach does not scale linearly, but Othman et al. [2010] show
scaling at 90% efficiency on multiple cores of the same compute server, i.e., using n cores is 0.9n
times faster than one core. Nevertheless, when we ran computational experiments to evaluate this
single-server architecture, we found significant potential gains in solution quality from using more
computational power than a single server could provide in the 48 hours allotted. (A single compute
server can complete about 60 search starts in 48 hours, and we found in our experiments that
market-clearing error continued to go down with additional search well beyond 60 search starts.)
We explored two ways to add additional computational capacity to improve on the performance
of the Othman et al. [2010] architecture. The first, which we call the integrated architecture,
extends Othman et al. [2010] in an intuitive way from one compute server to a cluster of compute
15
servers — maintain a few cores to perform non-MIP solving tasks and dedicate the remaining
cores, across di↵erent compute servers, to solve MIPs. With the integrated architecture, all of
the cores within the cluster are working on the same search step of the same search start, i.e., at
any given moment, the cluster is working on a single search start. The second approach, which
we call the independent architecture, operates multiple compute servers independently within a
cluster. In this case, a cluster of n compute servers works on n di↵erent and independent search
starts at the same time. Furthermore, each compute server must dedicate several cores to nonMIP solving tasks, leaving fewer cores within the cluster to work on MIPs relative to the integrated
architecture. However, with the independent architecture there is no need for communication across
compute servers because they operate independently. In contrast, with the integrated architecture,
communication must occur across compute servers because they are working on the same search
start.
Figure 4: Comparison of horizontal scalability between running a distinct search on each compute
server (an independent architecture) versus running a single search using all compute servers (an
integrated architecture)
20
Independent Architecture
Integrated Architecture
18
Relative Speedup
16
14
12
10
8
6
4
2
2
4
6
8
10
12
14
16
Number of Compute Servers
The additional communication overhead with the integrated architecture is substantial and
significantly decreases the ability to use additional compute servers to speed up the process. To
illustrate, we compared both the integrated and independent architectures by performing the Course
Match search for a half hour on each of a progressively increasing number of Amazon cc2.8xlarge
compute servers. Figure 4 shows the relative speedup (measured in terms of the number of MIPs
solved in a half hour) using each approach. The independent architecture is able to achieve a
linear speedup in the number of compute servers used — it runs 16.0 times faster when 16 compute
servers are used. In contrast, the integrated architecture appears to plateau at 3.8 times the speed
16
of a single compute server when using eight or more servers. This finding is consistent with other
results on the relative performance of increasing the number of compute servers when parallelizing
complex algorithms (e.g., Sun and Rover [1994]). Thus, Course Match adopts the independent
architecture to achieve the required computational speed.
4.2.2
Stage 2: Eliminate Over-subscription
The heuristic search in Stage 1 outputs a price vector that has market-clearing error below the theoretical bound. However, this error may consist of both over-subscription and under-subscription,
and over-subscription can cause a solution not to be feasible. That is, it is possible that the price
vector from Stage 1 results in an allocation in which some course’s maximum capacity constraint q̂j
is violated. The goal of Stage 2 is to transform the Stage 1 solution into one that does not violate
any maximum capacity constraint, i.e., a solution that can be implemented in practice.
In the context of the Stage 2 algorithm, a course is said to be over-subscribed if it is assigned
strictly more than q̂j students. To eliminate over-subscription, Stage 2 relies on the property that
starting from any given price vector, demand for any single course j is monotonically decreasing in
course j’s price. To be specific, Stage 2 iteratively identifies the most over-subscribed course and
then raises its price to eliminate half of its over-subscription. It finds the necessary price increase
via a binary search. Pseudocode for Stage 2 is given below as Algorithm 2.
Algorithm 2 Iterative over-subscription elimination algorithm, reducing by half the excess demand
of the most over-subscribed course with each pass.
Input: p⇤ heuristic search solution price vector from Algorithm 1, p̄ scalar price greater than any
ˆ
budget, ✏ smaller than budget di↵erences, excess demand function d(p)
that maps a price vector
to the demand of a course beyond its maximum capacity.
Output: Altered p⇤ without over-subscription
1: j 0
arg maxj dˆj (p⇤ )
. j 0 is the most over-subscribed course
⇤
2: while dˆj 0 (p ) > 0 do
3:
d⇤
bdˆj 0 (p⇤ )/2c . Perform binary search on the price of course j 0 until over-subscription
equals (at most) d⇤ .
4:
pl
p⇤j 0
5:
ph
p̄
6:
repeat . Our target price is always in the interval [pl , ph ], which we progressively shrink
in half in each iteration of this loop
7:
p⇤j 0
(pl + ph )/2
8:
if dˆj 0 (p⇤ ) d⇤ then
9:
10:
11:
12:
13:
14:
15:
16:
pl
p⇤j 0
else
ph
p⇤j 0
end if
until ph pl < ✏
p⇤j 0
ph
0
j
arg maxj dˆj (p⇤ )
. Set to the higher price to be sure over-subscription is at most d⇤
. Find the most over-subscribed course with the new prices
end while
17
Although a course’s over-subscription always decreases when its price is raised, its oversubscription can increase again at a later step in the algorithm when another course’s price is
increased. Nevertheless, because prices are only increased and there exists a vector of suitably high
prices at which no courses are over-subscribed, Algorithm 2 eventually terminates with a solution
that has no over-subscription.
The choice to eliminate half of over-subscription with each iteration is somewhat arbitrary but
was selected to balance the runtime and efficiency concerns that emerged from the choices at each
extreme. For instance, at one extreme, only a single student could be removed from the most
over-subscribed course, i.e., line 3 of Algorithm 2 could be d⇤
dˆj 0 (p⇤ ) 1. In our exploratory
analysis, this was found to be very slow in practice, requiring a huge number of iterations as
prices were slowly raised between sets of desirable complementary courses. At the other extreme,
over-subscription could be eliminated entirely from the most over-subscribed course, i.e., line 3 of
Algorithm 2 could be d⇤
0. While this raises the price of courses quickly and produces a feasible
solution in fewer iterations, we found that it produced allocations with very high clearing error,
because it can make price adjustments that are too large and therefore yield higher course prices
than necessary to get a solution without over-subscription.
4.2.3
Stage 3: Reduce Under-subscription
After Stage 2 eliminates over-subscription, the solution is feasible, but it is now likely to have a
considerable amount of under-subscription error, i.e., demand in positively priced courses less than
P
the target capacity, i x⇤ij < qj . If this solution were adopted, then the empty seats in positively
priced courses are likely to be acquired quickly in the drop/add period at the start of the semester.
There are several reasons why it is not desirable to have under-subscribed seats acquired that way.
First, a student with a strong preference for a seat in a popular course may lose the seat to a
student with less of an interest in the course, which works against the goal of trying to allocate
courses in such a way that the seats in each course are assigned to the students with the strongest
preference for the course. Second, as the Course Match budgets are no longer relevant in the
drop/add period, a student may be able to acquire a seat in a popular course for essentially zero
cost. In that case, the student obtains a better schedule than would have been a↵ordable within
Course Match, creating concerns around actual and perceived fairness. Third, the drop/add period
rewards students who are able to participate at the time it opens, and at least some students are
likely to be unable to participate at any selected time in the days before the semester begins.
The goal of Stage 3 is to provide a better solution to under-subscription than the drop/add
period (or a similar aftermarket). Ideally, empty seats in positively priced courses would be assigned
to the students with the strongest preferences for those seats, while not creating an incentive for
students to misrepresent their initial preferences to Course Match. With that guiding precept in
mind, the Stage 3 algorithm appears in pseudocode below as Algorithm 3. To simplify notation in
the pseudocode, we define a special choice function for each student i, x̆⇤i . This choice function takes
as arguments the student’s initial budget,
i,
and the set of courses formed by taking the union
18
Algorithm 3 Automated aftermarket allocations with increased budget and restricted allocations.
Input: Input allocations xij = 1 if student i is taking course j, restricted demand functions
x̆⇤i (Xi , ˘i ), S students ordered by class year descending and then by budget surplus ascending.
Output: Altered allocations xij .
1: repeat
2:
done h true
i
P
3:
U
Course j 2 M : j xij < qj .
. U is the set of currently under-subscribed courses
4:
for Student i 2 S do
. Iterate over the students in a fixed order
0
⇤
5:
xi
x̆i (U [ xi , 1.1 ⇥ i ) . Re-optimize over a restricted set of courses with 10% more
budget
6:
if xi 6= x0i then
7:
done
false
8:
xi
x0i
9:
break
. Break out of the for loop, so that only one student changes their
allocation in each pass
10:
end if
11:
end for
12: until done
. Done only if we do a pass without any student changing their allocation
of the courses in the student’s initial allocation and the courses that currently have open seats,
denoted Xi . The choice function then returns the student’s most preferred a↵ordable schedule out
of the courses in this set Xi , using the prices p⇤ found in Stage 2, the student’s original reported
preferences 4i , and the student’s new budget ˘i (updated from i by increasing the budget in a
way described below). Since the student’s new budget will be higher than their original budget,
the student can always a↵ord their schedule as of the end of Stage 2, i.e., their allocation can only
improve from what they received in Stage 2. Formally, the choice function is defined as:
2
x̆⇤i (Xi , ˘i ) ⌘ arg max 4xi 2
4i
i
:
X
j
3
xij p⇤j  ˘i , xij 2 Xi 5 .
Stage 3 iteratively selects students and assigns a selected student the best schedule the student
can a↵ord from the set of seats that are in the student’s current schedule and in courses with
open seats (i.e., enrollments less than target capacity). After a student selects these seats, they
are no longer available for other students. By definition, a student’s schedule after Stage 2 is
best for the student with their current budget. Hence, if there were no change in budgets, there
would be no change in the allocated courses. Consequently, in Stage 3 each student is awarded
a 10% increase in their budget. The objective of this budget subsidy is to allow many students
to receive a reasonable improvement in their schedules rather than to have a few students receive
large improvements. Furthermore, it is important to emphasize that students are not allowed to
acquire seats in full courses even if their extra budget would allow them to a↵ord such seats at
the current prices. In sum, Stage 3 sacrifices some equity (because students early in the selection
process have a wider selection of courses on which to spend their new higher budget) to improve
19
upon efficiency (reduce under-subscription) while using the rich preference data to allocate those
seats in a rational manner.
A student’s course allocation after Stage 3 may cost more than the student’s initial budget,
meaning that students may “receive schedules that are even better than what they could a↵ord.”
However, this is not viewed as a concern for four reasons:
1. Not every student uses the extra budget nor do they use the entire budget (e.g., a 1% increase
in their budget may be sufficient to get their most preferred schedule);
2. The Stage 2 prices are in some sense too high (because there is only under-subscription and no
over-subscription), so adding small amounts to budgets helps to compensate for this pricing
error;
3. The 10% increase in a student’s budget in Stage 3 is not worth the same as a 10% budget
increase in the earlier stages because this budget increase can only be used to acquire courses
with empty seats; and
4. Wharton administrators viewed a 10% increase as a tolerably small adjustment to budgets
relative to the efficiency gains achieved.
The students selected early in the Stage 3 sequence have an advantage — they can receive access to
desirable courses before other students. Hence Course Match sequences students in the following
manner:
1. All second-year students come before any first-year student;
2. Within a year, students are ordered in increasing order of the tie-breaking budget subsidy,
i.e., those with the smallest tie breaking budgets act first.
The second-year-first ordering reflects the cultural expectation at Wharton that second-year students should have preferential access to courses relative to first-year students. Within a year,
however, the ordering has an intuitive fairness quality. Students with the smallest budget subsidies lose the tiebreaker in the previous stages of Course Match and are compensated by having a
better position in the final stage of Course Match. Exploring the theoretical fairness and efficiency
properties of our ordering scheme and alternatives is an open question for future work.
At the conclusion of Stage 3 we have our final course allocation. In this final allocation all
maximum capacity constraints are satisfied and each student receives (at least) the best schedule
they can a↵ord given their initial budget and the final prices from Stage 2.
4.2.4
Alternative Approaches to Market-Clearing Error
We considered a number of alternative approaches to the problems of over-subscription and undersubscription resulting from Stage 1 that we ultimately rejected in favor of Stages 2 and 3 described
above:
20
Drop Students from Over-Subscribed Courses
If after Stage 1 there are more students assigned to course j,
P
⇤
i xij ,
than its capacity (either
qj or qˆj ), then a sufficient number of students could simply be dropped from the course. This
could be done with a lottery that randomly selected students to drop with equal likelihood.
However, such an approach might drop students who have the strongest interest in the course,
which reduces both efficiency and fairness. Alternatively, the drop process could be based on
some observable data, for example, dropping the students who assigned the lowest utility to
the course (or, to be more sophisticated, the students who would have the smallest percentage
reduction in utility if they were dropped from the course). However, such rules create an
incentive for students to misreport their preferences because they treat each student’s reported
preferences like bids in an auction (i.e., the highest qj bids win) and would introduce the
problems associated with strategic bidding present in auction mechanisms, which Course
Match seeks to eliminate. Furthermore, as a result of a random approach for dropping
students, it would no longer be true that each student “receives the best schedule they can
a↵ord”, which was considered to be a valuable claim for gaining student acceptance of the
program.
Artificially Lower Target Capacities
The capacity assigned to course j, qj , need not equal the maximum capacity, qˆj . One option
is to set the target capacity, qj , such that there is a sufficient bu↵er between it and the
maximum capacity, i.e., qˆj
qj is “large enough.” For instance, if a course is held in a room
with 50 seats (qˆj = 50), then instead of choosing 50 as the target capacity, choose something
like 40 seats (qj = 40). If the Stage 1 solution has fewer than 10 over-subscribed seats, then
the solution is actually feasible for the real problem.
There are several issues with this approach:
1. It is not possible a priori to know which courses need a bu↵er or how large that bu↵er
should be. One could attempt to design an algorithm to determine the bu↵er quantities,
but this is likely to be a challenging, non-linear, probabilistic search problem.
2. This approach is likely to leave empty seats in popular courses (i.e., courses with positive
prices). Although such a solution could be implemented, it would not be well received
by students.
3. There is no guarantee that this approach actually yields a feasible solution, because if
P
the bu↵er is not chosen to be large enough, then it remains possible that i x⇤ij > qˆj for
some j.
4. Finally, artificially lowering the target capacities reduces the amount of slack in the
allocation problem, which makes the Stage 1 search problem harder. To see why, first
note that with enough slack the allocation problem is trivial: price all courses at zero
and give each student their most preferred schedule. But as capacity becomes more
21
restrictive, fewer courses have a zero price, which makes the e↵ective dimension of the
search problem larger. In our exploratory analysis, large reductions in course capacity
made the search problem substantially harder, producing low-quality solutions.
Weighted Search
Given that over-subscription is costlier than under-subscription, a reasonable remedy is to
penalize over-subscription by a greater amount than under-subscription (e.g., penalize oversubscription five times as much as under-subscription) in the Stage 1 price vector search.
We found that this approach resulted in substantially worse overall search performance,
producing results that, much to our surprise, actually increased over-subscription. We conjecture that this counter-intuitive result is due to the fact that the error function plays two roles
in the Stage 1 price vector search process. The first role is straightforward: is the candidate
solution a good solution (i.e., low clearing error)? The second role is subtle: the clearing error
score guides the search from a random initial starting point to a good solution (line 11 of Algorithm 1). When the weighting vector of the search is altered, the hope is to a↵ect only the
former role (solution quality), and produce solutions more skewed towards under-subscription.
But we believe it also detracts from the second role, which is to guide the search process to a
better solution. This may occur because the search problem is very challenging, with many
local minima. As shown in Table 1, the path towards a good solution almost always involves
taking steps through bad solutions. Informally, in challenging search problems, you need to
enter a valley before you can climb a di↵erent hill. By weighting the search vector, the search
is far less likely to enter intermediate solutions with over-subscription, and hence more likely
to get stuck in a local minimum.
5
Computational Results
This section reports on the output of a production run of Course Match for the Spring 2014
semester. In Section 5.1 we discuss the heuristic search results, and in Section 5.2 we discuss the
computational output from each of the seven Amazon EC2 cc2.8xlarge instances involved.
5.1
Search Results
Table 1 reports some summary statistics of the Stage 1 price vector search process of this Course
Match run.
Two observations from Table 1 are of particular interest. First, fewer than 5% (20/418) of the
search starts followed a strict hill climb, meaning that the search improved until it found a local
minima that was the best-found solution in that start. Put another way, in more than 95% of search
paths, the best performing solution was found on a path that at some point moved to neighbors
that temporarily decreased the solution quality. (Recall that Algorithm 1 allows the search to take
up to five of these steps before terminating the search start.) This suggests that the search space is
22
Table 1: Stage 1 price vector search summary statistics for the Spring 2014 semester
Compute servers
Hours
Number of courses
Number of search starts
Search paths performing a strict hill climb
Price vectors explored
Total MIPs solved
7
48
351
418
20
2.0 million
4.5 billion
Notes: A “strict hill climb” is a search path that does not improve its best-found solution by
temporarily moving to a price vector with higher clearing error.
challenging and filled with local minima. The success that our Tabu search achieved in this setting
is in line with past successful applications of Tabu search in challenging domains [Watson et al.,
2003].
Second, even with the large amount of computational power behind it, only a vanishingly
small fraction of the potential search space was actually explored. Consider a dramatically simpler
version of our search problem, in which courses can be assigned only one of two prices, 0 or 1.
The number of price vectors explored in this run could exhaustively enumerate only a 21-course
allocation problem, far smaller than the 351 courses under consideration. In fact, the actual problem
is much larger. If we discretized the price space by unit prices up to 5,000 (a second year’s base
budget) for each course, an exhaustive enumeration of potential price vectors would have cardinality
5, 000351 ⇡ 101,300 , of which we explore 2 ⇥ 106 . For context, 101,300 is much larger than the number
of atoms in the universe, and 2 ⇥ 106 is much smaller than the number of atoms in a grain of sand.
Our heuristic search procedure is powerful enough to produce practical solutions despite the size
of the problem.
Figure 5 shows a plot of the average squared error of the best solution found on each search
start, plotted against the number of steps taken in a search start (i.e., the number of times through
the inner loop of Algorithm 1). The error falls quickly for about the first ten steps before the rate
of decrease tapers o↵. The straight line on the plot represents the theoretical bound on clearing
error. Since the number of courses M is 351, and the largest requested bundle was k = 8 courses,
there exists at least one solution to the allocation problem with total squared clearing error equal
to M k/2 = 1, 404 or lower. The average search start crossed this bound after taking 21 steps.
Figure 6 provides a hint as to why the error falls so quickly in the early stages of the search.
Recall that at a given price vector the search can step to a member of one of two neighborhoods:
either one that adjusts only the price of a single course, or a gradient step that simultaneously
adjusts the price of every course. The figure shows that early in the search gradient steps are
selected almost exclusively, and then there is a steep drop-o↵ in their frequency of selection after
around 20 steps. Observe that this matches the drop in squared error, suggesting that squared
error drops quickly when gradient steps are being taken but much slower when they are of limited
23
Error of Best Node Found
Figure 5: The squared error of the best-found solution in each step of the heuristic search (i.e,
line 24 of Algorithm 1), averaged over the search starts, of a recent production run
100000
10000
1000
100
10
20
30
40
50
60
70
80
90
100
Step Number
Notes: The theoretical error bound is given by the green line. The y axis is log scaled.
use. However, the gradient steps are not ignored at later stages of the search. Our results indicate
that gradient steps are selected about 15% of the time after 50 steps of a search start.
Recall from Algorithm 1 that the search restarts when a series of five sequential steps do not
improve its squared error. Figure 7 shows the fraction of search starts that survive taking a given
number of steps without restarting. It shows that the pace of restart begins to quicken around the
50th step.
24
Figure 6: The average fraction of search steps that selected a gradient neighbor (i.e, p̃ is of the
gradient neighbor type in line 20 of Algorithm 1) at a given number of steps in a recent production
run
Fraction Selecting Gradient Step
1
0.8
0.6
0.4
0.2
0
10
20
30
40
50
60
70
80
90
100
Step Number
Figure 7: The average fraction of search starts surviving to a given number of steps (i.e., we have
not broken out of the intermediate loop begun on line 7 of Algorithm 1) in a recent production run
Fraction of Searches Ongoing
1
0.8
0.6
0.4
0.2
0
10
20
30
40
50
60
Step Number
25
70
80
90
100
Table 2: Stagewise results from a recent production run
Stage 1: Price Vector
Search
↵2
Stage 2: Over-subscription
Elimination
↵2
Stage 3: Under-subscription
Reduction
↵2
Server
+
-
Seats
Loss
+
-
Seats
Loss
+
-
Seats
Loss
1
2
3
4
5
6
7
51
23
75
36
59
53
47
40
28
35
125
48
48
56
32
24
25
71
36
32
42
0.19%
0.20%
0.31%
0.68%
0.28%
0.22%
0.54%
0
0
0
0
0
0
0
141
205
138
228
201
186
202
67
97
74
106
87
86
86
0.80%
1.26%
0.96%
1.00%
1.15%
0.87%
1.13%
0
0
0
0
0
0
0
31
30
21
83
52
32
17
17
16
17
33
24
22
13
0.07%
0.07%
0.07%
0.33%
0.09%
0.07%
0.02%
Compute
Notes: Each column refers to the solution after that stage completes. Squared clearing error, ↵2 ,
is provided for over-subscription (+) and under-subscription (-) separately, with over-subscription
in all cases measured relative to maximum capacity, q̂j . “Loss” is the percent deadweight loss from
under-subscribed seats in positive-price courses (i.e., the total value of those seats, based on their
price, relative to the total value of all seats).
5.2
Stage Comparison
Table 2 compares the results on each compute server for each stage of the Course Match algorithm. It reports squared market clearing error ↵2 , broken separately into error arising from
over-subcription and error arising from under-subscription; the total error in seats; and a measure
of deadweight loss, defined as the value of the under-subscribed seats divided by the total value
of all seats. As each compute server operates independently, each compute server yields a distinct
solution after each stage. There are several interesting results from Table 2.
• The compute server with the best solution changes across stages and metrics. Server 2 has
the lowest squared error after the Stage 1 price vector search; Server 1 after the Stage 2
over-subscription elimination; and Server 7 had the lowest deadweight loss and fewest undersubscribed seats following the conclusion of the Stage 3 under-subscription reduction. This
result strongly suggests the value of running the entire search process in parallel across many
di↵erent compute servers.
• The amount of squared error increased on each server as a result of the Stage 2 oversubscription elimination process. Because squared error is symmetric, in general the solutions
at the end of the Stage 1 price vector search will have total error approximately equal between
over-subscription and under-subscription. Consequently, we should expect squared error to
increase when we move to a solution without over-subscription.
• The number of empty seats does not strictly correspond to the total deadweight loss. In some
solutions the unallocated seats are in low price courses while in others they are in high price
26
courses. In the Server 4 solution each seat in the average under-subscribed course is worth
0.01% of the economy, while in the Server 7 solution under-subscribed seats are worth about
a sixth of that.
• In Stage 3 over-subscription reduction there is on average a 77% reduction in the number
of positive-price under-subscribed seats and a 90% reduction in deadweight loss. This is a
significant increase in efficiency from a relatively small adjustment in budgets (10%).
Of the seven solutions, the Server 7 solution was advanced for implementation by the Wharton
program administrators because it had the lowest deadweight loss. There were then last-minute
course modifications by Wharton administrators which necessitated rerunning the search (with
less computational time); the best solution in this re-run had deadweight loss of 0.07%. In future
production runs, Wharton plans to continue to select the solution with the lowest deadweight loss
after Stage 3.
27
6
Economic Results
In this section we summarize the results from the Fall 2013 and Spring 2014 semester runs of
Course Match at Wharton. We begin by describing the quantitative properties of the allocations
themselves and then provide survey data demonstrating students were very satisfied with those
allocations.
6.1
Efficiency
Table 3 shows quantitative summary statistics from the Fall 2013 and Spring 2014 runs. The two
semesters had similar inputs and outputs. One salient di↵erence between the two semesters was
that Spring 2014 had many more courses with maximum capacities above target capacities. The
quality of the final allocation in Spring 2014 also appears to have been higher; its deadweight loss
was about one-third of the deadweight loss of the Fall term, although both semesters had very low
deadweight loss in absolute terms, less than one fifth of one percent of the total economy in each
semester.
Table 3: Quantitative summary statistics from the Fall 2013 and Spring 2014 allocations
Students
Courses
Courses with maximum above target capacity,
i.e.,
qP
j < q̂j
P
Total capacity overhead ( j (q̂j qj ) / j qj )
Number of courses with demand above target capacity
Fraction of total capacity allocated
Number of courses with a positive price
Number of under-subscribed courses
Deadweight loss as percent of economy
Highest course price as fraction of average budget
Fall 2013
Spring 2014
1650
285
78
0.8%
13
71%
154
15
.19%
1.31
1700
344
262
2.1%
49
74%
199
18
.07%
0.88
Figures 8a and 8b show the relationship between course capacities and prices in the Fall 2013
and Spring 2014 allocations. Each circle represents a course. The color of a circle is determined
by the allocation of the course relative to its target capacity. Red circles are courses with low
allocation relative to target capacity, white circles are courses that exactly match target capacity,
and blue circles are courses that exceed target capacity (but do not exceed maximum capacity).
The saturation of the colors reflects the absolute error relative to target capacities: a class with
no students would be dark red and a class that fills its maximum capacity would be dark blue. In
each semester there is a weak relationship between course price and capacity. Furthermore, while
most (but not all) of the courses with allocations below target capacity have a zero or low price,
courses with allocations above target capacity (blue) occur at all prices, and are not concentrated
just in the high priced courses.
28
Figure 8: Course Capacities and Prices
(a) Fall 2013
(b) Spring 2014
200
Target Course Capacity
Target Course Capacity
200
150
100
50
0
0
1000
2000
3000
Course 3rice
4000
150
100
50
0
5000
0
1000
2000
3000
Course 3rice
4000
5000
Notes: Each circle represents a course. The color of a circle is determined by the allocation of the
course relative to its target capacity. Red circles are courses with low allocation relative to target
capacity, white circles are courses that exactly match target capacity, and blue circles are courses
that exceed target capacity (but do not exceed maximum capacity). The saturation of the colors
reflects the absolute error relative to target capacities: a class with no students would be dark red
and a class that fills its maximum capacity would be dark blue.
Figure 9: Course Market-Clearing Errors and Prices
(b) Spring 2014
6
6eats Above or Below Target CaSacity
6eats Above or Below Target CaSacity
(a) Fall 2013
5
4
3
2
1
0
0
1000
2000
3000
Course 3rice
4000
5000
6
5
4
3
2
1
0
0
1000
2000
3000
Course 3rice
4000
5000
Notes: Courses in Fall 2013 and Spring 2014 that either exceeded their target capacities (i.e., they
made use of additional max capacity), or had positive price but were under-subscribed (i.e., they
contributed to deadweight loss). The saturation of the colors reflects allocations relative to target
capacities: a class with no students would be dark red and a class that fills its maximum capacity
would be dark blue.
29
Figures 9a and 9b plot the number of seats over or under target capacity for courses with
positive prices and under-subscription (red circles), or allocations above their target capacities (blue
circles). There is a weak relationship between the absolute clearing error and course price. Absolute
clearing error is also somewhat limited - never more than 5 seats. Furthermore, as one would hope,
over-subscription (based on target capacity) is more common relative to under-subscription with
high-price courses and less so with low-price courses.
Table 4 shows how Stage 2 (over-subscription elimination) and Stage 3 (under-subscription
reduction) a↵ect the solution. In Fall 2013, about 34% of course prices are changed to eliminate
over-subscription, while in Spring 2014 about 28% of course prices are changed. As a result of these
price changes about 23% of students in the Fall and 19% of students in the Spring change their
course allocations to eliminate over-subscription. Finally, with under-subscription reduction only
about 13% of students in the Fall and 9% of students in the Spring change their allocations.
Table 4: The degree of e↵ect of over-subscription elimination and automated aftermarket on
courses and students
Fall 2013
Spring 2014
Courses
Courses changing price in over-subscription elimination
285
98
344
97
Students
Students changing allocation in over-subscription elimination
Students changing allocation in automated aftermarket
1650
381
222
1700
327
147
Figures 10a and 10b show the budget expenditure by students over the three stages for the Fall
2013 and Spring 2014 semesters. Each figure consists of three subplots. The top subplot buckets
students by the amount of their initial budget spent after Stage 1 (price vector search). The middle
subplot shows these buckets after Stage 2 (over-subscription elimination), and the bottom subplot
shows these buckets after the completion of Stage 3 (under-subscription reduction). In Stages 1
and 2, students cannot spend more than 100% of their initial budget and while most students
spend most of their budget (say 90% or more), there remains a large number of students who spend
a smaller portion of their budget. In Stage 3 students are able to spend an additional 10% of
their initial budget on under-subscribed courses. Nevertheless, fewer than 15% of students actually
spend more than their budget, which suggests that possible equity concerns associate with Stage 3
are not significant.
6.2
Fairness
One measure of fairness is envy — which occurs when a student prefers the allocation received by
another student over her own. We already know that there should be some envy in the Course
Match allocations because Course Match divides students into groups with significantly di↵erent
budgets (e.g., all second-year students get larger budgets than all first-year students) and even
30
Figure 10: Percent of Budget Spent by Stage
(a) Fall 2013, Stages 1-3
(b) Spring 2014, Stages 1-3
0.30
0.25
0.20
0.15
FraFtion of 6tudents
FraFtion of 6tudents
0.10
0.05
0.00
0.30
0.25
0.20
0.15
0.10
0.05
0.00
0.30
0.25
0.20
0.15
0.10
0.05
0.00
0
20
40
60
80
100
120
0.40
0.35
0.30
0.25
0.20
0.15
0.10
0.05
0.00
0.40
0.35
0.30
0.25
0.20
0.15
0.10
0.05
0.00
0.40
0.35
0.30
0.25
0.20
0.15
0.10
0.05
0.00
0
3erFent of Budget 6Sent
20
40
60
80
100
120
3erFent of Budget 6Sent
Notes: The percentage of initial budget spent by students after (top panel) Stage 1 Price vector
search, (middle panel) Stage 2 Over-subscription elimination, and (bottom panel) Stage 3 Undersubscription reduction. For clarity, students spending < 50% of their budget are grouped into a
single bucket.
within the same group their can be envy due to variations in the tie breaking subsidy (though, as
mentioned earlier, that envy is bounded by a single course). As it is mathematically impossible
to design a mechanism that is completely free of envy, it is not clear how much envy is tolerable
and how much is too much. To provide a benchmark, it would be ideal to compare the envy in
the Course Match allocation to the envy produced by a competing mechanism, such as the auction
Wharton previously used. However, because bids are unlikely to represent true preferences in the
Wharton Auction, it is not possible to use previous Auction data to determine levels of envy.
(However, see Budish and Kessler [2014] for experimental evidence comparing envy between these
two mechanisms.)
As we cannot use envy to measure fairness, we provide two alternative, but related, measures
of fairness that enable us to compare Course Match to Wharton’s previous auction mechanism.
The first focuses on how evenly seats in the most expensive courses are distributed among the
students and the second, called the Gini index, measures how evenly the “wealth” in this economy
is distributed, where the value of a seat equals its price.
Table 5 shows the percentage of second-year students with S courses among the most expensive
N courses. (We focus on second-year students because first-year students vary significantly in
the number of courses they desire due to course requirements and waivers.) Two values of N
are reported, 20 and 40, because the number of seats among the top 20 courses is approximately
equal to the number of second-year students and the number of seats among the top 40 courses is
approximately equal to the total number of MBA students. Because the Spring and Fall semesters
di↵er in the types of courses o↵ered and student needs, each Course Match semester is compared
31
against the same semester in the previous year that used the Wharton Auction. If all students want
a seat among the top N courses (which is unlikely to be true, but most students probably have
some preference for at least one of these courses) then an equitable solution would concentrate the
distribution in the S = 1 and S = 2 columns. In all cases, Course Match concentrates substantially
more of its distribution in those desirable columns than the Auction. For example, comparing the
Auction in Fall 2012 to Course Match in Fall 2013, 63% of students received 1 or 2 courses among
the top 20 with the Auction, while 86% did with Course Match. Consequently, with the Auction,
32% of students were excluded from the top 20 courses (S = 0) whereas only 13% were absent from
the top 20 courses with Course Match. And while no student with Course Match was allocated
more than 3 seats among the top 20 sections, with the Auction, a lucky 5% of students received 3 or
more seats in that set. The same pattern emerges when we consider the 40 highest priced courses
and the Spring semesters. In sum, with Course Match, relative to the Auction, fewer students are
excluded from the most expensive courses and very few (if any) students are able to acquire many
seats among those courses.
Table 5: Percentages of second-year students with S courses among the N highest priced sections
Mechanism
Auction
Course Match
Auction
Course Match
Auction
Course Match
Auction
Course Match
Semester
Fall 2012
Fall 2013
Fall 2012
Fall 2013
Spring 2013
Spring 2014
Spring 2013
Spring 2014
N
20
20
40
40
20
20
40
40
S=0
32%
13%
14%
4%
54%
32%
20%
6%
S=1
43%
71%
34%
44%
38%
65%
42%
52%
S=2
20%
15%
31%
50%
8%
4%
29%
42%
S = 3+
5%
0%
20%
2%
0%
0%
9%
0%
Instead of focusing on the distribution of seats in the most expensive courses, it is also possible
to measure the distribution of seats overall. If the value of a seat is taken to be its price, then the
sum of the prices of the seats in a student’s schedule can be taken as a measure of the wealth the
student has earned from the allocation. Fairness suggests that wealth should be evenly distributed.
The Gini coefficient measures the inequality of a distribution, and is typically used for measuring
income inequality. The Gini coefficient ranges between 0 and 1: if every person has identical wealth,
the Gini coefficient is 0; if a single person controls all of the wealth, the Gini coefficient is 1. Hence,
wealth is more concentrated among a few as the Gini coefficient increases.
The interpretation of the Gini coefficient in the context of income inequality is clear — because it
is reasonable to assume that everyone prefers more income to less, an increase in the Gini coefficient
implies more of the valuable resource (income) is assigned to fewer people, which means less equality.
With course allocation the interpretation of the Gini coefficient is not as straightforward. It is
possible that a student receives their most preferred schedule even though the schedule has zero
total cost — it just so happens that the student values courses that are not capacity constrained.
32
Thus, the Gini coefficient probably overstates the degree of income inequality. Nevertheless, popular
courses are likely to have higher prices, and so the total cost of a student’s schedule is a reasonable
proxy of the value the economy places on her schedule.
Table 6 reports the Gini coefficients for the Fall and Spring semesters, one with the prices
generated by the Auction in the last year it was implemented, and the other with the prices
generated by Course Match in its first year of implementation. The coefficients are calculated
for three di↵erent student groupings: only first-year students, only second-year students, and all
students. Recall from Section 4.1 that students are granted roughly equal budgets within a year,
but unequal budgets between years (and that was true with the Auction as well). This systematic
unfairness is considered natural in the course allocation setting at business schools. Consequently,
intra-year Gini coefficients are a better measure of fairness in this setting than the Gini coefficients
of allocations including both years. By design (and therefore, as expected), the Gini coefficient for
the whole student body is higher than the intra-year Gini coefficients.
Table 6: Gini coefficients of student allocations. Fall 2012 allocations are taken as round 5 of the
Auction
Mechanism
Semester
First-Year Students
Second-Year Students
All Students
Auction
Course Match
Fall 2012
Fall 2013
0.33
0.13
0.36
0.22
0.54
0.32
Auction
Course Match
Spring 2013
Spring 2014
0.25
0.10
0.39
0.12
0.34
0.15
As is evident, Course Match in all pairwise comparisons with the Auction reduces the Gini
coefficient, meaning that Course Match produces an allocation that more evenly distributes wealth
among the students. To calibrate these scores somewhat (and with the understanding that the
Gini coefficient with course allocation likely overstates income inequality), the Auction’s Fall 2012
intra-year Gini coefficients are roughly in line with the United Kingdom’s post-transfer income distribution (0.34), while both the Fall 2013 and Spring 2014 Course Match allocations have intra-year
Gini values lower or much lower than the country with the lowest post-transfer income distribution,
Denmark (0.24). The Spring 2014 schedule, in particular, has intra-year Gini coefficients that are
very low, around 0.1.
6.3
Student Perception
Although Course Match has desirable results in terms of various efficiency and fairness measures, the
ultimate metric of its success is student satisfaction. Prior to 2013, Wharton measured satisfaction
with the Auction course registration system with a single question on an annual stakeholder survey
given to MBA students. 2013 was the last year in which the Auction was implemented for course
allocation. In anticipation of the Auction’s retirement, two additional questions were added to the
survey in 2013 — one directed towards satisfaction with the course schedule a student received and
33
Table 7: Percent of 6 or 7 responses on three questions related to course allocation at Wharton
2010
2011
2012
2013
2014
E↵ectiveness of the course
registration system (1 =
Poor, 7 = Excellent)
43%
43%
34%
24%
53%
I was satisfied with my
schedule from {the auction,
Course Match} (1 = very
unsatisfied, 7 = very
satisfied)
-
-
-
45%
64%
{The auction, Course Match}
allows for a fair allocation of
classes (1 = strongly
disagree, 7 = strongly agree)
-
-
-
28%
65%
Notes: Only the “e↵ectiveness” question was asked in 2012 and earlier. The 2013 results apply to
the Auction, the last year of its use. The 2014 results apply to Course Match.
the other on a student’s impression of the fairness of the Auction. The same questions were asked
in 2014 with “Course Match” replacing “the auction” in the wording of the question.
Table 7 reports the percentage of students responding with one of the top two scores (6 or 7).
With respect to “e↵ectiveness,” student satisfaction had been decreasing over time, with the lowest
score occurring in the last year of the Auction, but then this measure improved considerably in
2014, the year Course Match was implemented. Course Match performed very well on the other
two measures as well — “satisfied with my schedule” increased from 45% to 64% and “fairness”
experienced an even larger increase, from 28% to 65%. These dramatic improvements also provide
indirect evidence suggesting that students were able to report their preferences to the Course Match
system successfully — if they were not successful in doing so, either because the language was too
limiting or because they had difficulty to “speak” it, then it is unlikely that satisfaction scores
would be high. In sum, the student survey results provide strong evidence that Course Match is
e↵ective at providing efficient solutions and increasing perceptions of fairness.
7
Conclusion
Course Match is a large-scale implementation of the Approximate Competitive Equilibrium from
Equal Incomes (A-CEEI) mechanism for course allocation that is capable of producing implementable (i.e., feasible) solutions within a sufficiently small lead time by cost e↵ectively harnessing
the power of cloud computing. The resulting allocation was attractive on quantitative measures
of economic efficiency and fairness, such as deadweight loss and the equality of the distribution
34
of popular courses. Perhaps most importantly, relative to the previously used auction mechanism,
Course Match substantially increased student perceptions of e↵ectiveness, satisfaction, and fairness.
A critical feature for the success of Course Match is its “strategy-proof” property — a student’s
best strategy is to report her true preferences no matter what preferences other students report
or what capacities are assigned to each course. This greatly simplifies the student’s reporting task
because the student need not form beliefs about how other students will “play” or what clearing
prices might be for courses. In contrast, the Wharton Auction (as well as all other course-allocation
mechanisms implemented in practice) was not strategy-proof. For example, if a student desires a
course but believes that it will have a zero clearing price, then the student should rationally submit
a low bid and save tokens to bid on other courses. However, the student may make a mistake and
not receive the course she desires if the clearing price turns out to be higher than expected. This
bidding mistake is not trivial and it could even lead a student with ample tokens to receive zero
courses. Such errors do not happen with Course Match because Course Match e↵ectively bids on
behalf of students after all of the clearing prices have been revealed. Hence, Course Match never
“bids” more than the clearing price (which would waste budget tokens) nor “bids” less than the
clearing price for a desired course (thereby losing the seat). Furthermore, although Course Match is
able to solve the MIP that yields a student’s best schedule given the reported preferences and price
vector, it is highly unlikely a student would be able to identify the best schedule with the same
information consistently, i.e., computers are better than humans at solving MIPs. In sum, Course
Match performs all of the tasks that are best performed by a computer (e.g., finding a price vector
and assigning seats to students given that price vector) while leaving the students the one task
the computer cannot do, i.e., reporting their own preferences. Consequently, a substantial amount
of human computation e↵ort (e.g., forming beliefs, choosing bids) is eliminated and replaced with
cloud-based computing power.
The cliché “garbage in, garbage out” applies with Course Match — while the Course Match
mechanism has many desirable theoretical properties, if the preference language given to students
is not sufficiently rich (i.e., it does not allow students to express critical preferences) or if students
are not able to “speak” this language (i.e., they cannot use the language to correctly report their
preferences), then Course Match may not yield desirable results. We are not able to provide direct
evidence of the quality of the Course Match preference reporting language and user interface,
but the high overall student satisfaction scores provide indirect evidence that the Course Match
language is sufficiently rich and easy to use.
We are able to document that Course Match is a superior mechanism for taking a given set of
courses and allocating them to students. Another approach to improve student satisfaction is to
change the set of course o↵erings, i.e., which courses are o↵ered, which classrooms they are o↵ered
in and when they are o↵ered. Given that students report their true preferences to Course Match,
it is possible to observe the demand for each course that would occur if there were no capacity
constraints. This enables the school administration to distinguish between two courses, each with
60 seats and 60 students enrolled, but one that would have 200 students and the other that would
35
have 20 students in the absence of capacity constraints. The course with the higher demand is far
more popular, even though it has the same enrollment as the less-popular class, which must have
full enrollment only because some students were not able to get into their more preferred courses
(i.e., 40 of the 60 students enrolled would not have included the course in their most preferred
schedule). It is plausible that the e↵ective use of the preference data available through Course
Match could lead a school to make smarter decisions about its course o↵erings, which could lead
to further substantial gains in student satisfaction.
We do not claim that the Course Match computational architecture is “optimal.” Indeed,
an important question left for future research is whether there are better approaches to finding
approximate market-clearing prices than that described here. We do show, however, that the
Course Match computational architecture works at Wharton. To borrow a common analogy (e.g.,
Roth [2002]), ours is an exercise of engineering rather than physics. Additionally, some back-ofthe-envelope calculations suggest that even the largest course allocation problems are within reach
of the Course Match architecture. For example, Ohio State has about 60,000 students at its main
campus, as compared with 1,700 students at Wharton, and thousands of courses each semester as
compared with up to 350 courses at Wharton. However, whether a student is at a large school
or a small school, they are likely to report preferences for around 15-30 courses each semester,
given that they are likely interested in taking about 4-5 courses each semester. Because a MIP
solver can immediately discard all courses that a student has no interest in taking, the difficulty
of solving a student’s MIP is likely to be no more difficult at Ohio State than at Wharton. There
are 60, 000/1, 700 ⇡ 35 times as many students at Ohio State than at Wharton, however, and
thus 35 times as many MIPs to solve at each price vector. It is unclear whether the price search
problem is harder or easier at Ohio State — it could be harder because there are considerably more
courses, but could be easier because there is likely to be less overlap in demand for those courses
(e.g., courses at the dental school are e↵ectively a separate market from courses at the liberal arts
school), and maybe because fewer courses are likely to be capacity constrained. If we assume that
the search problem at Ohio State is the same difficulty as the search problem at Wharton, then we
would need on the order of 35 times as much computational power to solve the Ohio State problem
as was used for Wharton. This is a lot of computational power but is certainly feasible given the
current scale of Amazon Web Services. Thus, even the largest realistic problems are within reach
of the Course Match architecture. Furthermore, other applications of the combinatorial allocation
problem, such as workforce scheduling, are likely to be much smaller, and therefore easily handled
by the Course Match architecture.
References
T. Abbott, D. Kane, and P. Valiant. On the complexity of two-player win-lose games. In Foundations of Computer Science, 2005. FOCS 2005. 46th Annual IEEE Symposium on, pages 113–122,
2005.
36
A. Abdulkadiroglu and T. Sönmez. School choice: A mechanism design approach. The American
Economic Review, 93(3):729–747, 2003.
C. Borgs, J. Chayes, N. Immorlica, A. T. Kalai, V. Mirrokni, and C. Papadimitriou. The myth of the
folk theorem. In Proceedings of the Fortieth Annual ACM Symposium on Theory of Computing,
STOC ’08, pages 365–372, New York, NY, 2008. ACM.
E. Budish. The combinatorial assignment problem: Approximate competitive equilibrium from
equal incomes. Journal of Political Economy, 119(6):1061 – 1103, 2011.
E. Budish and E. Cantillon. The multi-unit assignment problem: theory and evidence from course
allocation at harvard. American Economic Review, 102(5):2237–2271, 2012.
E. Budish and J. Kessler. Changing the course allocation mechanism at wharton. Working Paper,
2014.
X. Chen and S.-H. Teng. Spending is not easier than trading: on the computational equivalence of
fisher and arrow-debreu equilibria. ISAAC ’09 Proceedings of the 20th International Symposium
on Algorithms and Computation, pages 647–656, 2009.
X. Chen and S.-H. Teng. A complexity view of markets with social influence. In ICS, pages 141–154,
2011.
X. Chen, D. Paparas, and M. Yannakakis. The complexity of non-monotone markets. In STOC,
pages 181–190, 2013.
B. Codenotti, A. Saberi, K. Varadarajan, and Y. Ye. Leontief economies encode nonzero sum
two-player games. In Electronic Colloquium in Computational Complexity, pages 5–55, 2006.
C. Daskalakis, P. W. Goldberg, and C. H. Papadimitriou. The complexity of computing a nash
equilibrium. Communications of the ACM, 52(2):89–97, 2009.
L.-S. Huang and S.-H. Teng. On the approximation and smoothed complexity of leontief market
equilibria. In Lecture Notes in Computer Science, pages 96–107, 2007.
S. Kintali, L. J. Poplawski, R. Rajaraman, R. Sundaram, and S.-H. Teng. Reducibility among
fractional stability problems. In Proceedings of the 2009 50th Annual IEEE Symposium on
Foundations of Computer Science, FOCS ’09, pages 283–292, Washington, D.C., 2009. IEEE
Computer Society.
A. Krishna and M. U. Ünver. Improving the efficiency of course bidding at business schools: Field
and laboratory studies. Marketing Science, 27(2):262–282, 2008.
A. Othman, E. Budish, and T. Sandholm. Finding Approximate Competitive Equilibria: Efficient
and Fair Course Allocation. In International Conference on Autonomous Agents and Multi-Agent
Systems (AAMAS), pages 873–880, Toronto, Canada, 2010.
37
A. Othman, C. Papadimitriou, and A. Rubinstein. The complexity of fairness through equilibrium.
In Proceedings of the Fifteenth ACM Conference on Economics and Computation, EC ’14, pages
209–226, New York, NY, 2014. ACM.
D. Pálvölgyi. 2d-tucker is ppad-complete. In Proceedings of the 5th International Workshop on
Internet and Network Economics, WINE ’09, pages 569–574, Berlin, Heidelberg, 2009. SpringerVerlag.
C. H. Papadimitriou. On the complexity of the parity argument and other inefficient proofs of
existence. Journal Computer and System Sciences, 48(3):498–532, 1994.
A. E. Roth. Economist as engineer: Game theory, experimentation, and computation as tools for
design economics. Econometrica, 70(4):1341–1378, 2002.
A. E. Roth and E. Peranson. The redesign of the matching market for american physicians: Some
engineering aspects of economic design. The American Economic Review, 89(4):748–780, 1999.
A. E. Roth, T. Sönmez, and M. U. Ünver. Kidney exchange. The Quarterly Journal of Economics,
119(2):457–488, 2004.
A. E. Roth, T. Sönmez, and M. U. Ünver. Pairwise kidney exchange. Journal of Economic Theory,
125(2):151–188, 2005.
A. Rubinstein. Inapproximability of nash equilibrium. Working Paper, 2014.
T. Sandholm. Expressive commerce and its application to sourcing: How we conducted $35 billion
of generalized combinatorial auctions. AI Magazine, 28(3):45–58, 2007.
T. Sandholm and C. Boutilier. Preference elicitation in combinatorial auctions. In P. Cramton,
Y. Shoham, and R. Steinberg, editors, Combinatorial Auctions, pages 233–263. MIT Press, 2006.
Chapter 10.
T. Sönmez and M. U. Ünver. Course budding at business schools. International Economic Review,
51(1):99–123, 2010.
X. H. Sun and D. T. Rover. Scalability of parallel algorithm-machine combinations. IEEE Transactions Parallel Distributed Systems, 5(6):599–613, 1994.
V. V. Vazirani and M. Yannakakis. Market equilibrium under separable, piecewise-linear, concave
utilities. Journal of the ACM, 58(3):10, 2011.
J.-P. Watson, J. Beck, A. E. Howe, and L. Whitley. Problem difficulty for tabu search in job-shop
scheduling. Artificial Intelligence, 143(2):189–217, 2003.
38