Variablen, Ziel und Nebenbedingungen
Ein Optimierungsproblem hat drei Teile. Die Variablen sind die Größen, die der Plan festlegt: reelle Zahlen wie eine Menge, ganze Zahlen wie eine Anzahl, binäre Entscheidungen wie ein Ja oder Nein je Möglichkeit. Die Zielfunktion misst, was besser sein soll, und wird minimiert oder maximiert. Die Nebenbedingungen sind die Regeln, die jeder zulässige Plan einhält.
Die Nebenbedingungen werden nicht für die Optimierung neu geschrieben. Sie stammen aus denselben Regeln mit derselben Fassung und Version, die KALKÜL bei der Prüfung benutzt. Es gäbe sonst zwei Fassungen derselben Vorschrift, und die eine könnte abweichen. Harte Regeln sind Nebenbedingungen und werden nie verletzt. Weiche Regeln, also Vorlieben, gehen als Strafterm mit ausdrücklichem Gewicht in das Ziel ein.
Linear, ganzzahlig, mit Schranke
Sind Ziel und Nebenbedingungen linear, ist das ein lineares Programm, das sich mit dem Simplex-Verfahren oder mit Innere-Punkte-Verfahren lösen lässt. Kommen ganzzahlige oder binäre Variablen hinzu, wird daraus ein gemischt-ganzzahliges Programm (MILP), für das Branch-and-Bound und Branch-and-Cut die gängigen Verfahren sind. Aufgaben mit logischen Bedingungen, etwa Reihenfolgen und Zuordnungen, löst alternativ die Constraint-Programmierung, zum Beispiel mit CP-SAT aus OR-Tools. Als Löser kommen offene wie HiGHS und SCIP in Frage; welcher läuft, steht im Nachweis.
Ein Löser liefert nicht nur eine Lösung, sondern eine Schranke: den besten Zielwert, der überhaupt noch möglich ist. Der Abstand zwischen der besten gefundenen Lösung und dieser Schranke heißt Lücke. Ist sie null, ist der Plan nachweislich optimal. Ist sie größer, ist er ein zulässiger Plan mit ehrlicher Güte, und KALKÜL nennt die Lücke und nicht nur den Plan.
Unsichere Parameter lassen sich robust behandeln: Statt eines Werts gilt ein Intervall, und der Plan muss für jeden Wert darin zulässig sein. Das verbindet die Optimierung mit der Rechnung mit Intervallen.
Der beste Plan innerhalb der Grenzen
Grenzen und ein Sperrraum bilden den zulässigen Raum. Der Ausgangsplan läuft durch den Sperrraum, der optimierte Plan liegt so nah am Ziel, wie die Regeln es zulassen, und bleibt innerhalb.
- Regel Obergrenze (obergrenze).
- Regel Untergrenze (untergrenze).
- Regel Sperrraum (sperrraum).
- Vorschlag als Band um eine Mittellinie.
- Zerlegung bis Tiefe 3: geprüfte Kästen als Linie, offene schraffiert.
- Gegenbeispiel an Regel Gegenbeispiel, erster Zeitpunkt markiert.
- Zweiter Vorschlag, innerhalb aller Schranken.
Der Plan wird noch einmal geprüft
Ein numerischer Löser rechnet im Gleitkomma und mit Toleranzen: Eine Nebenbedingung gilt dort als erfüllt, wenn sie um nicht mehr als eine kleine Zulässigkeitstoleranz verletzt ist. Für ein Ziel ist das unerheblich, für eine Regel, die eine Grenze meint, nicht. Die Sicherheit darf nicht an einer Toleranz hängen.
KALKÜL behandelt den Plan des Optimierers darum wie jeden Vorschlag. Er wird auf die Teilung gebracht, die die Handlung kennt, und mit dem exakten Verfahren gegen dieselben Regeln geprüft, mit dem SMT-Löser oder mit Intervallen. Erst das Ergebnis dieser Prüfung ist der Nachweis. Verletzt der Plan eine Regel, geht er mit dem Gegenbeispiel an die Optimierung zurück, die eine Nebenbedingung verschärft. Der Optimierer darf irren, die Prüfung nicht.
Optimieren, dann prüfen
Regeln und Ziel werden zu einem Problem, der Löser liefert einen Plan mit Schranke. Der Plan geht als Vorschlag zur exakten Prüfung. Ein Bruch führt mit Gegenbeispiel zurück zum Löser.
- Ablauf von Regeln und Ziel bis Nachweis: Problem, Löser, Plan, Prüfung.
- Problem zu Löser.
- Löser mit Schranke Plan.
- Plan zu Prüfung.
- Prüfung Gegenbeispiel Löser (Rückweg).
Zeit, Abbruch und Widerspruch
Optimierung braucht Zeit, und die Zeit ist begrenzt. Der Löser läuft mit einem Rechenbudget und liefert, wann immer es endet, den besten bisher gefundenen zulässigen Plan mit der aktuellen Schranke. Abgebrochen wird bei Ablauf der Zeit oder wenn die Lücke eine vorgegebene Grenze unterschreitet. Beides steht im Ergebnis. Einen Plan ohne Angabe der Lücke gibt KALKÜL nicht aus.
Gibt es keinen zulässigen Plan, ist das ein eigenes Ergebnis mit eigener Aussage: Die Regeln widersprechen einander. KALKÜL nennt dann die kleinste Menge von Regeln, die zusammen keinen Plan zulassen. Löser kennen sie unter den Namen Unsatisfiable Core und Irreducible Infeasible Subsystem. Für die Pflege der Regeln ist das wertvoll, denn es zeigt, welche Vorschriften sich im Betrieb gegenseitig ausschließen.
Die Läufe sind wiederholbar. Fassung der Regeln, Version des Lösers, Einstellungen und Startwert stehen im Nachweis, und dieselben Eingaben führen bei gleicher Einstellung zum selben Plan.
Mehrere Ziele ausdrücklich gewichten
Wo mehrere Ziele zählen, wird der Zielkonflikt nicht im Löser versteckt. KALKÜL kennt drei Wege: die gewichtete Summe mit sichtbaren Gewichten, die lexikografische Ordnung, die erst das erste Ziel optimiert und danach das zweite unter der Bedingung, dass das erste nicht schlechter wird, und die Pareto-Menge, also alle Pläne, die in keinem Ziel zu verbessern sind, ohne ein anderes zu verschlechtern.
Gewichte und Ordnung sind Daten mit Version und einem Verantwortlichen. Der Plan nennt, mit welchen Gewichten er entstand. Wer eine Gewichtung ändert, ändert eine Entscheidung, und das steht im Verlauf. Eine harte Regel lässt sich nie durch ein Gewicht aufwiegen; ein Plan, der sie brechen müsste, braucht eine Ausnahme mit Freigabe.
Eckdaten
- Problem
- Variablen (reell, ganzzahlig, binär), Zielfunktion, Nebenbedingungen aus den Regeln der Prüfung
- Regeln
- hart als Nebenbedingung, weich als Strafterm mit Gewicht; eine Fassung mit einer Version
- Verfahren
- Simplex, Innere-Punkte, Branch-and-Bound und Branch-and-Cut, Constraint-Programmierung (CP-SAT)
- Löser
- offen, etwa HiGHS und SCIP; Version im Nachweis
- Güte
- Schranke und Lücke werden mit dem Plan ausgegeben
- Prüfung
- Plan gegen dieselben Regeln, exakt, mit SMT-Löser oder Intervallen; erst das ist der Nachweis
- Kein Plan
- kleinste widersprüchliche Regelmenge
- Mehrere Ziele
- gewichtete Summe, lexikografisch oder Pareto; Gewichte als versionierte Daten
- Wiederholbar
- Fassung der Regeln, Löser, Einstellungen und Startwert im Nachweis
Weiter
- KALKÜL · TechnikRegelnWie KALKÜL Regeln als Formeln mit einem SMT-Löser prüft: unerfüllbare Negation ist ein Nachweis, erfüllbare ein Gegenbeispiel, alles andere kein Ja.
- KALKÜL · TechnikIntervalleWie KALKÜL nichtlineare Bedingungen und Messunsicherheit mit Intervallen und einer Zerlegung in Boxen entscheidet, und warum unentschieden kein Ja ist.
- KALKÜL · TechnikNachweisWie KALKÜL Eingaben, Regelversion und Ergebnis mit SHA-256 festschreibt, mit Ed25519 signiert und mit einem Zeitstempel nach RFC 3161 belegt.
- KALKÜL · TechnikGegenbeispielWie KALKÜL zu jedem Nein eine Belegung liefert, die die Regel bricht, sie durch Einsetzen ohne Löser nachprüft und daraus den nächsten Vorschlag ableitet.
- KALKÜL · TechnikSzenarienWie KALKÜL Varianten als Szenarien auf einem Zweig rechnet, ihre Annahmen als Intervalle führt und erst die gewählte nach Freigabe wirken lässt.
- ProduktKALKÜLHandlungen vorab rechnen, gegen Regeln prüfen und belegen
Welche Planung machen Sie heute mit einer Tabelle und viel Erfahrung? Ihre Regeln schreiben wir mit Ihnen als Nebenbedingungen auf.