summaryrefslogtreecommitdiff
path: root/glpk-5.0/examples/shiftcov.mod
diff options
context:
space:
mode:
authorPasha <pasha@member.fsf.org>2023-01-27 00:54:07 +0000
committerPasha <pasha@member.fsf.org>2023-01-27 00:54:07 +0000
commitef800d4ffafdbde7d7a172ad73bd984b1695c138 (patch)
tree920cc189130f1e98f252283fce94851443641a6d /glpk-5.0/examples/shiftcov.mod
parentec4ae3c2b5cb0e83fb667f14f832ea94f68ef075 (diff)
downloadoneapi-master.tar.gz
oneapi-master.tar.bz2
simplex-glpk with modified glpk for fpgaHEADmaster
Diffstat (limited to 'glpk-5.0/examples/shiftcov.mod')
-rw-r--r--glpk-5.0/examples/shiftcov.mod244
1 files changed, 244 insertions, 0 deletions
diff --git a/glpk-5.0/examples/shiftcov.mod b/glpk-5.0/examples/shiftcov.mod
new file mode 100644
index 0000000..1e036c8
--- /dev/null
+++ b/glpk-5.0/examples/shiftcov.mod
@@ -0,0 +1,244 @@
+/* File: shiftcover.mod */
+
+/* WORKFORCE SHIFT COVERAGE assignment problem */
+
+/* Written by Larry D'Agostino <larrydag -at- sbcglobal -dot- com>
+
+ Maximize Productivity with Industrial Engineer and Operations Research Tools
+ http://industrialengineertools.blogspot.com
+
+
+/* The WORKFORCE SHIFT COVERAGE is an assigment problem that determines
+ the schedule of crew given available time and shifts.
+
+ The objective is to cover the available time given hourly demand with the minimum
+ number of crew members.
+
+ This is a set covering problem that is very common among finding crew
+ and shift allocations. Notice in the data section the workforce shift allocation
+ per day of the week.*/
+
+
+/* ----- Model PARAMTERS and SETS -----*/
+
+param numhrs;
+/* number of hours of operations in a given day */
+
+param dys;
+/* number of days in a week */
+
+set S;
+/* set of crew shifts */
+
+set H := 1..numhrs;
+/* set of hours of a day*/
+
+set D;
+/* set of days of a week*/
+
+param dmnd{h in H, d in D};
+/* demand for crew members given h hour and d day */
+
+param shifts{d in D, h in H, s in S};
+/* shifts to assign to crew members given d day, h hour, and s shift schedule
+
+/*----- Model VARIABLES -----*/
+
+var crew{s in S}, integer, >=0;
+/* number of crew assigned to shift S */
+
+
+/*----- Model CONSTRAINTS -----*/
+
+s.t. Coverage{h in H, d in D}: sum{s in S} crew[s]*shifts[d,h,s] >= dmnd[h,d];
+/* number of crew to cover with a shift given hourly demand and day */
+
+
+/*----- Model OBJECTIVE -----*/
+
+minimize obj: sum{s in S} crew[s];
+/* minimize number of crew to cover demand*/
+
+solve;
+display crew;
+
+printf "\n";
+printf "Total Crew: %3d\n\n", sum{s in S} crew[s];
+
+
+
+printf "\n\n";
+printf "Weekly Crew Schedule\n\n";
+printf "Hour ";
+printf{d in D} " %s ", d;
+printf "\n";
+for {h in H} {
+ printf " %2s ",h;
+ printf{d in D} " %3d ", sum{s in S} crew[s]*shifts[d,h,s];
+ printf "\n";
+}
+printf"\n";
+
+
+
+data;
+
+param numhrs := 16;
+
+set D := SUN, MON, TUE, WED, THU, FRI, SAT;
+
+set S := Sh1, Sh2, Sh3, Sh4, Sh5, Sh6, Sh7, Sh8, Sh9;
+
+param dmnd : SUN MON TUE WED THU FRI SAT :=
+1 0 3 3 4 3 2 0
+2 0 14 14 16 14 12 12
+3 0 24 24 27 24 20 15
+4 0 28 28 32 28 23 15
+5 0 33 33 37 33 24 16
+6 0 34 34 38 34 24 15
+7 0 35 35 39 35 25 11
+8 0 35 35 40 35 27 0
+9 0 34 34 39 34 25 0
+10 0 31 31 35 31 24 0
+11 2 24 24 27 24 25 0
+12 3 19 19 21 19 21 0
+13 2 24 24 27 24 13 0
+14 2 16 16 18 16 0 0
+15 0 7 7 7 7 0 0
+16 0 5 5 5 5 0 0;
+
+
+param shifts :=
+['SUN',*,*]:
+ Sh1 Sh2 Sh3 Sh4 Sh5 Sh6 Sh7 Sh8 Sh9 :=
+1 0 0 0 0 0 0 0 0 0
+2 0 0 0 0 0 0 0 0 0
+3 0 0 0 0 0 0 0 0 0
+4 0 0 0 0 0 0 0 0 0
+5 0 0 0 0 0 0 0 0 0
+6 0 0 0 0 0 0 0 0 0
+7 0 0 0 0 0 0 0 0 0
+8 0 0 0 0 0 0 0 0 0
+9 0 0 0 0 0 0 0 0 0
+10 0 0 0 0 0 0 0 0 0
+11 0 0 0 0 0 0 0 0 1
+12 0 0 0 0 0 0 0 0 1
+13 0 0 0 0 0 0 0 0 1
+14 0 0 0 0 0 0 0 0 1
+15 0 0 0 0 0 0 0 0 0
+16 0 0 0 0 0 0 0 0 0
+
+
+['MON',*,*]:
+ Sh1 Sh2 Sh3 Sh4 Sh5 Sh6 Sh7 Sh8 Sh9 :=
+1 1 0 0 0 0 0 0 0 0
+2 1 1 0 0 0 0 0 0 0
+3 1 1 1 0 0 0 0 0 0
+4 1 1 1 1 0 0 0 0 0
+5 0 1 1 1 1 0 0 0 0
+6 1 0 1 1 1 1 0 0 1
+7 1 1 0 1 1 1 1 0 1
+8 1 1 1 0 1 1 1 1 1
+9 1 1 1 1 0 1 1 1 1
+10 0 1 1 1 1 0 1 1 1
+11 0 0 1 1 1 1 0 1 0
+12 0 0 0 1 1 1 1 0 1
+13 0 0 0 0 1 1 1 1 1
+14 0 0 0 0 0 1 1 1 1
+15 0 0 0 0 0 0 1 1 1
+16 0 0 0 0 0 0 0 1 1
+
+['TUE',*,*]:
+ Sh1 Sh2 Sh3 Sh4 Sh5 Sh6 Sh7 Sh8 Sh9 :=
+1 1 0 0 0 0 0 0 0 0
+2 1 1 0 0 0 0 0 0 0
+3 1 1 1 0 0 0 0 0 0
+4 1 1 1 1 0 0 0 0 0
+5 0 1 1 1 1 0 0 0 0
+6 1 0 1 1 1 1 0 0 1
+7 1 1 0 1 1 1 1 0 1
+8 1 1 1 0 1 1 1 1 1
+9 1 1 1 1 0 1 1 1 1
+10 0 1 1 1 1 0 1 1 1
+11 0 0 1 1 1 1 0 1 0
+12 0 0 0 1 1 1 1 0 1
+13 0 0 0 0 1 1 1 1 1
+14 0 0 0 0 0 1 1 1 1
+15 0 0 0 0 0 0 1 1 1
+16 0 0 0 0 0 0 0 1 1
+
+['WED',*,*]:
+ Sh1 Sh2 Sh3 Sh4 Sh5 Sh6 Sh7 Sh8 Sh9 :=
+1 1 0 0 0 0 0 0 0 0
+2 1 1 0 0 0 0 0 0 0
+3 1 1 1 0 0 0 0 0 0
+4 1 1 1 1 0 0 0 0 0
+5 0 1 1 1 1 0 0 0 0
+6 1 0 1 1 1 1 0 0 1
+7 1 1 0 1 1 1 1 0 1
+8 1 1 1 0 1 1 1 1 1
+9 1 1 1 1 0 1 1 1 1
+10 0 1 1 1 1 0 1 1 1
+11 0 0 1 1 1 1 0 1 0
+12 0 0 0 1 1 1 1 0 1
+13 0 0 0 0 1 1 1 1 1
+14 0 0 0 0 0 1 1 1 1
+15 0 0 0 0 0 0 1 1 1
+16 0 0 0 0 0 0 0 1 1
+
+['THU',*,*]:
+ Sh1 Sh2 Sh3 Sh4 Sh5 Sh6 Sh7 Sh8 Sh9 :=
+1 1 0 0 0 0 0 0 0 0
+2 1 1 0 0 0 0 0 0 0
+3 1 1 1 0 0 0 0 0 0
+4 1 1 1 1 0 0 0 0 0
+5 0 1 1 1 1 0 0 0 0
+6 1 0 1 1 1 1 0 0 0
+7 1 1 0 1 1 1 1 0 0
+8 1 1 1 0 1 1 1 1 0
+9 1 1 1 1 0 1 1 1 0
+10 0 1 1 1 1 0 1 1 0
+11 0 0 1 1 1 1 0 1 0
+12 0 0 0 1 1 1 1 0 0
+13 0 0 0 0 1 1 1 1 0
+14 0 0 0 0 0 1 1 1 0
+15 0 0 0 0 0 0 1 1 0
+16 0 0 0 0 0 0 0 1 0
+
+['FRI',*,*]:
+ Sh1 Sh2 Sh3 Sh4 Sh5 Sh6 Sh7 Sh8 Sh9 :=
+1 1 0 0 0 0 0 0 0 0
+2 1 1 0 0 0 0 0 0 0
+3 1 1 1 0 0 0 0 0 0
+4 1 1 1 1 0 0 0 0 0
+5 0 1 1 1 1 0 0 0 0
+6 1 0 1 1 1 1 0 0 0
+7 1 1 0 1 1 1 1 0 0
+8 1 1 1 0 1 1 1 1 0
+9 1 1 1 1 0 1 1 1 0
+10 0 1 1 1 1 0 1 1 0
+11 0 0 1 1 1 1 0 1 0
+12 0 0 0 1 1 1 1 0 0
+13 0 0 0 0 1 1 1 1 0
+14 0 0 0 0 0 1 1 1 0
+15 0 0 0 0 0 0 1 1 0
+16 0 0 0 0 0 0 0 1 0
+
+['SAT',*,*]:
+ Sh1 Sh2 Sh3 Sh4 Sh5 Sh6 Sh7 Sh8 Sh9 :=
+1 0 0 0 0 0 0 0 0 0
+2 0 0 0 0 0 0 0 0 1
+3 0 0 0 0 0 0 0 0 1
+4 0 0 0 0 0 0 0 0 1
+5 0 0 0 0 0 0 0 0 1
+6 0 0 0 0 0 0 0 0 1
+7 0 0 0 0 0 0 0 0 1
+8 0 0 0 0 0 0 0 0 0
+9 0 0 0 0 0 0 0 0 0
+10 0 0 0 0 0 0 0 0 0
+11 0 0 0 0 0 0 0 0 0
+12 0 0 0 0 0 0 0 0 0
+13 0 0 0 0 0 0 0 0 0
+14 0 0 0 0 0 0 0 0 0
+15 0 0 0 0 0 0 0 0 0
+16 0 0 0 0 0 0 0 0 0;