JobShopScheduling/notes.md

2.5 KiB

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
  2. 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
  2. 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