Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Die Plan-Klasse ====== 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. === Initialisierung === <code python> from plan import Plan # Daten einlesen (Nesa export und Workshop Definitionen) plan = Plan("../data/2024.csv", "../data/2024m_w.csv") </code> === Verfügbare Variablen === Siehe Kommentar in ''plan.py'' ab ca. Zeile 4. ==== Wichtige Code-Schnipsel ==== === 1. Priorität eines Teilnehmers s === <code python> workshop_nummer = plan.o[s][0] # 1. Prio (Index [s][1] wäre zweite Prio etc.) </code> === Workshop w zur Zeit t schon voll? === <code python> 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 </code> === Beste Prio für Teilnehmer s zur Zeit t einplanen === <code ptyhon> 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! </code> Mögliche Variante für obigen Code: Mögliche Zeitfenster innerhalb der ''for i''-Schleife durchgehen (und so beide Zeitfenster ausnutzen). === Umteilen === 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: <code python> 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) </code> === Zufällige Reihenfolge === Hier am Beispiel der Teilnehmernummern <code python> import random randomS = list(range(plan.S)) random.shuffle(randomS) # Zufällige Reihenfolge aller Teilnehmer for s in randomS: # Tu wat mit s </code> lehrkraefte/blc/informatik/glf25/glueckswerkstatt/plan.txt Last modified: 2025/11/03 06:49by Ivo Blöchliger