You are on page 1of 2


CableCorp assembles electrical wirings that it sells to car manufacturers. Due to the large number of
model variants and options offered by car manufacturers, CableCorp could potentially be facing
demand for thousands of different wiring configurations from its customers. In practice, therefore, it
only assembles and stores a much smaller catalog of distinct product types (say, between 6 and 40
types), which are meant to be representative of all possible configurations. When a car manufacturer
orders a batch of a certain product, CableCorp selects from its catalog a substitute product type that
is as similar as possible to the specific configuration ordered by its customer, and either it delivers
this substitute (if this is technically acceptable for the customer), or it adapts it so as to make it

CableCorp has asked its supply chain manager, Ms Daisy Bell, to revise and to re-optimize the catalog
of stored products. Since the future demand is unknown, it is difficult to select an inventory of
products that will exactly minimize the total cost incurred by CableCorp. As a first step, therefore,
Daisy Bell has established a list of several hundred product types (say, m types) that may be ordered
by its customers. She has also computed, for each pair of product types, a parameter sij = sji that
measures the similarity between a product of type i and one of type j (the parameter reflects the cost
of transforming type i into type j, or conversely, as well as an estimate of their respective demands).
Now, for any value r, she would like to be able to define r families of product types of identical sizes
such that, within each family, the product types are as similar as possible. In a second step, she
would then choose a few product types within each family in order to compose the catalog of
product types, but we are not concerned with this step.

CableCorp has hired you, as an OR consulting team, to help Daisy Bell optimize the families of
product types. More precisely, the grouping problem you have to solve can be stated as follows:
given the similarity parameters sij and the number of families r, partition the m product types into r
families G1, , Gr, each of size m/r, so as to maximize the total similarity index:

= =1 ,> .


Develop and implement a heuristic optimization algorithm (either a simulated annealing algorithm or
a genetic algorithm) to solve the grouping problem defined above. The algorithms should fit in the
generic frameworks discussed in class, but all algorithmic details are left to your creativity. You
should also propose one or several upper bounds on the value of the optimal solution.

Your algorithms must be tested on five different datasets which can be downloaded from Lol@.

The project must be carried out by groups of at most 4 students. Each group must deliver:

A written report (at most 15 pages) describing the details of your algorithms. The report must
be sufficiently precise to allow me to understand your algorithms; it should also convince me that
you have attempted to obtain the best possible implementation!

The report must explicitly mention the numerical results that you have obtained for each
instance: description of each solution (list of product types in each group, value of the total similarity
index T), and an upper bound on the best possible value for each instance.

Computational Optimization 2016-2017 Project 1

The sources of the computer code (as well as an executable version, if the code is not written
in Julia).

An oral presentation (20 minutes) of the work.

When evaluating your work, I will take into account:

the quality (that is, the value) of the numerical solutions computed for the numerical
instances, including instances that will be presented to you on the day of the final exam;

the correctness, the efficiency, the level of sophistication and the elegance of the modeling
work and of the algorithms;

the quality of the written report and of the oral presentation.

Keep in mind that, in the framework of this course, I am more interested in the algorithmic content
of your computer code than in its other features (such as user interfaces).

Computational Optimization 2016-2017 Project 1