Kurs42 To CNF:Hauptseite
Hinweise
Kurs42_To_CNF wurde in JAVA von Benjamin Bartsch programmiert. Die Software ist "open source" und unterliegt der MIT oder der CC0 Lizenz, d.h. der Quellcode steht allen frei zur Verfügung, aber es dürfen keinerlei Ansprüche geltend gemacht werden. Wenn Sie den Autor kontaktieren möchten, finden Sie die E-Mail-Adresse innerhalb des Programms.
Das Programm arbeitet auf Basis der Daten des Programms Kurs42. Wenn Sie eine Import/Exportfunktion zu anderen Programmen wünschen, können Sie den Autor kontaktieren.
Das Programm unterstützt eine Vielzahl von Nebenbedingungen (Regeln genannt). Wenn Sie für Ihre Schule zusätzliche Regeln benötigen, können Sie ebenfalls den Autor kontaktieren.
Vorbereitungen
- Laden Sie sich den folgenden SAT-Solver (https://github.com/msoos/cryptominisat/releases) herunter und speichern Sie die Datei (für Windows: cryptominisat5-win-amd64-nogauss.exe) auf Ihrem PC und merken Sie sich den Pfad.
- Installieren Sie ggf. JAVA und laden sich sich dann die aktuellste Version von Kurs42_To_CNF herunter (https://schulverwaltungsinfos.nrw.de/svws/forum/viewtopic.php?f=71&t=20&start=180).
- Sie haben nun das Programm in Form einer JAR-Datei, welche man mit einem Doppelklick starten kann. Dort müssen Sie dort zunächst den Pfad zu cryptominisat...exe angeben und können dann arbeiten, aber zuvor müssen Sie jedoch noch aus Kurs42 Ihre Daten exportieren.
Daten in Kurs42 vorbereiten und exportieren
- Die Laufbahnen sollten wie üblich bereits vor dem Blocken gründlich geprüft werden.
- In Kurs42 werden unter Bearbeiten --> Kurse einrichten bzw. Bearbeiten --> Kurse einrichten (ohne Fachwahl) die Anzahl der Kurse pro Fach festgelegt.
- Unter Extras --> Einstellungen wird bei Import-Export bei Kodierung von Textexporten auf den Eintrag UTF8 gestellt.
- Unter Import/Export --> Export in Textdatei werden sämtliche Häkchen gesetzt und ein Zielordner gewählt.
- In Kurs42_To_CNF unter Datei --> Kurs42-Ordner öffnen den soeben mit dem Export befüllten Ordner auswählen.
- Die Abfrage Sollen alle Schüler/Kurse aus KURS42 fixiert werden? kann zunächst verneint werden (diese Abfrage wird an anderer Stelle erklärt, wenn es um das Blocken der Zusatzkurse in der Q2 oder das Neuladen eines Blockungsegebnisses geht).
- Das Fenster Debug ganz unten sollte leer sein.
- Das Fenster Statiskik gibt Importinformationen an, z.B. wie viele Schüler importiert und wie viele Fächer gewählt wurden.
Blocken mit Kurs42_To_CNF
Das Fenster Maximalwerte enthält allgemeine Voreinstellungen zur Blockung. Erfahrungsgemäß bietet sich das Vorhegen an, zunächst die Umwähler auf 0 zu setzen, dafür aber die Maximale Kursgrößendifferenz auf einen sehr hohen Wert, z.B. 35 zu setzen. Die Maximale Kursgröße sollte dem an der Schule üblichen Wert entsprechen. Die Anzahl der Schienen muss mindestens so groß sein, wie die Anzahl der Kurse des Schülers mit den meisten Kursen.
Im Fenster Regeln werden die Regeln definiert, an die sich das Programm zwingend halten soll. Sollen z.B. alle Religions und Philosophie-Kurse unbeding parallel liegen, und zwar in Schiene 3, wählt man in den vier Drop-Down-Menüs Folgendes aus:
- Fach-Art
- Rel,GK
- in Schiene
- 3
Es erscheint im Regelfenster Fach-Art#REL;GK#in Schiene#3. Auch durch andere Regelkombinationen kann dieses Ergebnis erzwungen werden, hier gilt es auszuprobieren und Erfahrungen zu sammeln. Die Anzahl der Threads kann zunächst auf 1 stehen (mehr dazu unter Technische Fragen, siehe unten), das Ausgabeformat ist üblicherweise Neu+BOM
Berechnen Ein Klick auf den Button Berechne! führt eine Berechnung gemäß der Maximalwerte und Regeln durch. Das Ergebnis wird in einem Tab, z.B. B1_SAT in sechs Fenstern dargestellt, die sich von selbst erklären. Wenn es mathematisch kein Ergebnis geben kann, erscheint UNSAT als Name des Tabs. Hier könnte es sein, dass es keine Lösung gibt, in der es keine Umwähler gibt. Dann stellt erhöht man die Zahl der Umwähler solange, bis ein Egebnis möglich ist. So lässt sich die Mindestzahl an Umwähler ermitteln. Dieses Ergebnis enhält allerdings noch eine viel zu große Kursgrößendifferenz, die sich im nächsten Schritt optimieren lässt. Siehe dazu unten Strategien und Tipps.
Daten in Kurs42 importieren
Nach einer erfolgreichen Berechnung einer Blockungung legt das Programm im oben angelegten Ordner für den Export aus Kurs einen Unterordner an, dessen Name dem TAB B1_SAT entspricht und zusätzlich das Ausgabeformat enthält, hier also B_00001_NEU_UTF8_BOM. In disem Ordner gibt es auch eine Textdatei, die das Ergebnis der Berechnung und die angewendeten Regeln dokumentiert, sodass man das Vorgehen rekonstruieren kann. In Kurs42 gibt es zwei Möglichkeiten, diese Blockung zu importieren:
- Unter Import/Export --> Import der SAT-Solver-Ergebnisse alle Häkchen setzen und den Ordner B_00001_NEU_UTF8_BOM auswählen. Die Blockung ist importiert und kann z.B. unter Blocken --> Automatisch Blocken eingesehen und bearbeitet werden.
- Unter Datei --> Neue Blockung aus Textdatei wird der o.g. Ordner gewählt, alle Häkchen gesetzt und importiert.
Das zweite Vorgehen hat den Vorteil, dass man nicht versehentlich eine bestehende Blockung überschreibt und so die frisch importierte Blockung unter einem eigenen Namen speichern kann.
Jahrgänge Blocken
Die hier vorgestellten Regeln sind nur Beispiele einer Schule mit ihren jeweiligen schulspezifischen Anforderungen und können niemals 1:1 übernommen werden. Sie sollen Anregungen schaffen, wie man für seine Schule ein gutes Ergebnis erzielen kann.
Blockung der neuen EF mit Stammgruppen
In diesem Beispiel wird davon ausgegangen, dass die Schule in der EF quasi vierzügig ist und die Fächer Englisch, Mathe, Deutsch und Sport jeweils in der gleichen Zusammensetzung stattfinden sollen. Dazu werden folgende Regeln angewendet:
- Kurs#D-GK1#in Schiene#1
- Kurs#M-GK2#in Schiene#1
- Kurs#E5-GK3#in Schiene#1
- Kurs#SP-GK4#in Schiene#1
- Kurs#D-GK2#in Schiene#2
- Kurs#M-GK3#in Schiene#2
- Kurs#E5-GK4#in Schiene#2
- Kurs#SP-GK1#in Schiene#2
- Kurs#D-GK3#in Schiene#3
- Kurs#M-GK4#in Schiene#3
- Kurs#E5-GK1#in Schiene#3
- Kurs#SP-GK2#in Schiene#3
- Kurs#D-GK4#in Schiene#4
- Kurs#M-GK1#in Schiene#4
- Kurs#E5-GK2#in Schiene#4
- Kurs#SP-GK3#in Schiene#4
Des Weiteren sollen alle Philo- und Relikurse für mögliche Kurswechsler parallel liegen:
- Fach-Art#PL;GK#in Schiene (SuS optimal)#5
- Fach-Art#REL;GK#in Schiene (SuS optimal)#5
Der Zusatz SuS optimal führt dazu, dass in allen Kursen eine möglichst gleiche Anzahl SuS sitzen.
Eine Alternative hierzu wäre dieses Vorgehen:
- Kurs#REL-GK1#in Schiene#6
- Kurs#PL-GK1#in Schiene#6
- Kurs#REL-GK2#in Schiene#6
- Kurs#PL-GK2#in Schiene#5
- Kurs#REL-GK3#in Schiene#5
Dies führt dazu, dass in z.B. Schiene 5 auch ein anderer Kurs zusätzlich liegen kann. So gibt es mehr Spielraum und eine bessere Kursgrößendifferenz oder weniger Umwähler.
Der Mathe Vertiefungskurs soll außerhalb der Regulären Blockung liegen. Die vorliegende Schule bietet in der EF zwölf Kurse an und zusätzlich einen Mathe-Vertiefungskurs als 13. Fach.
- Fach-Art#VM;VTF#allein in Schiene#13
Blockung der neuen Q1
Blockung der Q2 (Zusatzkurse)
Strategien und weitere Tipps
Blockungsergebnis optimieren
Das oben angedeutete Vorgehen, zunächst die Umwähler auf 0 zu setzen und die Kursgrößendifferenz sehr hoch, hat den Vorteil, das man relativ schnell zu einem Ergebnis kommt. Wenn dieses Vorgehen zunächst UNSAT liefert, setzt man die Umwähler solange um 1 rauf, bis man die Mindestzahl an Umwählern ermittelt hat. Nun muss die Kursgrößendifferenz noch verringert werden.
Kursfixierungen in %
...
Schülerfixierungen in %
...
Auto-Optimierung
...
Vorhandene Blockungen erneut öffnen ...
Tipps zum Umgang mit Ordner- und Dateinamen
Im Laufe des Blockungsvorgangs können, z.B. durch den Optimierungsvorgang sehr viele Ergebnisse und damit sehr viele Unterordner entstehen. Es bietet sich an, die nicht benötigten immer wieder zu löschen und den Ordner mit einem guten Ergebniss umzubenennen und dabei einheitlich vorzugehen, z.B.
- 5SG_4UW_3KGD_SWnichtparallel
bedeutet, dieses Egebnis enthält 5 Stammgruppen, 4 Umwähler, eine Kursgrößendifferenz von 3 und die SoWi-Kurse liegen nicht parallel. Beim Import in Kurs könnte man diese Blockung unter gleichlautendem Namen abspeichern.
Best Practice-Beispiele
...
Technische Fragen
Was sind Threads?
Video-Tutorials
1) Vorbereitung in Kurs42 - Export der Blockung in Textdateien
2) Grundeinstellungen in Kurs42_To_CNF
3) Rechnungen durchführen
4) Re-Import der Daten in Kurs42