From 1b9725b7e4864e6c1a616ff07622dc1588fa9d56 Mon Sep 17 00:00:00 2001 From: Trolli Schmittlauch Date: Thu, 1 Jun 2017 01:04:08 +0200 Subject: [PATCH] =?UTF-8?q?Notizen=20mit=20formalen=20=C3=9Cberlegungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 notes.md diff --git a/notes.md b/notes.md new file mode 100644 index 0000000..a21ba6f --- /dev/null +++ b/notes.md @@ -0,0 +1,50 @@ +## 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