123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.cast_de_nrw_schule_svws_core_kursblockung_KursblockungAlgorithmusKFachwahlmatrix = exports.KursblockungAlgorithmusKFachwahlmatrix = void 0;
- const KursblockungAlgorithmusK_1 = require("../../core/kursblockung/KursblockungAlgorithmusK");
- const System_1 = require("../../java/lang/System");
- class KursblockungAlgorithmusKFachwahlmatrix extends KursblockungAlgorithmusK_1.KursblockungAlgorithmusK {
- /**
- * Im Konstruktor kann die Klasse die jeweiligen Datenstrukturen aufbauen. Kurse
- * dürfen in diese Methode noch nicht auf Schienen verteilt werden.
- *
- * @param logger Logger für Benutzerhinweise, Warnungen und Fehler.
- * @param dynDat Die dynamischen Blockungsdaten.
- */
- constructor(logger, dynDat) {
- super(logger, dynDat);
- }
- /**
- * Der Algorithmus entfernt zunächst alle SuS aus ihren Kursen. Anschließend
- * werden die Kurse zufällig verteilt.
- */
- berechne(pMaxTimeMillis) {
- if (this.dynDaten.gibKurseDieFreiSindAnzahl() === 0) {
- return;
- }
- let timeStart = System_1.System.currentTimeMillis();
- this.dynDaten.aktionSchuelerAusAllenKursenEntfernen();
- this.dynDaten.aktionKurseFreieZufaelligVerteilen();
- this.dynDaten.aktionZustandSpeichernK();
- let countKeineVerbesserung = 0;
- while (System_1.System.currentTimeMillis() - timeStart < pMaxTimeMillis) {
- if (this.berechneSchritt()) {
- countKeineVerbesserung = 0;
- }
- else {
- countKeineVerbesserung++;
- if (countKeineVerbesserung === 10000) {
- break;
- }
- }
- }
- }
- /**
- * Die Lage einiger Kurse wird verändert. Falls sich die Bewertung
- * verschlechter, wird die Veränderung rückgängig gemacht.
- *
- * @return TRUE, falls sich die Bewertung verbessert hat.
- */
- berechneSchritt() {
- let maxChanges = 1;
- while (Math.random() < 0.5) {
- maxChanges++;
- }
- for (let changes = 0; changes < maxChanges; changes++) {
- this.dynDaten.aktionKursFreienEinenZufaelligVerteilen();
- if (this.dynDaten.gibBewertungJetztBesserAlsK() > 0) {
- this.dynDaten.aktionZustandSpeichernK();
- return true;
- }
- }
- this.dynDaten.aktionZustandLadenK();
- return false;
- }
- isTranspiledInstanceOf(name) {
- return ['de.nrw.schule.svws.core.kursblockung.KursblockungAlgorithmusKFachwahlmatrix', 'de.nrw.schule.svws.core.kursblockung.KursblockungAlgorithmusK'].includes(name);
- }
- }
- exports.KursblockungAlgorithmusKFachwahlmatrix = KursblockungAlgorithmusKFachwahlmatrix;
- function cast_de_nrw_schule_svws_core_kursblockung_KursblockungAlgorithmusKFachwahlmatrix(obj) {
- return obj;
- }
- exports.cast_de_nrw_schule_svws_core_kursblockung_KursblockungAlgorithmusKFachwahlmatrix = cast_de_nrw_schule_svws_core_kursblockung_KursblockungAlgorithmusKFachwahlmatrix;
- //# sourceMappingURL=KursblockungAlgorithmusKFachwahlmatrix.js.map
|