import { JavaObject } from '../../java/lang/JavaObject'; import { GostBlockungsergebnisManager } from '../../core/utils/gost/GostBlockungsergebnisManager'; import { KursblockungDynKurs } from '../../core/kursblockung/KursblockungDynKurs'; import { Logger } from '../../core/logger/Logger'; import { Random } from '../../java/util/Random'; import { KursblockungDynStatistik } from '../../core/kursblockung/KursblockungDynStatistik'; import { GostBlockungsdatenManager } from '../../core/utils/gost/GostBlockungsdatenManager'; import { KursblockungDynSchueler } from '../../core/kursblockung/KursblockungDynSchueler'; import { Class } from '../../java/lang/Class'; export declare class KursblockungDynDaten extends JavaObject { /** * Ein {@link Random}-Objekt zur Steuerung des Zufalls über einen Anfangs-Seed. */ private readonly _random; /** * Logger für Benutzerhinweise, Warnungen und Fehler. */ private readonly _logger; /** * Alle Regeln nach ihrer ID gruppiert und in einer Liste der Reihenfolge nach gespeichert. */ private readonly _regelMap; /** * Die maximale Blockungszeit in Millisekunden. */ private readonly _maxTimeMillis; /** * Diese Datenstruktur speichert die Schienen und ihre Kurse. */ private _schienenArr; /** * Alles Kurse. */ private _kursArr; /** * Alle Kurse, die noch über Schienen wandern können. */ private _kursArrFrei; /** * Map für schnellen Zugriff auf die Kurse über ihre ID. */ private readonly _kursMap; /** * Alle Facharten. Fachart meint Fach + Kursart, z.B. "D;GK". */ private _fachartArr; /** * Map für schnellen Zugriff auf die Facharten über FachID und KursartID. */ private readonly _fachartMap2D; /** * Alle SuS. */ private _schuelerArr; /** * Map für schnellen Zugriff auf die SuS über ihre ID. */ private readonly _schuelerMap; /** * Das Statistik-Objekt speichert die aktuellen Nichtwahlen, Kursdifferenzen und weitere Daten. */ private readonly _statistik; /** * Der Konstruktor der Klasse liest alle Daten von {@link GostBlockungsdatenManager} ein und baut die relevanten Datenstrukturen auf. * * @param random Ein {@link Random}-Objekt zur Steuerung des Zufalls über einen Anfangs-Seed. * @param logger Ein {@link Logger}-Objekt für Benutzerhinweise, Warnungen und Fehler. * @param input Die Eingabedaten (Schnittstelle zur GUI). */ constructor(random: Random, logger: Logger, input: GostBlockungsdatenManager); /** * Überprüft alle Referenzen in {@link KursblockungInput} und auch die referentielle Integrität. * * @param input Das {@link KursblockungInput}-Objekt von der GUI. */ private fehlerBeiReferenzen; private static schritt01FehlerBeiReferenzen_Regeltyp1; private static schritt01FehlerBeiReferenzen_Regeltyp2; private static schritt01FehlerBeiReferenzen_Regeltyp3; private static schritt01FehlerBeiReferenzen_Regeltyp4; private static schritt01FehlerBeiReferenzen_Regeltyp5; private static schritt01FehlerBeiReferenzen_Regeltyp6; private static schritt01FehlerBeiReferenzen_Regeltyp7; private static schritt01FehlerBeiReferenzen_Regeltyp8; private static schritt01FehlerBeiReferenzen_Regeltyp9; private static schritt01FehlerBeiReferenzen_Regeltyp10; private static schritt01FehlerBeiReferenzen_Regeltyp11; private static schritt01FehlerBeiReferenzen_Regeltyp12; private static schritt01FehlerBeiReferenzen_Regeltyp13; private static schritt01FehlerBeiReferenzen_Regeltyp14; private static schritt01FehlerBeiReferenzen_Regeltyp15; private static schritt01FehlerBeiReferenzen_Regeltyp16; private static schritt01FehlerBeiReferenzen_Regeltyp17; private static schritt01FehlerBeiReferenzen_Regeltyp18; private fehlerBeiRegelGruppierung; private fehlerBeiSchuelerErstellung; private fehlerBeiFachartenErstellung; private fehlerBeiSchuelerFachwahlenErstellung; private fehlerBeiStatistikErstellung; private fehlerBeiSchienenErzeugung; private fehlerBeiKursErstellung; private schritt08FehlerBeiKursErstellungErzeuge; private fehlerBeiKursFreiErstellung; private fehlerBeiFachartKursArrayErstellung; private fehlerBeiRegel_4_oder_5_SCHUELER_KURS_VARIANTEN; private fehlerBeiRegel_7_oder_8_KURS_MIT_KURS_VARIANTEN; private fehlerBeiRegel_9_KURS_MIT_DUMMY_SUS_AUFFUELLEN; private fehlerBeiRegel_10_LEHRKRAEFTE_BEACHTEN; private fehlerBeiRegel_11_bis_14_SCHUELER_MIT_SCHUELER_VARIANTEN; private fehlerBeiRegel_15_KURS_MAXIMALE_SCHUELERANZAHL; private fehlerBeiRegel_16_SCHUELER_IGNORIEREN; private fehlerBeiRegel_18_FACH_KURSART_MAXIMALE_ANZAHL_PRO_SCHIENE; private gibFachart; private gibSchueler; private gibKurs; /** * Liefert ein neu erzeugtes {@link GostBlockungsergebnisManager}-Objekt. *
Dieses Objekt beinhaltet alle Informationen für die GUI. * * @param pDataManager Das Eingabe-Objekt (der Daten-Manager). * @param pErgebnisID Die ID des Ergebnisses. * * @return ein neu erzeugtes {@link GostBlockungsergebnisManager}-Objekt. */ gibErzeugtesKursblockungOutput(pDataManager: GostBlockungsdatenManager, pErgebnisID: number): GostBlockungsergebnisManager; /** * Liefert das Logger-Objekt für Benutzerhinweise, Warnungen und Fehler. * * @return Das Logger-Objekt für Benutzerhinweise, Warnungen und Fehler. */ gibLogger(): Logger; /** * Liefert das {@link Random}-Objekt. * * @return das {@link Random}-Objekt. */ gibRandom(): Random; /** * Liefert das Statistik-Objekt (für Anfragen zu Nichtwahlen, Kursdifferenzen, etc.). * * @return Das Statistik-Objekt (für Anfragen zu Nichtwahlen, Kursdifferenzen, etc.). */ gibStatistik(): KursblockungDynStatistik; /** * Liefert die maximale Blockungszeit in Millisekunden. Entweder handelt es sich um einen Standardwert oder der Wert * wurde im Konstruktor als Regel übergeben. * * @return Liefert die maximale Blockungszeit in Millisekunden. */ gibBlockungszeitMillis(): number; /** * Liefert die maximal erlaubte Anzahl an Schienen. Entweder handelt es sich um einen Standardwert oder der Wert * wurde im Konstruktor als Regel übergeben. * * @return Liefert die maximal erlaubte Anzahl an Schienen. */ gibSchienenAnzahl(): number; /** * Liefert alle Kurse. * * @return Array aller Kurse. */ gibKurseAlle(): Array; /** * Liefert alle Kurse deren Lage nicht komplett fixiert ist. * * @return Array aller Kurse, deren Schienenlage noch veränderbar ist. */ gibKurseDieFreiSind(): Array; /** * Liefert die Anzahl alle Kurse deren Lage nicht komplett fixiert ist. * * @return Anzahl aller Kurse, deren Schienenlage noch veränderbar ist. */ gibKurseDieFreiSindAnzahl(): number; /** * Liefert einen Long-Wert, der einer Bewertung der Fachwahlmatrix entspricht. Je kleiner der Wert, desto besser ist * die Bewertung. * * @return Long-Wert, der einer Bewertung der Fachwahlmatrix entspricht. */ gibBewertungFachartPaar(): number; /** * Liefert ein Array aller Schülerinnen und Schüler. * Falls der Parameter {@code pNurMultiKurse} TRUE ist, dann werden nur SuS mit mindestens einem Multikurs ausgewählt. * * @param pNurMultiKurse Falls TRUE, dann werden nur SuS mit mindestens einem Multikurs ausgewählt. * * @return ein Array aller Schülerinnen und Schüler. */ gibSchuelerArray(pNurMultiKurse: boolean): Array; /** * Liefert ein Array aller Schülerinnen und Schüler. * * @return Ein Array aller Schülerinnen und Schüler. */ gibSchuelerArrayAlle(): Array; /** * Liefert den Wert {@code -1, 0 oder +1}, falls die Bewertung (Nichtwahlen, Kursdiffenzen) des Zustandes S sich * verschlechtert (-1), sich verbessert (+1) hat oder gleichgeblieben (0) ist. * * @return {@code -1, 0 oder +1}, falls die Bewertung (Nichtwahlen, Kursdiffenzen) des Zustandes S sich * verschlechtert (-1), sich verbessert (+1) hat oder gleichgeblieben (0) ist. */ gibBewertungJetztBesserAlsS(): number; /** * Liefert den Wert {@code -1, 0 oder +1}, falls die Bewertung (Reihenfolge: Nichtwahlen, Kursdiffenzen, * Fachwahlmatrix) des Zustandes-K sich verschlechtert (-1), sich verbessert (+1) hat oder gleichgeblieben (0) ist. * * @return {@code -1, 0 oder +1}, falls die Bewertung (Reihenfolge: Nichtwahlen, Kursdiffenzen, Fachwahlmatrix) des * Zustandes-K sich verschlechtert (-1), sich verbessert (+1) hat oder gleichgeblieben (0) ist. */ gibCompareZustandK_NW_KD_FW(): number; /** * Liefert den Wert {@code -1, 0 oder +1}, falls die Bewertung (Reihenfolge: Nichtwahlen, Kursdiffenzen, * Fachwahlmatrix) des Zustandes-G sich verschlechtert (-1), sich verbessert (+1) hat oder gleichgeblieben (0) ist. * * @return {@code -1, 0 oder +1}, falls die Bewertung (Reihenfolge: Nichtwahlen, Kursdiffenzen, Fachwahlmatrix) des * Zustandes-G sich verschlechtert (-1), sich verbessert (+1) hat oder gleichgeblieben (0) ist. */ gibCompareZustandG_NW_KD_FW(): number; /** * Liefert den Wert {@code -1, 0 oder +1}, falls die Bewertung (Reihenfolge: Fachwahlmatrix, Nichtwahlen, * Kursdiffenzen) des Zustandes K sich verschlechtert (-1), sich verbessert (+1) hat oder gleichgeblieben (0) ist. * * @return {@code -1, 0 oder +1}, falls die Bewertung (Reihenfolge: Fachwahlmatrix, Nichtwahlen, Kursdiffenzen) des * Zustandes K sich verschlechtert (-1), sich verbessert (+1) hat oder gleichgeblieben (0) ist. */ gibBewertungK_FW_NW_KD_JetztBesser(): number; /** * Liefert den Wert {@code -1, 0 oder +1}, falls die Bewertung (Nichtwahlen, Kursdiffenzen) des Zustandes S sich * verschlechtert (-1), sich verbessert (+1) hat oder gleichgeblieben (0) ist. * * @return {@code -1, 0 oder +1}, falls die Bewertung (Nichtwahlen, Kursdiffenzen) des Zustandes K sich * verschlechtert (-1), sich verbessert (+1) hat oder gleichgeblieben (0) ist. */ gibBewertung_NW_KD_JetztS(): number; /** * Liefert TRUE, falls dieses Objekt besser ist als das übergebene Objekt b. * * @param b Das zu vergleichende Objekt. * * @return TRUE, falls dieses Objekt besser ist als das übergebene Objekt b. */ gibIstBesser_NW_KD_FW_Als(b: KursblockungDynDaten): boolean; /** * Liefert true, falls der Kurs in der Schiene ist. * * @param idKursDB Die Datenbank-ID des Kurses. * @param schieneDB Die Datenbank-ID der Schiene (1-indiziert!). * @return true, falls der Kurs in der Schiene ist. */ gibIstKursInSchiene(idKursDB: number, schieneDB: number): boolean; /** * Liefert true, falls der Schüler im Kurs ist. * * @param idSchuelerDB Die Datenbank-ID des Schülers. * @param idKursDB Die Datenbank-ID des Kurses. * @return true, falls der Kurs in der Schiene ist. */ gibIstSchuelerInKurs(idSchuelerDB: number, idKursDB: number): boolean; /** * Liefert true, falls die übergebene Schiene nur LK-Kurse enthält (oder keine Kurse). * * @param schienenNr1indiziert Die Schienen-Nummer * @return true, falls die übergebene Schiene nur LK-Kurse enthält (oder keine Kurse). */ gibHatSchieneNurLK(schienenNr1indiziert: number): boolean; /** * Liefert true, falls die übergebene Schiene keine LK-Kurse enthält. * * @param schienenNr1indiziert Die Schienen-Nummer * @return true, falls die übergebene Schiene keine LK-Kurse enthält. */ gibHatSchieneKeineLK(schienenNr1indiziert: number): boolean; /** * Liefert die Anzahl an SuS in dem Kurs (oder -1 falls der Kurs nicht existiert). * * @param idKursDB Die Datenbank-ID des Kurses. * @return die Anzahl an SuS in dem Kurs (oder -1 falls der Kurs nicht existiert). */ gibKursgroesseDesKurses(idKursDB: number): number; /** * Liefert die Kursdifferenz der Fachart des übergebenen Kurses (oder -1 falls der Kurs nicht existiert).. * * @param idKursDB Die Datenbank-ID des Kurses. * @return die Kursdifferenz der Fachart des übergebenen Kurses (oder -1 falls der Kurs nicht existiert).. */ gibKursdifferenzDesKurses(idKursDB: number): number; /** * Speichert die Bewertung, die Kursverteilung und die Schülerverteilung im Zustand S. */ aktionZustandSpeichernS(): void; /** * Speichert die Bewertung, die Kursverteilung und die Schülerverteilung im Zustand K. */ aktionZustandSpeichernK(): void; /** * Speichert die Bewertung, die Kursverteilung und die Schülerverteilung im Zustand G. */ aktionZustandSpeichernG(): void; /** * Lädt den zuvor gespeicherten Zustand S (Kursverteilung und Schülerverteilung). */ aktionZustandLadenS(): void; /** * Lädt den zuvor gespeicherten Zustand K (Kursverteilung und Schülerverteilung). */ aktionZustandLadenK(): void; /** * Lädt den zuvor gespeicherten Zustand K einer anderen {@link KursblockungDynDaten}-Objekts (Kursverteilung und Schülerverteilung). * * @param b Das andere {@link KursblockungDynDaten}-Objekt. */ aktionZustandLadenVon(b: KursblockungDynDaten): void; /** * Lädt den zuvor gespeicherten Zustand G (Kursverteilung und Schülerverteilung). */ aktionZustandLadenG(): void; /** * Lädt den zuvor gespeicherten Zustand K (nur Kursverteilung, ohne Schülerverteilung). */ aktionZustandLadenKohneSuS(): void; /** * Entfernt alle SuS aus ihren Kursen. */ aktionSchuelerAusAllenKursenEntfernen(): void; /** * Verteilt alle Kurse auf ihre Schienen zufällig. Kurse die keinen Freiheitsgrad haben, werden dabei ignoriert. */ aktionKurseFreieZufaelligVerteilen(): void; /** * Verteilt genau einen Kurs zufällig. Kurse die keinen Freiheitsgrad haben, werden dabei ignoriert. */ aktionKursVerteilenEinenZufaelligenFreien(): void; /** * Verteilt einen Kurs zufällig. Kurse die keinen Freiheitsgrad haben und Multikurse, werden dabei ignoriert. */ aktionKursFreienEinenZufaelligVerteilenAberNichtMultikurse(): void; /** * Verändert die Lage der Kurse einer zufälligen Fachgruppe komplett neu. */ aktionKursVerteilenEineZufaelligeFachgruppe(): void; /** * Verteilt die SuS auf die jetzige Kurslage. Pro S. werden erst die Multikurse verteilt, dann werden die übrigen * Kurse mit Hilfe eines spezielle bipartiten Matching-Algorithmus verteilt. Sobald ein S. seine Nichtwahlen durch * eine Veränderung der Kurslage reduzieren könnte, wird die Kurslage verändert. * * @return TRUE, falls es zu einer Veränderung der Kurslage kam. */ aktionKurseVerteilenNachSchuelerwunsch(): boolean; /** * Gesucht wird der Schüler, der unzufrieden ist. Nach seinem Wunsch werden die Kurse neuverteilt. *
Kurzzeitig wird der S. Kursen hinzugefügt, am Ende aber wieder entfernt. * * @return TRUE, falls es zu einer Veränderung der Kurslage kam. */ aktionKurseVerteilenNachSchuelerwunschSingle(): boolean; /** * Verteilt die SuS auf die jetzige Kurslage. Pro S. werden erst die Multikurse verteilt, dann werden die übrigen * Kurse mit Hilfe eines bipartiten Matching-Algorithmus verteilt. Bereits belegte Facharten werden übersprungen. */ aktionSchuelerVerteilenMitBipartitemMatching(): void; /** * Verteilt die SuS auf die jetzige Kurslage. Pro S. werden erst die Multikurse verteilt, dann werden die übrigen * Kurse mit Hilfe eines gewichteten Bipartiten-Matching-Algorithmus verteilt. */ aktionSchuelerVerteilenMitGewichtetenBipartitemMatching(): void; /** * Setzt den S. wenn möglich in den übergebenen Kurs. * * @param idSchuelerDB Die Datenbank-ID des S. * @param idKursDB Die Datenbank-ID des Kurses. */ aktionSchuelerSetzenInKurs(idSchuelerDB: number, idKursDB: number): void; /** * Entfernt den S. wenn möglich aus den übergebenen Kurs. * * @param idSchuelerDB Die Datenbank-ID des S. * @param idKursDB Die Datenbank-ID des Kurses. */ aktionSchuelerEntfernenAusKurs(idSchuelerDB: number, idKursDB: number): void; /** * Verschiebt den Kurs in die Schiene. * * @param idKursDB Die Datenbank-ID des Kurses. * @param schieneDB Die Datenbank-ID der Schiene (1-indiziert!). */ aktionSetzeKursInSchiene(idKursDB: number, schieneDB: number): void; /** * Debug Ausgaben. Nur für Testzwecke. */ debug(): void; /** * Debug Ausgaben (Schienen und Kurse) */ printlnSchienenUndKurse(): void; /** * Debug-Ausgabe der Schienen mit ihre Kursen und ihren SuS. */ printlnSchienenUndKurseUndSchueler(): void; /** * Debug-Ausgabe aller Facharten mit den zugehörigen Kursen. */ printlnFacharten(): void; transpilerCanonicalName(): string; isTranspiledInstanceOf(name: string): boolean; static class: Class; } export declare function cast_de_svws_nrw_core_kursblockung_KursblockungDynDaten(obj: unknown): KursblockungDynDaten; //# sourceMappingURL=KursblockungDynDaten.d.ts.map