Mixed Integer Optimization for Case Study:
Province Healthcare
Students may work in groups of up to three people. You may consult your textbooks, your notes, online
information, and me. You may not solicit help from other sources.
Due: Tuesday December 5, 2022. (30 points.)
1 Introduction
The solution found in Part 1 gives fractional values for many variables. To make the model more realistic,
the following conditions should be imposed:
- In reality, the variables used in the original model for nurses, patients and beds correspond
to 10 actual patients, 10 actual nurses and 10 actual beds, respectively. The number of actual
patients and actual nurses moved between any city and any hospital should be integer.
All the numbers in the patients.dat file remain the same, and apply to the original variables
move_pat, move_nurse and capacity_expansion. You need to set up new integer variables for
the actual patients and the actual nurses, and relate them to the original variables move_pat
and move_nurse, respectively.
(As long as the number of actual patients is integral, the number of actual beds will also be
integral at optimality.)
- If any actual patients are moved from one city to a hospital in a different city then an
additional fixed charge of $800 must be paid. The flat fee of $800 is in addition to the
transportation costs, and is a charge required to set up a contract with a transportation
company. Note that this cost is not per patient, but a single cost to be paid if any patients
are transported. Further, if any actual patients are moved then at least 10 must be moved.
- Actual nurses must be moved in sets of six. For example, the number of actual nurses from
Apple who are assigned to Grape must be a multiple of 6.
- If any nurses are moved from city i to hospital j then no nurses can be moved from city j
to hospital i, for any i≠j.
As in Part 2, you are welcome to modify my model file.
AMPL notes
- You need to make sure you use a solver designed for integer programs, such as CPLEX or Gurobi.
Note that the default solver MINOS will ignore integrality restrictions. To switch solver, you can use
the command:
option solver cplex;
- You can use the keywords binary and integer, for example as:
var useedge{EDGES} binary;
var bulkpurchase{FOODS,SOURCES} >=0, integer;
- To see more details of the progress of the solver when using CPLEX, you can use the
command
option cplex_options ’mipdisplay=1’;