Describe (no need to solve) how one would use column generation to solve this problem and why it is necessary

Business Optimization

Consider the linear program

Minimize 5×1 + 4×2 + 2×3

Subject to

10×1 + 12×2 + 2×3 >= 14
5×1 + 3×2 + 10×3 >=20

(5 marks) Determine the dual of the above program
(5 marks) Suppose this is an integer program. Solve the problem using branch and bound. Follow the format used on Slides 37-39 in the lecture notes 4. Integer Programming. You can use Excel or OPL to solve the LP relaxations.

Question 2 (10 marks)

Take a look at the Cut Stock problem described on Slides 29-30 in the lectures slides 4. Integer Programming. Another way of formulating the problem is to describe “patterns”. A pattern consists of a set of cuts from a big roll. For instance, one pattern might be to cut a 100 long large roll into one #2 (length 36) and two #3 (length 31). One can then formulate the problem using decision variables that determine how many of each pattern to use.

(8 marks) Reformulate the Cut Stock problem using these revised decision problems.
(2 marks) Describe (no need to solve) how one would use column generation to solve this problem and why it is necessary.

Question 3 (20 marks)

You have been asked by the coach of your baseball team to help him create the lineup for a two game tournament coming up this coming weekend. (Don’t worry, you don’t need to know much about baseball to do this!) There are 14 players on the team and the following positions that need to be filled each inning of each game – Catcher (C), Pitcher (P), First base (1B), Second Base (2B), Third Bae (3B), Shortstop (SS), Left field (LF), Centerfield (CF), Right Field (RF) and Extra Hitter (EH). Any player not assigned to a position in a given inning is assigned to the bench (B). Each game consists of 6 innings. The following constraints must be satisfied:

Each player must be assigned a position or placed on the bench each inning of both games.
Each position must be covered in each inning of each game.
In an Excel file provided, there is a table (named “PositionLimit”) that provides a limit to the number of innings each position player can be assigned a given position in the tournament. These upper bounds need to be satisfied.
Similarly, there is a table (named “MinInnings”) that provides a lower bound on the number of times a given player is assigned to a given position.
For each position, there is an upper bound on the number of times any player can be assigned to a given position in a single game. (Named range “MaxGame” in the Excel file).
Anyone assigned to pitch must be given at least two innings in a row
The coach has a few positions that he wants assigned to specific players in each game. These are outlined in two tables in the Excel file named “FixedGameOne” and “FixedGameTwo”. These requirements must be satisfied.

The coach’s primary objective is fairness. You are partway through the year so each player has already played a certain number of innings (given in the excel file). The coach wants to make sure that the discrepancy in total innings played (prior to + during the tournament) is minimized by the end of the tournament.

Build and solve the model in such a way that the actual values in the tables can be changed without having to make any changes in your .mod or .dat files. Provide the optimized schedules for the two games.
The coach decides that he wants to also have the model minimize the number of times that a player changes positions during a game. Thus, the coach would prefer a model that assigned a player 2B, 2B, 3B, 3B, C, C over the six innings as opposed to one that assigned the same player 2B, 3B, 2B, C, 3B, C, 2B. Include this preference into the objective and re-solve.
Finally, it is actually a requirement that someone who pitches does not return to pitch once s/he has stopped pitching in a game. Include this constraint in the model and re-solve.

I will give you a few hints.

Hint 1: The main decision variable should be a binary decision variable x[h,i,j,k] which equals one if player i is assigned to position j in inning k during game h.
Hint 2: The Excel fil contains three sheets. The first (called “data”) has the input data. The second (called “Line up”) will provide the final schedules if you write the results data properly to the Excel file. The third sheet (called “Results”) has a named range for writing the solution to Excel. I used a tuple in the .mod file of the following form:

tuple AssignmentTuple{
int Games;
string Players;
string Placement;
int Innings;
}
{AssignmentTuple} LineUp = {<h,i,j,k> | h in Games, i in Players, j in Placement, k in Innings : x[h,i,j,k] == 1};

This writes the solution to the tuple “LineUp” which can then be written to the Excel file.

Hint 3: You will need to add 2 additional decision variable to solve (a) – one that captures the Most Innings played by any player and another that captures the Least Innings played by any player and then minimize the difference. You will need to a decision variable to track switches between positions to solve (b) and you will need to add a decision variable that tracks whether player has pitched in a given inning to answer (c).

Hint 4: I found it helpful to create a set that covers positions (P, C, 1B, 2B, 3B, SS, LF, CF, RF, EH) and another that captures placements (P, C, 1B, 2B, 3B, SS, LF, CF, RF, EH and B)