import { JavaObject } from '../../java/lang/JavaObject';
import { KursblockungDynKurs } from '../../core/kursblockung/KursblockungDynKurs';
import { Class } from '../../java/lang/Class';
import { Logger } from '../../core/logger/Logger';
export declare class KursblockungDynStatistik extends JavaObject {
/**
* Logger für Benutzerhinweise, Warnungen und Fehler.
*/
private readonly _logger;
/**
* In der Matrix ist zu jedem Kursart-Paar eine Bewertung die angibt, wie gut es wäre wenn zwei Kurses dieser
* Fachart in der selben Schiene landen. Je kleiner der Wert, desto besser. Erhöht man den Wert der Haupt-Diagonale
* in der Matrix, so werden Kurse der gleichen Fachart eher selten in eine Schiene getan.
*/
private matrixFachartPaar;
/**
* Regel: Kurs verbiete mit Kurs.
*/
private regelVerletzungKursMitKurs;
/**
* Die aktuelle Bewertung aller Regelverletzungen.
*/
private bewertungRegelverletzungen;
/**
* Zum Speichern des Wertes von {@link KursblockungDynStatistik#bewertungRegelverletzungen} auf Schüler-Ebene.
*/
private bewertungRegelverletzungenSaveS;
/**
* Zum Speichern des Wertes von {@link KursblockungDynStatistik#bewertungRegelverletzungen} auf Kurs-Ebene.
*/
private bewertungRegelverletzungenSaveK;
/**
* Zum Speichern des Wertes von {@link KursblockungDynStatistik#bewertungRegelverletzungen} auf Globaler-Ebene.
*/
private bewertungRegelverletzungenSaveG;
/**
* Die aktuelle Bewertung der Fachart-Paare aller Schienen.
*/
private bewertungFachartPaar;
/**
* Zum Speichern des Wertes von {@link KursblockungDynStatistik#bewertungFachartPaar} auf Kurs-Ebene.
*/
private bewertungFachartPaarSaveK;
/**
* Zum Speichern des Wertes von {@link KursblockungDynStatistik#bewertungFachartPaar} auf Globaler-Ebene.
*/
private bewertungFachartPaarSaveG;
/**
* Die aktuelle Bewertung der Nichtwahlen aller Schüler.
*/
private bewertungNichtwahlen;
/**
* Zum Speichern des Wertes von {@link KursblockungDynStatistik#bewertungNichtwahlen} auf Schüler-Ebene.
*/
private bewertungNichtwahlenSaveS;
/**
* Zum Speichern des Wertes von {@link KursblockungDynStatistik#bewertungNichtwahlen} auf Kurs-Ebene.
*/
private bewertungNichtwahlenSaveK;
/**
* Zum Speichern des Wertes von {@link KursblockungDynStatistik#bewertungNichtwahlen} auf Globaler-Ebene.
*/
private bewertungNichtwahlenSaveG;
/**
* Das Array aller Kursdifferenzen.
*/
private bewertungKursdifferenzen;
/**
* Zum Speichern des Arrays von {@link KursblockungDynStatistik#bewertungKursdifferenzen} auf Schüler-Ebene.
*/
private bewertungKursdifferenzenSaveS;
/**
* Zum Speichern des Arrays von {@link KursblockungDynStatistik#bewertungKursdifferenzen} auf Kurs-Ebene.
*/
private bewertungKursdifferenzenSaveK;
/**
* Zum Speichern des Arrays von {@link KursblockungDynStatistik#bewertungKursdifferenzen} auf Globaler-Ebene.
*/
private bewertungKursdifferenzenSaveG;
/**
* Verweist im Array {@link KursblockungDynStatistik#bewertungKursdifferenzen} auf den höchsten Index mit einem
* Wert größer als 0. Das ist die größte Kursdifferenz.
* Ausnahme: Falls das Array nur aus Nullen besteht, dann ist der Wert ebenfalls Null.
*/
private bewertungKursdifferenzenMaxIndex;
/**
* Initialisiert alle Attribute mit Dummy-Werten.
*
* @param pLogger Logger für Benutzerhinweise, Warnungen und Fehler.
*/
constructor(pLogger: Logger);
/**
* Initialisiert alle Attribute mit Dummy-Werten.
* Setzt alle Werte auf 0 und initialisiert alle Arrays auf die Länge 0.
*/
clear(): void;
/**
* Initialisiert dieses Objekt mit den Anfangswerten.
*
* @param pMatrixFachartPaar Das 2D-Array beinhaltet pro Fachart-Paar eine Bewertung.
* @param pMaxSchueler Die maximale Anzahl an Schülern.
* @param pMaxFacharten Die maximale Anzahl an Facharten.
* @param pMaxKurse Die maximale Anzahl an Kursen.
*/
aktionInitialisiere(pMatrixFachartPaar: Array>, pMaxSchueler: number, pMaxFacharten: number, pMaxKurse: number): void;
/**
* Ausgabe von Debug-Informationen. Nur für Testzwecke.
*
* @param pPrefix Ein String-Prefix vor der Ausgabe.
*/
debug(pPrefix: string): void;
/**
* Liefert Debug-Informationen in einer Zeile.
*
* @return Debug-Informationen in einer Zeile.
*/
debugRow(): string;
/**
* Liefert Debug-Informationen in einer Zeile (ohne ausführliche Kursdifferenzen).
*
* @return Debug-Informationen in einer Zeile (ohne ausführliche Kursdifferenzen).
*/
debugRowKurz(): string;
/**
* Liefert die aktuelle Fachart-Paar-Bewertung.
*
* @return Die aktuelle Fachart-Paar-Bewertung.
*/
gibBewertungFachartPaar(): number;
/**
* Liefert die aktuelle Anzahl an Nichtwahlen.
* Das ist die Summe aller Kurs, die bei Schülern nicht zugeordnet wurden.
*
* @return Die aktuelle Anzahl an Nichtwahlen.
*/
gibBewertungNichtwahlen(): number;
/**
* Liefert die aktuell größte Kursdifferenz (über alle Facharten).
*
* @return Die aktuell größte Kursdifferenz (über alle Facharten).
*/
gibBewertungKursdifferenz(): number;
/**
* Liefert die aktuell Anzahl an Regelverletzungen.
*
* @return die aktuell Anzahl an Regelverletzungen.
*/
gibBewertungRegelverletzungen(): 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.
*/
gibBewertungZustandS_NW_KD(): number;
/**
* Liefert den Wert {@code -1, 0 oder +1}, falls die Bewertung (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 (Nichtwahlen, Kursdiffenzen) 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: 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.
*/
gibCompareZustandK_FW_NW_KD(): number;
/**
* Liefert den Wert {@code -1, 0 oder +1}, falls die Bewertung (Nichtwahlen, Kursdiffenzen, FachartPaar) des
* Zustandes-G sich verschlechtert (-1), sich verbessert (+1) hat oder gleichgeblieben (0) ist.
*
* @return {@code -1, 0 oder +1}, falls die Bewertung (Nichtwahlen, Kursdiffenzen, FachartPaar) des Zustandes-G sich
* verschlechtert (-1), sich verbessert (+1) hat oder gleichgeblieben (0) ist.
*/
gibCompareZustandG_NW_KD_FW(): 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: KursblockungDynStatistik): boolean;
/**
* Liefert das Array bzw. das Histogramm der Kursdifferenzen.
*
* @return das Array bzw. das Histogramm der Kursdifferenzen.
*/
gibArrayDerKursdifferenzen(): Array;
/**
* Informiert die Statistik, dass ein Kurs-Paar hinzuzufügen ist.
*
* @param pKurs1 Der 1. Kurs des Kurs-Paares.
* @param pKurs2 Der 2. Kurs des Kurs-Paares.
*/
aktionKurspaarInSchieneHinzufuegen(pKurs1: KursblockungDynKurs, pKurs2: KursblockungDynKurs): void;
/**
* Informiert die Statistik, dass ein Kurs-Paar zu entfernen ist.
*
* @param pKurs1 Der 1. Kurs des Kurs-Paares.
* @param pKurs2 Der 2. Kurs des Kurs-Paares.
*/
aktionKurspaarInSchieneEntfernen(pKurs1: KursblockungDynKurs, pKurs2: KursblockungDynKurs): void;
/**
* Informiert die Statistik über eine Veränderung der Nichtwahlen.
*
* @param pVeraenderung Die Veränderungen der Nichtwahlen (negative Werte sind möglich).
*/
aktionNichtwahlenVeraendern(pVeraenderung: number): void;
/**
* Fügt eine Kursdifferenz {@code pIndex} dem Histogramm {@link KursblockungDynStatistik#bewertungKursdifferenzen}
* aller Kursdifferenzen hinzu. Der Index des größten Nicht-Null-Wertes
* {@link KursblockungDynStatistik#bewertungKursdifferenzenMaxIndex} wird dabei möglicherweise größer.
* {@code Beispiel vorher: 5, 0, 6*, 0, 0, 0, 0, 0, 0}
* {@code Beispiel danach: 5, 0, 6, 0, 0, 1*, 0, 0, 0}
*
* @param pIndex Die Kursdifferenz von der es eine weniger geben soll.
*/
aktionKursdifferenzHinzufuegen(pIndex: number): void;
/**
* Entfernt eine Kursdifferenz {@code pIndex} aus dem Histogramm
* {@link KursblockungDynStatistik#bewertungKursdifferenzen} aller Kursdifferenzen. Der Index des größten
* Nicht-Null-Wertes {@link KursblockungDynStatistik#bewertungKursdifferenzenMaxIndex} wird dabei möglicherweise
* kleiner.
* {@code Beispiel vorher: 5, 0, 6, 0, 0, 1*, 0, 0, 0}
* {@code Beispiel danach: 5, 0, 6*, 0, 0, 0, 0, 0, 0}
*
* @param pIndex Die Kursdifferenz von der es eine weniger geben soll.
*/
aktionKursdifferenzEntfernen(pIndex: number): void;
/**
* Speichert die aktuellen Werte (im Zustand S).
*/
aktionBewertungSpeichernS(): void;
/**
* Speichert die aktuellen Werte (im Zustand K).
*/
aktionBewertungSpeichernK(): void;
/**
* Speichert den aktuellen Blockungsdaten (im Zustand G).
*/
aktionBewertungSpeichernG(): void;
/**
* Fügt die Regel {@link GostKursblockungRegelTyp#KURS_VERBIETEN_MIT_KURS} zur Bewertung hinzu.
*
Erhöht den Malus 'bewertungRegelverletzungen', falls die Kurse bereits gemeinsam in einer Schiene sind.
*
* @param kurs1 Der 1. Kurs der Regel.
* @param kurs2 Der 2. Kurs der Regel.
*/
regelHinzufuegenKursVerbieteMitKurs(kurs1: KursblockungDynKurs, kurs2: KursblockungDynKurs): void;
/**
* Fügt die Regel {@link GostKursblockungRegelTyp#KURS_ZUSAMMEN_MIT_KURS} zur Bewertung hinzu.
*
Erhöht den Malus 'bewertungRegelverletzungen' um den Wert, der bis zur maximalen Schnittmenge fehlt.
*
* @param kurs1 Der 1. Kurs der Regel.
* @param kurs2 Der 2. Kurs der Regel.
*/
regelHinzufuegenKursZusammenMitKurs(kurs1: KursblockungDynKurs, kurs2: KursblockungDynKurs): void;
private static gibAnzahlGemeinsamerSchienen;
/**
* Verändert die aktuelle Anzahl an Regelverletzungen.
*
* @param unterschied Der Unterschied (auch negativ).
*/
regelverletzungVeraendern(unterschied: number): void;
transpilerCanonicalName(): string;
isTranspiledInstanceOf(name: string): boolean;
static class: Class;
}
export declare function cast_de_svws_nrw_core_kursblockung_KursblockungDynStatistik(obj: unknown): KursblockungDynStatistik;
//# sourceMappingURL=KursblockungDynStatistik.d.ts.map