Compare commits

..

No commits in common. "master" and "weekendxiii" have entirely different histories.

5 changed files with 101 additions and 100 deletions

3
.gitignore vendored
View File

@ -1,3 +0,0 @@
__pycache__
data
output

View File

@ -4,99 +4,102 @@ config:
likes: 1 likes: 1
hates: 3 hates: 3
# TODO: load_dev # TODO: load_dev
ignore: [-] ignore: []
task_re: "[ ,/]+" task_re: "[ ,/]+"
tasks: tasks:
hotemetoten: hotemetoten:
personen: [Lyra, mrngm, Pepper] personen: [MrNGm, Pepper, Joost, Annelies]
workload: 4 workload: 4
req: [1, 1, 1] req: [1, 1, 1]
hardcode: hardcode:
- Lyra - MrNGm
- mrngm # - Pepper
- Pepper - Joost
- Annelies
lookup: [hotemetoten] lookup: [hotemetoten]
superkok: superkok:
req: [1, 1, 1] req: [1, 1, 1]
personen: [MacGyver, Annelies, Mieksies] personen: [lynn, pepper, Wassasin]
workload: 4 workload: 4
lookup: [superkok] lookup: [superkok]
hardcode: hardcode:
- MacGyver - Pepper
- Annelies - Wassasin
- Mieksies - lynn
snijden: drankmanagen:
req: [2, 3, 3] req: [1, 1, 1]
workload: 2 personen: [MacGyver]
personen: iedereen workload: 1
lookup: [snijden] lookup: [drankmanagen]
koken: koken:
req: [3, 3, 3] req: [2, 3, 2]
workload: 3 workload: 3
personen: liefhebbers personen: liefhebbers
lookup: [koken, kookhulp, hulpkoken] lookup: [koken, kookhulp, hulpkoken]
afwassen:
req: [3, 6, 6]
workload: 2
personen: iedereen
lookup: [afwassen]
schoonmaken: schoonmaken:
req: [2, 4, 4] req: [3, 4, 4]
workload: 2 workload: 2
personen: iedereen personen: iedereen
lookup: [schoonmaken] lookup: [schoonmaken]
snackdealen: snackdealen:
req: [2, 4, 4] req: [4, 5, 5]
workload: 1 workload: 1
personen: iedereen personen: iedereen
lookup: [hapjes, snackdealen] lookup: [hapjes, snackdealen]
fotograferen: fotograferen:
req: [2, 3, 3] req: [2, 2, 2]
workload: 2 workload: 1
personen: liefhebbers personen: liefhebbers
lookup: [fotograferen] lookup: [fotograferen]
afwassen:
req: [4, 4, 4]
workload: 2
personen: iedereen
lookup: [afwassen]
snijpieten:
req: [3, 4, 4]
workload: 2
personen: iedereen
lookup: [snijden]
pendelen: pendelen:
req: [1, 1, 1] req: [2, 1, 2]
workload: 2 workload: 2
personen: liefhebbers personen: liefhebbers
lookup: [pendelen] lookup: [pendelen]
people: people:
- Abel
- Anita
- Annelies
- Blondie
- carrot
- Dusk
- Eliza
- Harm
- John
- Joost
- Leonie
- lynn
- Loki
- lucus
- Lyra
- Maaike
- Mabl
- MacGyver
- mapzie
- Margot
- Marion
- Marlon
- Mieksies
- Minnozz
- MrNGm
- Nova
- PaxSum
- Pepper - Pepper
- petervdv - Joost
- Quis - MrNGm
- Rian - Annelies
- Roflincopter
- Sjors
- SyntaxTerror
- Tanja
- Thom
- Wassasin - Wassasin
- lynn
- Roflincopter
- lucus
- Weasel - Weasel
- Yorick - ElizaAntoine
- Lyra
- MacGyver
- Abel
- SyntaxTerror
- carrot
- Blondie
- Bwesterb
- M-ou-se
- PaxSum
- Petervdv
- Margot
- Daan
- Laurens
- yorick
- Minnozz
- Sjors
- Quis
- Nova
- Marlon
- Aaron
- AlphaCentauri
- BOBMarlie
- Martijn
- Colin
- Blu
- Hannah

View File

@ -1,12 +1,12 @@
#! /usr/bin/env nix-shell #! /usr/bin/env nix-shell
#!nix-shell -i python3 -p python3 python3Packages.pyyaml glpk -I nixpkgs=flake:nixpkgs #!nix-shell -i python3 -p python python3Packages.pyyaml glpk
import sys import sys
import yaml import yaml
import re import re
import subprocess import subprocess
from collections import OrderedDict from collections import OrderedDict
import glpm import glpm
conf = yaml.safe_load(open('config.yaml', 'r')) conf = yaml.load(open('config.yaml', 'r'))
config = conf['config'] config = conf['config']
config['ignore'].append('') config['ignore'].append('')
tasks = OrderedDict(conf['tasks']) tasks = OrderedDict(conf['tasks'])

View File

@ -18,6 +18,7 @@ set D := 1..D_count;
/* aanwezigheid x workload for that day */ /* aanwezigheid x workload for that day */
param Costs{p in P}, integer, >= 0; param Costs{p in P}, integer, >= 0;
/* Person p likes to solve jobs j */ /* Person p likes to solve jobs j */
param L{p in P, j in J} default 0, binary; param L{p in P, j in J} default 0, binary;
@ -48,11 +49,11 @@ s.t. hardcode{p in P, j in J, d in D}: A[p,j,d] >= Q[p,j,d];
/* A person only has one task per day, at most */ /* A person only has one task per day, at most */
s.t. max_load_person{p in P, d in D}: sum{j in J} A[p,j,d] <= max_load[p,d]; s.t. max_load_person{p in P, d in D}: sum{j in J} A[p,j,d] <= max_load[p,d];
/* A person has at least 1 task */ /* A person has at least D-1 tasks */
s.t. min_load_person{p in P}: sum{j in J, d in D} A[p,j,d] >= 1; #s.t. min_load_person{p in P}: sum{j in J, d in D} A[p,j,d] >= min_load[p];
/* A person does not perform the same job on all days */ /* A person does not perform the same job on all days */
/* s.t. duplicate_jobs{p in P, j in J}: sum{d in D} A[p,j,d] <= D_count-1; */ /*s.t. duplicate_jobs{p in P, j in J}: sum{d in D} A[p,j,d] <= D_count-1;*/
s.t. max_load_person_total{p in P}: (sum{d in D, j in J} A[p,j,d] * Wl[j]) <= ML; s.t. max_load_person_total{p in P}: (sum{d in D, j in J} A[p,j,d] * Wl[j]) <= ML;

View File

@ -1,31 +1,31 @@
Abel - pendelen Pepper koken, snijden fotograferen, snackdealen
Anita schoonmaken, afwassen fotograferen, pendelen Joost afwassen, koken, snijden fotograferen, snackdealen
carrot koken, snijden - Annelies afwassen, fotograferen, pendelen koken, snijden, snackdealen
Dusk pendelen, snijden, koken afwassen, schoonmaken Laurens pendelen, koken, snijden schoonmaken
Eliza schoonmaken, koken, snijden snackdealen, pendelen, afwassen Weasel fotograferen, koken, snijden snackdealen, schoonmaken
Harm pendelen, fotograferen snackdealen, schoonmaken Martijn koken, snijden schoonmaken, afwassen
Joost snijden fotograferen, pendelen, schoonmaken, snackdealen PaxSum koken, snijden, afwassen fotograferen, snackdealen
Leonie koken, snijden, pendelen snackdealen, fotograferen petervdv snackdealen, pendelen koken, afwassen, schoonmaken, fotograferen
Loki snijden, koken, snackdealen afwassen, schoonmaken Lyra fotograferen, afwassen, snijden pendelen
lucus koken, snijden schoonmaken, snackdealen Nova pendelen, koken, snijden fotograferen, schoonmaken, snackdealen
lynn koken, snackdealen, schoonmaken afwassen, snijden, koken ElizaAntoine afwassen, schoonmaken, fotograferen koken, snijden, snackdealen, pendelen
Maaike snijden, koken, afwassen snackdealen, fotograferen, pendelen SyntaxTerror fotograferen, snijden, afwassen koken, snackdealen, pendelen
Mabl snijden, schoonmaken fotograferen, pendelen, snackdealen AlphaCentauri snackdealen, schoonmaken, afwassen koken, pendelen, snijden
mapzie snackdealen snijden, koken, schoonmaken, afwassen Daan pendelen, fotograferen afwassen, schoonmaken
Margot snijden, koken, afwassen snackdealen, schoonmaken Lucus koken, snijden, afwassen fotograferen, schoonmaken
Marion snijden, koken, afwassen snackdealen, fotograferen, schoonmaken Abel fotograferen, snijden, afwassen schoonmaken, koken
Marlon koken, snijden afwassen, schoonmaken yorick snijden, afwassen fotograferen, schoonmaken
Minnozz fotograferen, snijden schoonmaken, afwassen bwesterb snijden, koken afwassen, schoonmaken, snackdealen
Nova pendelen, koken, snijden snackdealen, fotograferen, schoonmaken Quis snijden, koken, snackdealen schoonmaken
PaxSum snijden, koken, afwassen fotograferen, snackdealen Minnozz snijden, koken schoonmaken, snackdealen, afwassen
petervdv snackdealen, pendelen - Margot snijden, koken, afwassen schoonmaken, snackdealen, fotograferen
Quis snackdealen, koken, snijden fotograferen, schoonmaken lynn fotograferen
Rian snijden, afwassen snackdealen, fotograferen, pendelen Colin Afwassen, schoonmaken, snackdealen koken, snijden
Roflincopter schoonmaken, afwassen koken Sjors Pendelen, schoonmaken, snackdealen koken, snijden
Sjors pendelen, snackdealen koken, afwassen Blondie fotograferen, afwassen, snackdealen schoonmaken, snijden
SyntaxTerror snijden, schoonmaken, afwassen snackdealen, pendelen Roflincopter schoonmaken, snijden, afwassen snackdealen, fotograferen
Tanja snijden, koken, afwassen, schoonmaken fotograferen, pendelen BOBMarlie fotograferen, koken, snijden afwassen, schoonmaken, snackdealen
Thom koken, afwassen, pendelen fotograferen, snackdealen Aaron fotograferen, afwassen, snijden koken, schoonmaken, snackdealen, pendelen
Wassasin snackdealen, koken, snijden afwassen, schoonmaken, fotograferen Wassasin koken, snijden, snackdealen fotograferen
Weasel fotograferen, snijden schoonmaken, snackdealen carrot pendelen, schoonmaken, koken fotograferen, snackdealen
Yorick koken, snijden, afwassen snackdealen, fotograferen M-ou-se snijden, snackdealen afwassen, schoonmaken, fotograferen