Ein Klasse in Python kann als Sammlung von Variablen und Funktionen (die mit diesen Variablen arbeiten) betrachtet werden.
Die Klasse ist in der Datei plan.py definiert, die im Verzeichnis planung liegt.
from plan import Plan # Daten einlesen (Nesa export und Workshop Definitionen) plan = Plan("../data/2024.csv", "../data/2024m_w.csv")
Siehe Kommentar in plan.py ab ca. Zeile 4.
workshop_nummer = plan.o[s][0] # 1. Prio (Index [s][1] wäre zweite Prio etc.)
if plan.b[w][t] >= plan.m[w]: # Tu wat, wenn Workshop w zur Zeit t schon voll else: # Tu wat anderes, wenn noch Platz im Workshop w zur Zeit t
for i in range(4):
w = plan.o[s][i]
if plan.b[w][t] < plan.m[w]: # Hat noch Platz?
if plan.x[s][t]==-1: # Teilnehmer s zur Zeit t noch nicht verplant?
if not w in plan.x[s] # Teilnehmer s besucht Workshop w noch nicht?
plan.schedule(s,w,t) # Einplanen!
Mögliche Variante für obigen Code: Mögliche Zeitfenster innerhalb der for i-Schleife durchgehen (und so beide Zeitfenster ausnutzen).
Teilnehmer suchen, die zur Zeit t den Workshop der Priorität p1 besucht, in in den Workshop der Priorität p2'' umgeteilt werden könnte:
umteilbar = [] for s in range(plan.S): if not plan.laueri[s]: # Nur nicht Laueris (sonst keine Prioritäten-Liste o) if plan.x[s][t]==plan.o[s][p1]: # Teilnehmer s zur Zeit t in Workshop der Prio p1 eingeteilt? w2 = plan.o[s][p2] # Workshop der Prio p2 if plan.b[w2][t]<plan.m[w2]: # Hat noch Platz umteilbar.append(s)
Hier am Beispiel der Teilnehmernummern
import random randomS = list(range(plan.S)) random.shuffle(randomS) # Zufällige Reihenfolge aller Teilnehmer for s in randomS: # Tu wat mit s