====== TowingOptimizer Algorithmus Dokumentation ======
===== Überblick =====
Der TowingOptimizer verwendet einen ausgeklügelten **4-Phasen-Bewertungsalgorithmus**, um automatisch die optimalen Fahrer-Fahrzeug-Kombinationen für Abschleppaufträge zuzuweisen. Das System gewährleistet die strikte Einhaltung von Führerscheinanforderungen, Ausrüstungskompatibilität und betrieblichen Beschränkungen.
===== Algorithmus-Phasen =====
==== Phase 1: Fahrer-Auftrag Kompatibilitätsbewertung ====
Diese Phase bewertet die Eignung jedes Fahrers für den Auftrag basierend auf:
=== Harte Constraints (Ausschlusskriterien) ===
* **Führerscheinanforderungen**:
* **HV-Schein Check**: Elektrofahrzeug-Aufträge (''IstHvScheinNotwendig = true'') erfordern Fahrer mit Hochvolt-Zertifizierung (''HatHvSchein = true'')
* **Kran-Schein Check**: Kran-erforderliche Aufträge (''IstKranNotwendig = true'') benötigen Fahrer mit Kranführerschein (''HatKranSchein = true'')
* **Aktuelle Zuweisung**: Bereits anderen Aufträgen zugewiesene Fahrer werden ausgeschlossen
* **Arbeitszeit**: Fahrer ohne ausreichende verbleibende Arbeitsstunden (''RestArbeitszeitMin'') werden ausgeschlossen
=== Bewertungsfaktoren ===
* **Arbeitslasten-Ausgleich**: Fahrer mit weniger täglichen Zuweisungen erhalten höhere Punkte
* **Zeitstrafen**: Rufbereitschaftsfahrer erhalten Strafen für Nacht-/Tag-Zuweisungen basierend auf ''HatRufbereitschaft''
* **Standortkorrekturen**: Strafe wird angewandt, wenn Fahrzeugstandort zur Filiale korrigiert wurde
==== Phase 2: Fahrzeug-Auftrag Kompatibilitätsbewertung ====
Diese Phase bewertet die Fahrzeugeignung für den spezifischen Abschleppauftrag:
=== Harte Constraints ===
* **Gewichtskapazität**: Fahrzeug ''MaxZuladungKg'' muss das Auftrags-''GewichtKg'' überschreiten
* **Ölspur-Spezialisierung**: Ölspur-Aufträge erfordern spezialisierte Fahrzeuge (''FahrzeugTyp.OelspurMaschine'')
* **Fahrzeugtyp-Kompatibilität**:
* LKW-Aufträge: Nur ''LkwBerger'' oder ''Lkw'' Fahrzeuge
* PKW-Aufträge: ''Pkw'' oder ''Lkw'' Fahrzeuge
* Motorrad-Aufträge: Benötigen ''HatBrille'' (Motorrad-Adapter) oder ''HatKran'' (Kran)
* Fahrrad-Aufträge: Nur ''Pkw'' Fahrzeuge
* **Nicht-rollfähige Fahrzeuge**: Müssen Plateau (''HatPlateau'') UND Seilwinde (''HatSeilwinde'') oder Kran (''HatKran'') haben
* **Tiefgarage**: Muss geeignet sein (''IstFuerTiefgarageGeeignet'') mit angemessener Höhenfreiheit
* **Kran-Anforderungen**: Kran-erfordernde Aufträge benötigen Fahrzeuge mit ''HatKran = true''
=== Bewertungsfaktoren ===
* **Entfernungsbasierte Bewertung**: Nähere Fahrzeuge erhalten höhere Punkte (bis zu 50km Radius)
* **Personentransport**: Strafe wenn Fahrzeug erforderliche Passagiere nicht aufnehmen kann (''MaxMitfahrer'')
* **Standortkorrekturen**: Strafe wird angewandt, wenn Fahrerstandort zur Filiale korrigiert wurde
==== Phase 3: Bestehende Zuweisungsanalyse ====
Überprüft Zielorte aktuell zugewiesener Aufträge zur Optimierung der Routeneffizienz und Identifizierung potenzieller Konflikte.
==== Phase 4: Fahrer-Fahrzeug Führerschein-Matching ⭐ ====
Dies ist die **kritische Phase**, die die Führerschein-Kompatibilität zwischen Fahrer und Fahrzeug gewährleistet!
=== Obligatorisches Führerschein-Matching ===
WENN fahrzeug.Fuehrerscheine != null UND fahrer.Fuehrerscheine != null DANN
fahrer.Fuehrerscheine MUSS mindestens EINEN Führerschein aus fahrzeug.Fuehrerscheine enthalten
SONST → DISQUALIFIZIERT (Punkte = 0)
=== Beispiel Führerschein-Anforderungen ===
^ Fahrzeug benötigt ^ Fahrer hat ^ Ergebnis ^
| ["C", "CE"] | ["B", "C"] | ✅ **ÜBEREINSTIMMUNG**: Fahrer hat "C" → Qualifiziert |
| ["C", "CE"] | ["B"] | ❌ **KEINE ÜBEREINSTIMMUNG**: Nur "B" → Disqualifiziert |
=== Zusätzliche Kreuzvalidierung ===
* **Kran-Aufträge**: SOWOHL Fahrzeug muss Kran haben (''HatKran'') ALS AUCH Fahrer muss Kranführerschein haben (''HatKranSchein'')
* **Elektrofahrzeug-Aufträge**: Fahrer muss HV-Schein (''HatHvSchein'') für entsprechende Aufträge haben
===== Führerschein-Klassifizierungen =====
==== Fahrer-Führerscheintypen ====
^ Führerschein ^ Beschreibung ^
| **B** | Normaler PKW-Führerschein |
| **C** | LKW-Führerschein (bis bestimmtes Gewicht) |
| **CE** | Schwer-LKW mit Anhänger-Führerschein |
==== Spezielle Zertifizierungen ====
^ Zertifizierung ^ Beschreibung ^
| ''HatKranSchein'' | Kranführer-Lizenz |
| ''HatHvSchein'' | Hochvolt-Elektroarbeits-Zertifizierung |
===== Bewertungssystem =====
Der Algorithmus verwendet ein **punktebasiertes System**, beginnend bei **100.000 Punkten** mit Strafen/Boni:
==== Hauptstrafen ====
**DISQUALIFIKATION (Punkte = 0)**
* Führerschein-Nichtübereinstimmung
* Fehlende erforderliche Ausrüstung
* Unzureichende Kapazität
==== Optimierungs-Boni ====
* **Arbeitslasten-Ausgleichs-Boost**: Bis zu konfigurierbaren Bonuspunkten
* **Entfernungsnähe**: Bis zu 50.000 Punkte für nahegelegene Fahrzeuge
* **Prioritätsauftrags-Behandlung**: Garantierte Mindestpunkte für Notrufe
===== Finale Empfehlungsgenerierung =====
Der Algorithmus kombiniert alle Phasen-Punkte zur Erstellung bewerteter Empfehlungen:
- Beste Fahrer-Fahrzeug-Kombinationen für jeden Auftrag
- Detaillierte Begründung für jede Bewertungsentscheidung
- Klare Angabe aller disqualifizierenden Faktoren
- Geschätzte Fertigstellungszeiten und Routeneffizienz
**Fazit**: Dieser mehrstufige Ansatz gewährleistet, dass jede Zuweisung alle Sicherheits- und Rechtsanforderungen erfüllt, während gleichzeitig für betriebliche Effizienz und Arbeitslasten-Verteilung optimiert wird.