1 Commits
master ... W15

Author SHA1 Message Date
Margot Sauter
ed15f02249 W15 2022-11-09 18:06:10 +01:00
6 changed files with 71 additions and 112 deletions

3
.gitignore vendored
View File

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

View File

@@ -1,105 +1,99 @@
config:
days: 4
days: 3
weights:
likes: 1
hates: 3
# TODO: load_dev
ignore: [-]
ignore: []
task_re: "[ ,/]+"
tasks:
hotemetoten:
personen: [Tanja, mrngm, MargotM, Eliza]
personen: [Lyra, mrngm, Quis]
workload: 4
req: [1, 1, 1, 1]
req: [1, 1, 1]
hardcode:
- Eliza
- Tanja
- MargotM
- Lyra
- mrngm
- Quis
lookup: [hotemetoten]
superkok:
req: [1, 1, 1, 0]
personen: [MacGyver, carrot, Pepper]
req: [1, 1, 1]
personen: [MacGyver, Loki, Pepper]
workload: 4
lookup: [superkok]
hardcode:
- MacGyver
- carrot
- Loki
- Pepper
snijden:
req: [2, 3, 3, 0]
req: [2, 5, 3]
workload: 2
personen: iedereen
lookup: [snijden]
koken:
req: [3, 3, 3, 0]
req: [2, 3, 2]
workload: 3
personen: liefhebbers
lookup: [koken, kookhulp, hulpkoken]
afwassen:
req: [3, 6, 6, 0]
req: [3, 6, 6]
workload: 2
personen: iedereen
lookup: [afwassen]
schoonmaken:
req: [2, 4, 4, 0]
req: [2, 4, 4]
workload: 2
personen: iedereen
lookup: [schoonmaken]
snackdealen:
req: [2, 4, 4, 0]
req: [2, 4, 4]
workload: 1
personen: iedereen
lookup: [hapjes, snackdealen]
fotograferen:
req: [2, 3, 3, 0]
workload: 2
req: [2, 3, 3]
workload: 1
personen: liefhebbers
lookup: [fotograferen]
pendelen:
req: [1, 1, 1, 0]
req: [1, 1, 1]
workload: 2
personen: liefhebbers
lookup: [pendelen]
people:
- Lyra
- mrngm
- Quis
- MacGyver
- Loki
- Pepper
- Abel
- Alexandra
- Annelies
- Annemiek: # niet op zondag
dagen: [0,1]
- avel
- Blu
- carrie
- Ayke
- blu
- carrot
- cuttlefish
- Dusk
- Eliza
#- Harm
- Harmen
- Laurens
- eliza
- Farnaz
- Harm
- Joost
- Leonie
- lucus
- Lynn
- Lyra
- Maaike
- Mabel
- MacGyver
- Mapzie
- MargotM
- Margot
- Marley
- Marlon
- Mieksies
- mike
- Minnozz
- mrngm
- Nova
- PaxSum
- Pepper
- Petervdv
- petervdv
- phedny
- PP
- Quis
- Rian
- roflin
- RTB
- Sjors
- SyntaxTerror
- Tanja
#- Tauri
- Thom
- Weasel
- Yorick
- yorick

View File

@@ -1,5 +1,5 @@
#! /usr/bin/env nix-shell
#!nix-shell -i python3 -p python3 python3Packages.pyyaml glpk -I nixpkgs=flake:nixpkgs --extra-experimental-features flakes
#!nix-shell -i python3 -p python python3Packages.pyyaml glpk
import sys
import yaml
import re
@@ -143,9 +143,6 @@ def write_data(people, tasks, file=sys.stdout):
print(glpm.param("WL", config['weights']['likes']), file=file)
print(glpm.param("WH", config['weights']['hates']), file=file)
def write_tasks(people, tasks, file=sys.stdout):
days_tpl = " dag !!" * config['days']
print("! {} !!{} {} !! {}".format("wie", days_tpl, "vrolijkheid", "workload"), file=file)
print("|-", file=file)
for name, p in people.items():
days = [[] for i in range(config['days'])]
for (d,t) in p.does:
@@ -154,7 +151,7 @@ def write_tasks(people, tasks, file=sys.stdout):
days_fmt = " {} ||" * len(days)
days_filled = days_fmt.format(*map(q, days))
print("| {} ||{} {} || {}".format(name, days_filled, p.vrolijkheid(), p.workload(tasks)), file=file)
print("|-", file=file)
print("|-")
people = read_people(conf['people'])
with open('prefs_table', 'r') as pref_file:
read_prefs(pref_file, tasks, people)

View File

@@ -48,11 +48,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 */
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 */
s.t. min_load_person{p in P}: sum{j in J, d in D} A[p,j,d] >= 1;
/* 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] >= min_load[p];
/* 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;

View File

@@ -1,26 +1,28 @@
Abel fotograferen, snijden, koken pendelen
avel snackdealen, fotograferen koken, snijden, afwassen
Blu koken schoonmaken, snackdealen
Carrie snijden, pendelen snackdealen, koken
Cuttlefish koken, snijden, afwassen, schoonmaken snackdealen, fotograferen
Dusk koken schoonmaken, afwassen, snackdealen
Laurens pendelen, koken, snijden schoonmaken, afwassen, fotograferen
Leonie pendelen, snijden schoonmaken, snackdealen
lucus snijden, koken snackdealen, schoonmaken
lynn snackdealen schoonmaken, koken, afwassen, snijden
Lyra schoonmaken, afwassen, snackdealen snijden, koken
Maaike afwassen schoonmaken, snackdealen
Mabel schoonmaken, afwassen snackdealen, koken
Marlon koken, snijden, snackdealen schoonmaken, afwassen
Minnozz fotograferen, snijden schoonmaken, afwassen
Nova pendelen, koken, snijden schoonmaken, afwassen, snackdealen
PaxSum koken, snijden schoonmaken, snackdealen
Petervdv pendelen, snackdealen snijden, koken, afwassen, fotograferen
PP koken, snijden snackdealen
Quis snijden schoonmaken, fotograferen
Rian afwassen, snijden schoonmaken, snackdealen
roflin afwassen schoonmaken snackdealen koken
SyntaxTerror schoonmaken, afwassen koken, pendelen, snackdealen
Thom afwassen fotograferen, snackdealen
Weasel fotograferen, snijden koken, schoonmaken
Yorick snijden, koken snackdealen
Abel fotograferen, afwassen, snijden pendelen, koken
Alexandra snijden, snackdealen afwassen, schoonmaken
Annelies afwassen, fotograferen snackdealen
Annemiek schoonmaken, koken pendelen, afwassen
avel snackdealen snijden, koken, afwassen
blu snijden, snackdealen, pendelen afwassen, schoonmaken
carrot koken, snijden fotograferen, schoonmaken
eliza snijden, afwassen koken, snackdealen, pendelen
Farnaz snijden, koken, snackdealen pendelen, afwassen, fotograferen
Harm fotograferen, pendelen, afwassen schoonmaken, snackdealen
Joost snijden fotograferen, pendelen, koken, afwassen, schoonmaken, koken
Leonie snijden, pendelen, snackdealen fotograferen, schoonmaken
lucus snijden, koken, afwassen schoonmaken
Margot snijden, afwassen, fotograferen koken, snackdealen, schoonmaken
Marley snijden, afwassen fotograferen, snackdealen
Marlon snijden, koken, snackdealen afwassen, schoonmaken
Minnozz fotograferen, snijden koken, afwassen, schoonmaken, pendelen, snackdealen
Nova koken, snijden, pendelen fotograferen, schoonmaken
PaxSum koken, snijden schoonmaken, afwassen
petervdv snackdealen, pendelen koken, afwassen, fotograferen
phedny snijden, snackdealen afwassen, schoonmaken
PP koken, snijden pendelen, fotograferen, schoonmaken
Rian snijden, afwassen, snackdealen fotograferen, pendelen
Sjors snackdealen, pendelen schoonmaken
SyntaxTerror fotograferen pendelen, koken, snackdealen
Tanja snijden, afwassen, schoonmaken fotograferen, pendelen
Thom koken, snijden, afwassen fotograferen, snackdealen
yorick koken, snijden, afwassen fotograferen

View File

@@ -1,31 +0,0 @@
#!/usr/bin/env python
import sys
def process_line(line):
line = line.rstrip(" \n")
if line == "|-":
return
if not line.startswith("|"):
return
line = line.lstrip("| ")
line = line.replace("[[", "")
line = line.replace("]]", "")
line = line.replace("User:", "")
splitted = [x.strip() for x in line.split("||")]
if len(splitted[0].split("|")) == 2:
splitted[0] = splitted[0].split("|")[1]
if splitted[1] == "":
splitted[1] = "-"
if splitted[2] == "":
splitted[2] = "-"
print(f"{splitted[0]}\t{splitted[1]}\t{splitted[2]}")
def main():
for line in sys.stdin:
process_line(line)
if __name__ == "__main__":
main()