## Problemanalyse - Menge von Jobs - Job: Queue von Operationen (sortiert nach Operationsnummer) **Präzedenzrelation** - zusätzlicher Wartezustand (mit geringster Priorität) - allerdings: kann (?) es sinnvoll sein, trotz freier Maschine & möglichem Job noch zu warten - neue Operationen nur beim Ende einer Operation einplanen, nicht wenn nur Wartezustand beendet - Baum ausdünnen mit "konvexer Hülle" ??? - Vereinigung unter der Bedingung, dass Maschine nicht doppelt belegt - nur gerade nicht belegte Maschinen betrachten ## evaluative function - Minimierung der Zeit zu der letzter Job beendet - untere Schranke: Maximum der Summe der Operationen für 1 Maschine - obere schranke: Summe aller Operationsdauern - Heuristiken, wie lange es noch maximal dauert? - evtl. Schranken nach jedem Schritt neu berechnen? - branching, wenn Job beendet - noch laufende Jobs + verbleibende Dauer explizit mitgeben?? + Liste der noch abzuarbeitenden Ops ## what is a solution? 1. linkstotale (vielleicht sogar bitotale) Relation von Operationen (O) eines Jobs (J) (+ Wartezustand) und diskreten Zeitscheiben auf einer bestimmten Maschine - $S = \left\{(o_j,t) | o_j \in O \cup \left\{w_n | n \in \mathbb{N} \wedge w_n \text{ v.d.F. } (1, m) \right\} \wedge o_j \text{ v.d.F. } (d, m, j) \wedge t \in T \forall o \in O : \exists (o,t) \in S\right\}$ - indirekt lässt sich durch laufende Operation und Zeitpunkt auch Belegung einer Maschine zu einem Zeitpunkt ermitteln - Optimierung: sparse speichern 1. Liste von (T, $o_j$) mit $T \in \mathbb{N}$ (Time), $o_j \in O$ (Tasks) - Operationen: - Vertauschen von 2 Jobs auf einer Maschine, selbstinvers - Verzögern von Operationen (keine expliziten Wartezustände nötig) ## neighbourhood of solution - zu gegebenem S weitere ähnliche S innerhalb bestimmter Distanz erzeugen 1. Transposition: Tauschen 2er Jobs; Verzögerung: Einfügen von Warteops - evtl. Gewichtung des Werts der verschiedenen Operationen 1. minimale Anzahl der Tauschoperationen, um Lösungen ineinander zu überführen - gut, wenn Operationen gegeben - für 2 gegebene Lösungen ist Sequenz dieser Tauschoperationen evtl. nicht trivial herauszufinden? ## constraints - neue Operationen nur beim Ende einer Operation einplanen, nicht wenn nur Wartezustand beendet - branching nur wenn eine nicht-Warteopration endet - $J_i$ einer Operation O: kleinstes i sodass $J_i$ noch nicht gestartet & abgeschlossen wurde - zu 1 Zeitpunkt nur 1 Job auf einer Maschine - nur gerade nicht belegte Maschinen betrachten