60
Bearbeitungen
Keine Bearbeitungszusammenfassung |
|||
(11 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 9: | Zeile 9: | ||
=== Vorbereitungen === | === 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. | * 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. Für Windows ist die aktuellste Version 5.6.8 (Stand: Mai 2020), Sie müssen den Reiter "Assets" aufklappen, um die Datei zu sehen. Hier ist der Direkt-Link (https://github.com/msoos/cryptominisat/releases/download/5.6.8/cryptominisat5-win-amd64-nogauss.exe). | ||
* 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= | * 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=2000). Sie finden das Programm auch hier (https://www.svws.nrw.de/download/tools), diese Version ist aber nicht immer die aktuellste. | ||
* 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 | * 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 zur Datei cryptominisat...exe angeben und können dann arbeiten, aber zuvor müssen Sie jedoch noch aus Kurs42 Ihre Daten als Textdateien exportieren. '''Bitte vergewissern Sie sich, dass in den Einstellung das Exportformat UTF8 eingestellt ist.''' | ||
Zeile 18: | Zeile 18: | ||
* Die Laufbahnen sollten wie üblich bereits vor dem Blocken gründlich geprüft werden. | * 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. | * 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 ''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. | * Unter ''Import/Export --> Export in Textdatei'' werden sämtliche Häkchen gesetzt und ein Zielordner gewählt. | ||
=== Das erste schnelle Ergebnis mit Kurs42_To_CNF === | |||
Ziel ist es, zunächst ein beliebiges Blockungsergebnis zu erhalten. Anschließend grenzt man seine Bedingungen Schritt für Schritt ein, bis man ein Ergebnis hat mit dem man zufrieden ist. Die Kursgrößendifferenz sollte man nicht eingrenzen, dies kann das Programm später automatisch optimieren. | |||
* In Kurs42_To_CNF unter ''Datei --> Kurs42-Ordner öffnen'' den soeben mit dem Export befüllten Ordner auswählen. | * In Kurs42_To_CNF unter ''Datei --> Kurs42-Ordner öffnen'' den soeben mit dem Export befüllten Ordner auswählen. | ||
* Die Abfrage ''Sollen alle | * Die Abfrage ''Sollen aus Kurs42 alle alle Kurse/Teilnehmer als Regeln 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 Blockungsergebnisses geht. | ||
* Das Fenster ''Debug'' | * Das Fenster ''Debug'' (unten) sollte leer sein. | ||
* Das Fenster ''Statistik'' gibt Importinformationen an, z.B. wie viele Schüler importiert und wie viele Fächer gewählt wurden. | * Das Fenster ''Statistik'' (oben links) gibt Importinformationen an, z.B. wie viele Schüler importiert und wie viele Fächer gewählt wurden. | ||
* Lassen Sie das Fenster ''Regeln'' (unten links) noch leer. | |||
* Das Fenster ''Maximalwerte'' (oben links) enthält allgemeine Voreinstellungen zur Blockung. | |||
** Stellen Sie ''Schienen'' auf die gewünschte Anzahl an. Die Anzahl der Schienen muss mindestens so groß sein, wie die Anzahl der Kurse des Schülers mit den meisten Kursen. | |||
** Belassen Sie die ''Maximale Kursgrößendifferenz'' auf einem sehr hohen Wert (15-20). Dieser wird später automatisch optimiert. | |||
** Stellen Sie die ''Maximale Kursgröße'' auf den größten Wert ein, den Sie alle Kursen zumuten (32-25). Vorsicht: Falls Sie z.B. 32 eingeben und es einen Kurs mit 33 SuS rechnerisch geben müsste, dann ist die Blockung sofort unlösbar (UNSAT). | |||
** Stellen Sie die ''Umwähler'' zunächst auf 0 ein und klicken Sie auf den Button "Berechne!". Über dem Button können Sie die Anzahl der ''Threads'' auf 1 stehen lassen (mehr dazu unter ''Technische Fragen'', siehe unten), das Ausgabeformat ist üblicherweise ''Neu+BOM''. Falls Sie nun '''keine''' Lösung erhalten (ein Indiz dafür ist, dass die Berechnung sehr lange dauert oder es erscheint ein Tab mit dem Hinweis ''UNSAT''), müssen Sie die Umwähler sukzessiv um 1 erhöhen. So lässt sich die Mindestzahl an Umwähler ermitteln. | |||
Sie haben nun eine Lösung. Das Ergebnis wird in einem Tab, z.B. ''B1_SAT'' in sechs Fenstern dargestellt, die sich von selbst erklären. Dieses Ergebnis enthält allerdings noch eine viel zu große Kursgrößendifferenz. Sie könnten nun unter "Auto-Optimierung (GK-KD: Parallele Rechnungen: ___" auf den Button "K" klicken, dann probiert das Programm automatisch die Grundkurs-Kursgrößendifferenz zu optimieren. Dabei werden "___" Prozessorkerne verwendet. Hier müssen Sie ziemlich genau wissen, wie viele Prozessorkerne ihr PC hat. Abbrechen kann man die Automatisierung jederzeit mit dem Button "Stoppe alle Auto-Berechnungen" (oben rechts). | |||
=== Die Blockung mit Nebenbedingungen/Wünschen ergänzen === | |||
Im Fenster '''Regeln''' werden die Regeln definiert, an die sich das Programm zwingend halten soll. Sollen z.B. alle Religions- und Philosophie-Kurse | Im Fenster '''Regeln''' werden die Regeln definiert, an die sich das Programm zwingend halten soll. Sollen z.B. alle Religions- und Philosophie-Kurse unbedingt parallel liegen, und zwar in Schiene 3, wählt man in den vier Drop-Down-Menüs Folgendes aus: | ||
# Fach-Art | # Fach-Art | ||
# Rel,GK | # Rel,GK | ||
Zeile 35: | Zeile 46: | ||
# 3 | # 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. | 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. | ||
Bei der Blockung der Q1 ist folgende Regel relativ typisch: | |||
#LKs allein von Schiene | |||
#1 | |||
#bis Schiene | |||
#2 | |||
=== Daten in Kurs42 importieren === | === Daten in Kurs42 importieren === | ||
Nach einer erfolgreichen Berechnung einer | Nach einer erfolgreichen Berechnung einer Blockung 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: | 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 ''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. | ||
Zeile 231: | Zeile 242: | ||
Es bietet sich an, durchaus 8 Rechnungen gleichzeitg laufen zu lassen, dies hängt vom CPU (der Anzahl der Kerne) ab (siehe ''Technische Fragen'') | Es bietet sich an, durchaus 8 Rechnungen gleichzeitg laufen zu lassen, dies hängt vom CPU (der Anzahl der Kerne) ab (siehe ''Technische Fragen'') | ||
PS: Wenn die Auto-Berechnung abbricht, dann nur, wenn KD1 (GK-Kursdifferenz von 1) gefunden wurde oder eine Reduzierung der Differenz (beweisbar) nicht möglich ist. Es ist manchmal sehr schwer zu erkennen, warum eine weitere Reduzierung nicht möglich ist. In dem Fall würde ich empfehlen in der Liste der Kurse - die nach Kursdifferenz sortiert sind - nach der Fach-Art zu suchen, welche die höchste Kursdifferenz hat. | PS: Wenn die Auto-Berechnung abbricht, dann nur, wenn KD1 (GK-Kursdifferenz von 1) gefunden wurde oder eine Reduzierung der Differenz (beweisbar) nicht möglich ist. Es ist manchmal sehr schwer zu erkennen, warum eine weitere Reduzierung nicht möglich ist. In dem Fall würde ich empfehlen in der Liste der Kurse - die nach Kursdifferenz sortiert sind - nach der Fach-Art zu suchen, welche die höchste Kursdifferenz hat. | ||
Zur Klärung der Strategien: | |||
K = Fixiert zu ... % Kurse in ihren Schienen ausgehend von einer vorhandenen Lösung und versucht die GK-Kursdifferenz um 1 zu reduzieren. | |||
S = Fixiert zu ... % Schüler in ihren Kursen ausgehend von einer vorhandenen Lösung und versucht die GK-Kursdifferenz um 1 zu reduzieren. | |||
KS = K uns S gemischt. | |||
Die % - Anteile werden dynamisch schrittweise reduziert, wenn eine Berechnung keine Lösung gefunden hat. | |||
Findet eine Berechnung dagegen eine Lösung, fängt alles von vorne an (ausgehend von dieser Lösung), außer es wurde eine GK-Kursdifferenz von 1 erreicht. | |||
'''Vorhandene Blockungen erneut öffnen''' | '''Vorhandene Blockungen erneut öffnen''' | ||
Zeile 258: | Zeile 274: | ||
# mit Kurs42 zwei Blockungen erstellen, einmal mit drei und einmal mit vier Grundkursen, diese jeweils exportieren und mit Kurs42_to_CNF blocken oder | # mit Kurs42 zwei Blockungen erstellen, einmal mit drei und einmal mit vier Grundkursen, diese jeweils exportieren und mit Kurs42_to_CNF blocken oder | ||
# man erstellt in Kurs42 eine Blockung mit der höhere Kursanzahl (also drei), blockt diese in CNF und zum Vergleichen wendet man die Regel ''Kurs#D-GK3#max. SuS (ignoriert Kursdifferenzen)#0'' an. So steht der dritte Deutschkurs nicht zur Verfügung. | # man erstellt in Kurs42 eine Blockung mit der höhere Kursanzahl (also drei), blockt diese in CNF und zum Vergleichen wendet man die Regel ''Kurs#D-GK3#max. SuS (ignoriert Kursdifferenzen)#0'' an. So steht der dritte Deutschkurs nicht zur Verfügung. | ||
'''Kurse über zwei Schinen verteilen''' | |||
*Kurs#TRVB-GK1#Schienenanzahl ist#2 | |||
*Kurs#TRVB-GK1#in Schiene#4 | |||
*Kurs#TRVB-GK1#in Schiene#5 | |||
'''Huckepack-Leistungskurse blocken''' | '''Huckepack-Leistungskurse blocken''' | ||
Zeile 269: | Zeile 291: | ||
'''Weitere Tipps''' | '''Weitere Tipps''' | ||
Je mehr Sie fixieren, desto schneller ist das Programm. Aber in bestimmten Situationen sollten Sie Fixierungen vermeiden, wenn sie damit nur erreichen wollen, dass bestimmte Kurse zusammen liegen. Sollen z.B. Kurs A und B zusammen liegen und ebenso Kurs C und D und Sie legen nun Kurs A und B in Schiene 5 und Kurs C und D in Schiene 6, dann nehmen Sie dem Programm die Kombinationsmöglichkeit A, B, C und D in die selbe Schiene zu legen. | |||
'''Beispiel 1: Sie wollen, dass alle Deutsch-Kurse in Schiene 1 sind --> fixieren''' | '''Beispiel 1: Sie wollen, dass alle Deutsch-Kurse in Schiene 1 sind --> fixieren''' | ||
Fach-Art#D;GK#allein in Schiene (SuS optimal)#1 | Fach-Art#D;GK#allein in Schiene (SuS optimal)#1 | ||
'''Beispiel 2: Sie wollen, dass ER-GK1 und ER-GK2 nicht zusammen sind, da es nur eine Lehrkraft gibt''' --> nicht fixieren, sondern | '''Beispiel 2: Sie wollen, dass ER-GK1 und ER-GK2 nicht zusammen sind, da es nur eine Lehrkraft gibt''' --> nicht fixieren, sondern | ||
* Kurs#ER-GK1#niemals zusammen mit#ER-GK2 | * Kurs#ER-GK1#niemals zusammen mit#ER-GK2 | ||
oder besser | oder besser | ||
* Fach-Art#ER;GK#maximale Anzahl pro Schiene#1 | * Fach-Art#ER;GK#maximale Anzahl pro Schiene#1 | ||
'''Beispiel 3: Sie wollen alle Religionskurse in einer Schiene, aber keine anderen Kurse --> fixieren''' | '''Beispiel 3: Sie wollen alle Religionskurse in einer Schiene, aber keine anderen Kurse --> fixieren''' | ||
*Kurs#ER-GK1#in Schiene#6 | *Kurs#ER-GK1#in Schiene#6 | ||
Zeile 286: | Zeile 309: | ||
oder besser die zwei ER-Zeilen ersetzen durch: | oder besser die zwei ER-Zeilen ersetzen durch: | ||
*Fach-Art#ER;GK#in Schiene (SuS optimal)#6 | *Fach-Art#ER;GK#in Schiene (SuS optimal)#6 | ||
'''Beispiel 4: Sie wollen, dass bestimmte Kurse zusammen sind''' --> auf gar keinen Fall fixieren, sie nehmen sich potentielle Kombinationsmöglichkeiten, wenn Sie die Schiene festlegen, sondern: | '''Beispiel 4: Sie wollen, dass bestimmte Kurse zusammen sind''' --> auf gar keinen Fall fixieren, sie nehmen sich potentielle Kombinationsmöglichkeiten, wenn Sie die Schiene festlegen, sondern: | ||
*Kurs#S0-GK1#unbedingt zusammen mit#L0-GK1 | *Kurs#S0-GK1#unbedingt zusammen mit#L0-GK1 | ||
*Kurs#S0-GK1#unbedingt zusammen mit#F0-GK1 | *Kurs#S0-GK1#unbedingt zusammen mit#F0-GK1 | ||
*Kurs#S0-GK1#unbedingt zusammen mit#S8-GK1 | *Kurs#S0-GK1#unbedingt zusammen mit#S8-GK1 | ||
'''Beispiel 5: Sie wollen, dass bestimmte Kurse nicht zusammen sind,''' z.B. weil ein Lehrer ggf. den zweiten Kurs übernehmen soll --> auf gar keinen Fall fixieren, sondern: | '''Beispiel 5: Sie wollen, dass bestimmte Kurse nicht zusammen sind,''' z.B. weil ein Lehrer ggf. den zweiten Kurs übernehmen soll --> auf gar keinen Fall fixieren, sondern: | ||
*Kurs#MU-GK1#niemals zusammen mit#IF-GK1 | *Kurs#MU-GK1#niemals zusammen mit#IF-GK1 | ||
'''Beispiel 6: Sie wollen die LKs so setzen wie besprochen mit den KOOP-Schulen und LKs sollen getrennt werden von den GKs'''. --> fixieren: | '''Beispiel 6: Sie wollen die LKs so setzen wie besprochen mit den KOOP-Schulen und LKs sollen getrennt werden von den GKs'''. --> fixieren: | ||
*LKs allein von Schiene#1#bis Schiene#2 | *LKs allein von Schiene#1#bis Schiene#2 | ||
Zeile 311: | Zeile 337: | ||
'''[https://youtu.be/pBNSYI91eKc Video-Tutorial #1]:''' | '''[https://youtu.be/pBNSYI91eKc Video-Tutorial #1]:''' | ||
<youtube>pBNSYI91eKc</youtube> | |||
1) Vorbereitung in Kurs42 - Export der Blockung in Textdateien | 1) Vorbereitung in Kurs42 - Export der Blockung in Textdateien |
Bearbeitungen