Skip to content

Instantly share code, notes, and snippets.

@leobessa
Created November 16, 2015 22:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leobessa/b12f24c4c9c964cc2dcf to your computer and use it in GitHub Desktop.
Save leobessa/b12f24c4c9c964cc2dcf to your computer and use it in GitHub Desktop.
set WORKERS = 1..5;
set DAYS = 1..31;
set WORKER_DEMAND = {13,13,12,13,13};
set SUNDAYS = {6,13,20,27};
var working {i in DAYS, j in WORKERS} integer >= 0, <= 1;
minimize Total_Work: sum {i in DAYS, j in WORKERS} working[i,j];
subject to Min_Service {i in DAYS}:
sum {j in WORKERS} working[i,j] >= 2;
subject to Demand_13 {j in {1,2,4,5}}:
sum {i in DAYS} working[i,j] >= 13;
subject to Demand_12 {j in {3}}:
sum {i in DAYS} working[i,j] >= 12;
subject to SundayRest {j in WORKERS}:
sum {i in SUNDAYS} working[i,j] <= 3;
subject to Max_Consecutive {j in WORKERS, i in 2..31}:
(sum {a in {1}} working[i-1,j] + working[i,j]) <= 1;
option solver cplex;
solve;
display working;
display {i in DAYS} sum {j in WORKERS} working[i,j];
display {j in WORKERS} sum {i in DAYS} working[i,j];
display {j in WORKERS} sum {i in SUNDAYS} working[i,j];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment