diff --git a/.gitignore b/.gitignore index f3b872a..113f752 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,88 @@ -data/ -*.parquet -*.xlsx -*.pdf +# ====================== +# Python +# ====================== +__pycache__/ +*.py[cod] +*$py.class + +# Virtual environments .venv/ +venv/ +env/ + +# Packaging / builds +build/ +dist/ +*.egg-info/ +.eggs/ +pip-wheel-metadata/ + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Test / coverage +.coverage +.coverage.* +htmlcov/ +.pytest_cache/ +.mypy_cache/ +.ruff_cache/ + +# Jupyter +.ipynb_checkpoints/ + +# ====================== +# Node / Frontend +# ====================== node_modules/ -.DS_Store -latex/*.pdf -*.log +dist/ +build/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# ====================== +# Data (WICHTIG) +# ====================== data/ *.parquet +*.feather +*.h5 +*.hdf5 +*.csv *.xlsx -latex/ + +# ====================== +# LaTeX (nur Source behalten) +# ====================== latex/*.pdf +latex/*.aux +latex/*.log +latex/*.out +latex/*.toc +latex/*.fdb_latexmk +latex/*.fls +latex/*.synctex.gz + +# ====================== +# Logs +# ====================== +*.log + +# ====================== +# macOS +# ====================== +.DS_Store + +# ====================== +# IDE / Editor +# ====================== +.vscode/ +.idea/ + +# ====================== +# Misc +# ====================== +*.swp +*.tmp \ No newline at end of file diff --git a/latex/LEAG.svg b/latex/LEAG.svg new file mode 100644 index 0000000..9b3608b --- /dev/null +++ b/latex/LEAG.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/latex/modellierung.tex b/latex/modellierung.tex new file mode 100644 index 0000000..fcab20d --- /dev/null +++ b/latex/modellierung.tex @@ -0,0 +1,1061 @@ +% Modellierung - LaTeX Vorlage (Deutsch) + +\documentclass[a4paper,11pt]{scrartcl} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[ngerman]{babel} + +\usepackage{microtype} +\usepackage{graphicx} +\usepackage{booktabs} + +\usepackage{geometry} +\geometry{margin=2.5cm} +\usepackage{hyperref} +\hypersetup{colorlinks=true,linkcolor=blue,urlcolor=blue} +\usepackage{tikz} +\usetikzlibrary{positioning, shapes, arrows} + + +\usepackage{amsmath} +\usepackage{amssymb} +\setlength{\parindent}{0pt} + + +\titlehead{\includegraphics[width=0.35\textwidth]{LEAG.pdf}} +\addtokomafont{title}{\rmfamily\bfseries} +\title{Braunkohle-Supply-Chain-Optimierung\\} + + +\author{Nicolai Löwenberg, William-Julius Federsel} +\date{\today} + +\begin{document} +\maketitle +% \begin{abstract} + +% In diesem Dokument wird die Modellierung der Logistik im Lausitzer Braunkohlerevier beschrieben. +% \end{abstract} +In folgenden Dokument wird die Braunkohlelogistik im Lausitzer Braunkohlerevier als Optimierungs- problem beschrieben. + +\tableofcontents +\newpage + +\section{Optimierungsmodell} + +\subsection{Indexmengen und Zeitstruktur} + +\begin{align} +I &: \text{ Menge der Tagebaue},\\ +J &: \text{ Menge der Verbraucher (Kraftwerke und Veredlungen)},\\ +W &: \text{ Menge der Wochen im Planungszeitraum},\\ +D &: \{Sa, So, Mo, Di, Mi, Do, Fr\},\\ +S &: \{F, S, N\}. +\end{align} + +Eine Zeiteinheit im Modell ist ein Tripel \((w,d,s)\) mit \(w \in W, d \in D, s \in S\). +Jeder Tag ist in drei Schichten unterteilt. Die Frühschicht $F$ beginnt um 05:00 Uhr, die Spätschicht $S$ beginnt um 13:00 Uhr und die Nachtschicht $N$ beginnt um 21:00 Uhr. + +\subsection{Entscheidungsvariable} + +\[ +x_{i,j,w,d,s} \ge 0 +\] + +mit + +\begin{itemize} +\item Einheit: t +\item Interpretation: Menge Rohkohle in t, die in Woche \(w\), Tag \(d\), Schicht \(s\) von Tagebau \(i\) zu Verbraucher \(j\) transportiert wird. +\end{itemize} + +Die Variable ist ganzzahlig in 1000-t-Schritten, also: +\[ +x_{i,j,w,d,s} \in \{\,1000 \cdot k \mid k \in \mathbb{N}_{0}\,\}. +\] + + +\subsection{Knoten und Relationen} + +Im PoC werden die Tagebaue direkt als Quellknoten modelliert (keine expliziten +Kohlelagerplatz-Knoten). Die Verbraucher sind Kraftwerke und die Veredlung. + +\begin{align} +I &: \text{ Menge der Tagebaue},\\ +J &: \text{ Menge der Verbraucher (Kraftwerke und Veredlung)}. +\end{align} + +Konkret gilt +\[ +I = +\{\text{Reichwalde},\ \text{Nochten},\ \text{Welzow Süd}\}, +\] +\[ +J = +\{\text{Jänschwalde},\ \text{Schwarze Pumpe},\ \text{Boxberg Werk 3},\ \text{Boxberg Werk 4},\\ +\text{Veredlung}\}. +\] + +\subsection{Zulässige Transportrelationen} + +Es wird für Paarungen \((i,j)\) aus Tagebau \(i \in I\) zu Verbraucher \(j \in J\) +eine Transportmenge \(x_{i,j,w,d,s}\) zugelassen. Wir definieren die Menge +aller zulässigen Relationen +\[ +\mathcal{A} \subseteq I \times J. +\] + +Im PoC gilt: + +\subsubsection{1. Tagebau zu Verbraucher} + +\[ +(\,i,\ j\,) \in \mathcal{A} +\quad \text{für alle } i \in I,\ j \in J, +\] +mit der zusätzlichen Einschränkung +\[ +(\text{Reichwalde},\ \text{Veredlung}) \notin \mathcal{A}. +\] +Zusätzlich gilt: +\[ +(\text{Welzow Süd},\ \text{Boxberg Werk 4}) \notin \mathcal{A}, +\] +also kann Boxberg Werk 4 nur von Nochten und Reichwalde beliefert werden. + +\subsubsection{2. Ausschluss der übrigen Relationen} + +Für alle nicht zugelassenen Paare \((i,j) \notin \mathcal{A}\) gilt +\[ +x_{i,j,w,d,s} = 0 +\qquad +\forall (i,j) \notin \mathcal{A},\ \forall w \in W,\ \forall d \in D,\ \forall s \in S. +\] + + +\subsection{Bedarfsrestriktionen der Kraftwerke} + +Für jeden Verbraucher \( j \in J \) sei der Tagesbedarf +\[ +d_{j,w,d} \ge 0 +\] +gegeben. Die tatsächlich abgegebene Kohle pro Tag ergibt sich durch +\[ +y_{j,w,d} = \sum_{i \in I} O_{i,j,w,d}, +\] +wobei \(O_{i,j,w,d}\) der Tagesabfluss aus dem Bunker ist (ohne Bunker gilt \(O_{i,j,w,d}=X_{i,j,w,d}\)). + +Die tägliche Abweichung vom Bedarf wird definiert als +\[ +a^{\text{tag}}_{j,w,d} = y_{j,w,d} - d_{j,w,d}. +\] + + + +\subsubsection*{1. Tagesabweichungen} + +Für jeden Verbraucher gelten maximal zulässige Abweichungen pro Tag: +\[ +- M^{\text{tag}}_j \le a^{\text{tag}}_{j,w,d} \le M^{\text{tag}}_j +\qquad \forall j \in J, \forall w \in W, \forall d \in D. +\] + +Die Parameter \( M^{\text{tag}}_j \) ergeben sich aus den kraftwerksspezifischen Vorgaben, zum Beispiel: +\[ +\begin{aligned} +M^{\text{tag}}_{\text{J}} &= 20000,\\ +M^{\text{tag}}_{\text{SP}} &= 5500,\\ +M^{\text{tag}}_{\text{B3}} &= 1000,\\ +M^{\text{tag}}_{\text{B4}} &= 1000. +\end{aligned} +\] + +Falls Prozentgrenzen gelten, kann alternativ +\[ +M^{\text{tag}}_j = \max\{M^{\text{tag,fix}}_j,\ p_j \cdot d_{j,w,d}\} +\] +verwendet werden. +\textcolor{gray}{% +\textbf{Hinweis zur Infeasibility:} +Die Transportvariable $k$ ist ganzzahlig in 1000\;t-Schritten, die Wochen-/Monats-Toleranzen waren dafür zu eng. +Wir haben die Toleranzberechnung so angepasst, dass jede Toleranz mindestens $\pm 1000$\,t (bei Gesamt-Constraints ggf. $\pm 2000$\,t) zulässt. +Damit passen die 1000er-Schritte wieder in die Bounds, $k$ bleibt ganzzahlig, und das Modell ist ohne Workarounds lösbar.% +} + +\subsubsection*{2. Wochenabweichungen} + +Die Abweichung über eine Woche berechnet sich als +\[ +a^{\text{woche}}_{j,w} = \sum_{d \in D} a^{\text{tag}}_{j,w,d}. +\] + +Zulässig ist +\[ +- M^{\text{woche}}_j \le a^{\text{woche}}_{j,w} \le M^{\text{woche}}_j +\qquad \forall j \in J, \forall w \in W. +\] + +Typische Werte aus den Annahmen: +\[ +M^{\text{woche}}_{\text{J}} = 2000, \quad +M^{\text{woche}}_{\text{SP}} = 2000, \quad +M^{\text{woche}}_{\text{B3}} = 1000, \quad +M^{\text{woche}}_{\text{B4}} = 500. +\] + +\subsubsection*{3. Monatsabweichungen} + +Die monatliche Abweichung lautet +\[ +a^{\text{monat}}_{j} = \sum_{w \in W} \sum_{d \in D} a^{\text{tag}}_{j,w,d}. +\] + +Daraus ergibt sich die Restriktion +\[ +- M^{\text{monat}}_j \le a^{\text{monat}}_{j} \le M^{\text{monat}}_j +\qquad \forall j \in J. +\] + +Mit Parametern aus den Annahmen: +\[ +M^{\text{monat}}_{\text{J}} = 2000, \quad +M^{\text{monat}}_{\text{SP}} = 2000, \quad +M^{\text{monat}}_{\text{B3}} = 500, \quad +M^{\text{monat}}_{\text{B4}} = 200. +\] + +\subsubsection*{4. Gesamtgrenzen über alle Kraftwerke} + +Für die Summe aller Kraftwerke gelten zusätzlich: + +\[ +\underline{M}^{\text{woche}}_{\text{ges}} \le \sum_{j \in J} a^{\text{woche}}_{j,w} \le \overline{M}^{\text{woche}}_{\text{ges}} +\qquad \forall w \in W, +\] + +\[ +\underline{M}^{\text{monat}}_{\text{ges}} \le \sum_{j \in J} a^{\text{monat}}_{j} \le \overline{M}^{\text{monat}}_{\text{ges}}. +\] + +\subsubsection*{5. Begrenzung maximaler Tagesabweichungen auf höchstens zwei bzw. drei aufeinanderfolgende Tage} + +Dafür benötigen wir binäre Variablen +\[ +z_{j,w,d} \in \{0,1\}, +\] +die anzeigen, ob eine Tagesabweichung den Maximalwert erreicht. + +Zuordnung: +\[ +a^{\text{tag}}_{j,w,d} \le M^{\text{tag}}_j \, z_{j,w,d}. +\] + +Es darf höchstens zwei Tage in Folge geben, an denen die Maximalabweichung erreicht wird: +\[ +z_{j,w,d} + z_{j,w,d+1} + z_{j,w,d+2} \le K +\qquad \forall j \in J, \forall w \in W, \forall d \in \{1,\dots,|D|-2\}. +\] + +Dabei ist \(K \in \{2,3\}\) ein Parameter, der noch fachlich zu validieren ist. +Dies stellt sicher, dass maximale Tagesabweichungen nicht länger als \(K\) Tage hintereinander auftreten dürfen. + +\subsection{Bedarfsrestriktionen für die Veredlung} + +Die Veredlung benötigt zwei Kohlesorten, Nochtener Kohle und Welzower Kohle. Tagebau Reichwalde liefert keine geeignete Veredlungskohle und wird daher in diesem Abschnitt ausgeschlossen. + +\subsubsection*{Definition der Tageslieferungen} + +Für die Veredlung definieren wir die täglichen Abgaben der beiden zulässigen Kohlesorten +\[ +y^{\text{N}}_{w,d} = \sum_{s\in S} o_{\text{Nochten},\ \text{V},\ w,d,s}, +\qquad +y^{\text{W}}_{w,d} = \sum_{s\in S} o_{\text{Welzow},\ \text{V},\ w,d,s}. +\] + +Der gesamte Tagesinput ist +\[ +y^{\text{ges}}_{w,d} = y^{\text{N}}_{w,d} + y^{\text{W}}_{w,d}. +\] + +Die Bedarfe für Nochtener und Welzower Kohle seien +\[ +d^{\text{N}}_{w,d},\qquad d^{\text{W}}_{w,d}, +\] +und der Gesamtbedarf +\[ +d^{\text{ges}}_{w,d} = d^{\text{N}}_{w,d} + d^{\text{W}}_{w,d}. +\] + +\subsubsection*{Abweichungen} + +Wir definieren die Abweichungen +\[ +a^{\text{N}}_{w,d} = y^{\text{N}}_{w,d} - d^{\text{N}}_{w,d}, +\qquad +a^{\text{W}}_{w,d} = y^{\text{W}}_{w,d} - d^{\text{W}}_{w,d}, +\] +sowie die Gesamtabweichung +\[ +a^{\text{ges}}_{w,d} = y^{\text{ges}}_{w,d} - d^{\text{ges}}_{w,d}. +\] + +\subsubsection*{1. Tagesabweichungen Veredlung} + +Für Nochtener Kohle: +\[ +\underline{M}^{\text{N,tag}} \le a^{\text{N}}_{w,d} \le \overline{M}^{\text{N,tag}}. +\] + +Für Welzower Kohle: +\[ +\underline{M}^{\text{W,tag}} \le a^{\text{W}}_{w,d} \le \overline{M}^{\text{W,tag}}. +\] + +Für den Gesamtbedarf: +\[ +\underline{M}^{\text{ges,tag}} \le a^{\text{ges}}_{w,d} \le \overline{M}^{\text{ges,tag}}. +\] + +\subsubsection*{2. Wochenabweichungen} + +Für Nochtener Kohle: +\[ +\underline{M}^{\text{N,woche}} \le \sum_{d\in D} a^{\text{N}}_{w,d} \le \overline{M}^{\text{N,woche}}. +\] + +Für Welzower Kohle: +\[ +\underline{M}^{\text{W,woche}} \le \sum_{d\in D} a^{\text{W}}_{w,d} \le \overline{M}^{\text{W,woche}}. +\] + +Für den Gesamtbedarf: +\[ +\underline{M}^{\text{ges,woche}} \le \sum_{d\in D} a^{\text{ges}}_{w,d} \le \overline{M}^{\text{ges,woche}}. +\] + +\subsubsection*{3. Monatsabweichungen} + +Für Nochtener Kohle: +\[ +\underline{M}^{\text{N,monat}} \le \sum_{w\in W}\sum_{d\in D} a^{\text{N}}_{w,d} \le \overline{M}^{\text{N,monat}}. +\] + +Für Welzower Kohle: +\[ +\underline{M}^{\text{W,monat}} \le \sum_{w\in W}\sum_{d\in D} a^{\text{W}}_{w,d} \le \overline{M}^{\text{W,monat}}. +\] + +Für den Gesamtbedarf: +\[ +\underline{M}^{\text{ges,monat}} \le \sum_{w\in W}\sum_{d\in D} a^{\text{ges}}_{w,d} \le \overline{M}^{\text{ges,monat}}. +\] + +\subsubsection*{4. Ausschluss von Tagebau Reichwalde} + +Für Reichwalder Kohle gilt +\[ +x_{\text{Reichwalde},\text{V},w,d,s} = 0 +\quad +\forall w\in W,\ d\in D,\ s\in S. +\] + +Diese Nebenbedingung stellt sicher, dass Reichwalder Kohle nicht zur Deckung der Veredlungsbedarfe verwendet wird. + +\subsection{Kohlesorten Mischungsverhältnisse} + +\subsubsection*{1. Harte Mischungsgrenzen} + +Die Kohlesortenmischung wird auf dem \emph{täglichen Bunkerbestand} je Anlage modelliert. +Sei \(B_{i,j,w,d}\) der Tagesendbestand der Kohlesorte \(i\) im Bunker von Verbraucher \(j\) und +\[ +B_{j,w,d} = \sum_{i \in I} B_{i,j,w,d} +\] +der gesamte Bunkerbestand von \(j\) am Tagesende. + +Für das Kohlesortenmischverhältnis definieren wir für jede Kombination aus Tagebau \(i\) und Verbraucher \(j\) +zwei Parameter +\[ +\alpha^{\min}_{i,j}, \quad \alpha^{\max}_{i,j} \in [0,1], +\] +die den minimalen und maximalen Anteil der von Tagebau \(i\) gelieferten Kohle am Bunkerbestand +von Verbraucher \(j\) beschreiben. Die Mischungsrestriktion lautet dann +\[ +\alpha^{\min}_{i,j} \, B_{j,w,d} +\;\le\; +B_{i,j,w,d} +\;\le\; +\alpha^{\max}_{i,j} \, B_{j,w,d} +\qquad +\forall i \in I,\ \forall j \in J_{\text{Mix}},\ \forall w \in W,\ \forall d \in D. +\] +Dabei gilt \(J_{\text{Mix}}=\{\text{J},\text{SP},\text{B3},\text{B4},\text{V}\}\). + + + +Damit ergibt sich für die wichtigsten Kombinationen zum Beispiel + +\begin{align*} +\text{Kraftwerk Jänschwalde:} \quad +& 0 \le \alpha^{\min}_{\text{Reichwalde},\text{J}} \le \alpha^{\max}_{\text{Reichwalde},\text{J}} = 0{,}50,\\ +& 0 \le \alpha^{\min}_{\text{Nochten},\text{J}} \le \alpha^{\max}_{\text{Nochten},\text{J}} = 0{,}15,\\ +& 0 \le \alpha^{\min}_{\text{Welzow},\text{J}} \le \alpha^{\max}_{\text{Welzow},\text{J}} = 1{,}00, +\\[0.5em] +\text{Kraftwerk Schwarze Pumpe:} \quad +& 0 \le \alpha^{\max}_{\text{Reichwalde},\text{SP}} = 0{,}40,\\ +& 0 \le \alpha^{\max}_{\text{Nochten},\text{SP}} = 1{,}00,\\ +& 0 \le \alpha^{\max}_{\text{Welzow},\text{SP}} = 1{,}00, +\\[0.5em] +\text{Kraftwerk Boxberg Werk 3:} \quad +& \alpha^{\min}_{\text{Reichwalde},\text{B3}} = 0{,}35,\quad + \alpha^{\max}_{\text{Reichwalde},\text{B3}} = 0{,}35,\\ +& \alpha^{\min}_{\text{Nochten},\text{B3}} = 0{,}65,\quad + \alpha^{\max}_{\text{Nochten},\text{B3}} = 0{,}65,\\ +& 0 \le \alpha^{\max}_{\text{Welzow},\text{B3}} = 1{,}00, +\\[0.5em] +\text{Kraftwerk Boxberg Werk 4:} \quad +& 0{,}30 \le \alpha^{\min}_{\text{Reichwalde},\text{B4}} \le \alpha^{\max}_{\text{Reichwalde},\text{B4}} = 0{,}80,\\ +& 0{,}30 \le \alpha^{\min}_{\text{Nochten},\text{B4}} \le \alpha^{\max}_{\text{Nochten},\text{B4}} = 1{,}00,\\ +& \alpha^{\min}_{\text{Welzow},\text{B4}} = \alpha^{\max}_{\text{Welzow},\text{B4}} = 0. +\end{align*} +Die Parameter für Boxberg~Werk~4 werden analog verwendet. + +\subsubsection*{2. Zielmischung (weich) in der Zielfunktion} + +Zusätzlich wird ein Zielmischverhältnis als weiche Nebenbedingung modelliert. Dazu definieren wir +\(\alpha^{\text{ziel,low}}_{i,j}\) und \(\alpha^{\text{ziel,high}}_{i,j}\) sowie nichtnegative +Abweichungsvariablen \(\delta^{\text{low}}_{i,j,w,d} \ge 0\) und \(\delta^{\text{high}}_{i,j,w,d} \ge 0\): +\[ +B_{i,j,w,d} + \delta^{\text{low}}_{i,j,w,d} \ge \alpha^{\text{ziel,low}}_{i,j}\, B_{j,w,d}, +\] +\[ +B_{i,j,w,d} \le \alpha^{\text{ziel,high}}_{i,j}\, B_{j,w,d} + \delta^{\text{high}}_{i,j,w,d}. +\] +Die Zielmischung geht über einen Strafterm in die Zielfunktion ein: +\[ +\lambda_{\text{mix}} \sum_{i \in I}\sum_{j \in J}\sum_{w \in W}\sum_{d \in D} +\left(\delta^{\text{low}}_{i,j,w,d} + \delta^{\text{high}}_{i,j,w,d}\right). +\] + +\subsection{Kohlefördermengenkapazitäten} + +Für jeden Tagebau \( i \in I \) definieren wir die monatliche Fördermenge +\[ +F_{i} = \sum_{w \in W} \sum_{d \in D} \sum_{j \in J} \sum_{s \in S} x_{i,j,w,d,s}. +\] + +Es gelten die folgenden maximal zulässigen Fördermengen pro Monat (Parameter): + +\begin{align} +F_i &\le \overline{F}^{\text{monat}}_i \qquad \forall i \in I. +\end{align} + +Zusätzlich gilt für ausgewählte Kombinationen eine gemeinsame Obergrenze, z.\,B.: +\begin{equation} +F_{\text{Reichwalde}} + F_{\text{Nochten}} \le \overline{F}^{\text{monat}}_{\text{RW+NO}}. +\end{equation} + + +Beispielwerte für die maximalen Fördermengen sind: +\begin{align*} +\overline{F}^{\text{monat}}_{\text{Reichwalde}} &= 2\,000\,000,\\ +\overline{F}^{\text{monat}}_{\text{Nochten}} &= 1\,800\,000,\\ +\overline{F}^{\text{monat}}_{\text{Welzow}} &= 1\,200\,000,\\ +\overline{F}^{\text{monat}}_{\text{RW+NO}} &= 3\,000\,000. +\end{align*} + +Diese Restriktionen stellen sicher, dass die Gesamtfördermenge der einzelnen Tagebaue sowie die kombinierte Förderung innerhalb der geplanten Kapazitäten bleibt. +\subsection{Verladungskapazität am Kohlelagerplatz Boxberg} + +Der Kohlelagerplatz Boxberg besitzt eine begrenzte Zugverladekapazität. Für jede Schicht und jeden Tag +dürfen nur maximal die in den Annahmen definierten Mengen verladen werden. + +Die Parameter \(Z^{\max}_{\text{schicht}}\) und \(Z^{\max}_{\text{tag}}\) werden aus einer Eingabetabelle +(Kapazitätsdaten) gelesen und sind szenariobasiert. Die nachfolgend genannten Werte dienen nur als Beispiel. + +\subsubsection*{Schichtweise Kapazität} + +Die maximale Anzahl verladenbarer Züge pro Schicht beträgt +\[ +Z^{\max}_{\text{schicht}} = 25, +\] +entsprechend +\[ +25\,000 \text{ t pro Schicht}. +\] + +Dies führt zu der Restriktion +\[ +\sum_{j \in J_{\text{Boxberg}}} x_{\text{Boxberg},j,w,d,s} +\;\le\; +25\,000 +\qquad +\forall w \in W,\ \forall d \in D,\ \forall s \in S. +\] + +Hierbei ist \( J_{\text{Boxberg}} \) die Menge aller Verbraucher, die von Boxberg über die Schiene beliefert werden können: +\[ +J_{\text{Boxberg}} = +\{\text{Jänschwalde},\ \text{Schwarze Pumpe},\ +\text{Boxberg Werk 3},\ \text{Veredlung}\}. +\] + +\subsubsection*{Tägliche Kapazität} + +Die maximale Gesamtverladung pro Tag beträgt +\[ +Z^{\max}_{\text{tag}} = 75, +\] +also +\[ +75\,000 \text{ t pro Tag}. +\] + +Damit gilt +\[ +\sum_{s \in S} \sum_{j \in J_{\text{Boxberg}}} +x_{\text{Boxberg},j,w,d,s} +\;\le\; +75\,000 +\qquad +\forall w \in W,\ \forall d \in D. +\] + +\subsubsection*{Zulässige Kohlesorten} + +Vom Kohlelagerplatz Boxberg können ausschließlich die Kohlesorten +\[ +\text{Nochtener Kohle},\qquad +\text{Reichwalder Kohle} +\] +verladen werden. Dies ergibt die Nebenbedingung +\[ +x_{\text{Welzow}, j,w,d,s} = 0 +\qquad +\forall j \in J_{\text{Boxberg}},\ \forall w,d,s, +\] +da Welzower Kohle nicht über Boxberg verladen wird. + +\subsubsection*{Zulässige Verbraucher} + +Der Kohlelagerplatz Boxberg kann liefern an +\[ +\text{Jänschwalde},\quad +\text{Schwarze Pumpe},\quad +\text{Boxberg Werk 3},\quad +\text{Veredlung Industriepark Schwarze Pumpe}. +\] + +Dies wird durch Ausschlussbedingungen modelliert: +\[ +x_{\text{Boxberg},j,w,d,s} = 0 +\qquad +\forall j \notin J_{\text{Boxberg}},\ \forall w,d,s. +\] + +\subsection{Verladungskapazität am Kohlelagerplatz Welzow Süd} + +Der Kohlelagerplatz Welzow Süd verfügt über zwei parallele Bandanlagen (Band 116 und Band 117). +Für das Optimierungsmodell werden diese gemeinsam als Gesamtverladung betrachtet. + +Die Parameter \(Z^{\max,\text{schicht}}_{\text{Welzow}}\) und \(Z^{\max,\text{tag}}_{\text{Welzow}}\) werden +analog aus der Kapazitätstabelle als Input gelesen und sind je Szenario variabel. Die angegebenen Zahlen +unten sind Beispielwerte. + +\subsubsection*{Schichtweise Kapazität} + +Die maximale Anzahl verladenbarer Züge pro Schicht beträgt +\[ +Z^{\max,\text{schicht}}_{\text{Welzow}} = 33, +\] +entsprechend +\[ +33\,000 \text{ t pro Schicht}. +\] + +Die Kapazitätsrestriktion lautet damit +\[ +\sum_{j \in J_{\text{Welzow}}} x_{\text{Welzow},j,w,d,s} +\;\le\; +33\,000 +\qquad +\forall w \in W,\ \forall d \in D,\ \forall s \in S. +\] + +\subsubsection*{Tägliche Kapazität} + +Die maximale Verladekapazität pro Tag beträgt +\[ +Z^{\max,\text{tag}}_{\text{Welzow}} = 99, +\] +also +\[ +99\,000 \text{ t pro Tag}. +\] + +Damit gilt +\[ +\sum_{s \in S} \sum_{j \in J_{\text{Welzow}}} +x_{\text{Welzow},j,w,d,s} +\;\le\; +99\,000 +\qquad +\forall w \in W,\ \forall d \in D. +\] + +\subsubsection*{Zulässige Verbraucher} + +Welzow Süd kann folgende Verbraucher beliefern: +\[ +J_{\text{Welzow}} = +\{\text{Jänschwalde},\ +\text{Schwarze Pumpe},\ +\text{Boxberg Werk 3},\ +\text{Veredlung}\}. +\] + +Für alle anderen Ziele gilt +\[ +x_{\text{Welzow},j,w,d,s} = 0 +\qquad +\forall j \notin J_{\text{Welzow}},\ \forall w,d,s. +\] + +\subsubsection*{Zulässige Kohlesorten} + +Welzow Süd liefert ausschließlich Welzower Kohle: +\[ +x_{\text{Reichwalde}, j,w,d,s} = 0,\qquad +x_{\text{Nochten}, j,w,d,s} = 0 +\qquad +\forall j \in J_{\text{Welzow}},\ \forall w,d,s. +\] + +\subsection{Zugdurchlasskapazitäten} + +Für die Anlieferung zum Kraftwerk Jänschwalde existieren drei unterschiedliche +Zugrelationen mit getrennten Kapazitäten pro Schicht. Für jede dieser Relationen +definieren wir eine maximale Anzahl an Zügen pro Schicht, jeweils entsprechend +der zugelassenen Zugdurchlassmenge. + +Die transportierte Menge pro Schicht ergibt sich aus +\[ +Z_{i,j,w,d,s} = x_{i,j,w,d,s}. +\] + +\subsubsection*{Generische Formulierung} + +Für jede zulässige Relation $r$ mit Quellmenge $I_r \subseteq I$, Zielmenge $J_r \subseteq J$ +und Kapazität $C_r$ pro Schicht gilt +\[ +\sum_{i \in I_r} \sum_{j \in J_r} x_{i,j,w,d,s} \;\le\; C_r +\qquad \forall w\in W,\ d\in D,\ s\in S. +\] + +Die Werte $I_r$, $J_r$ und $C_r$ werden aus den Parametertabellen +(\texttt{zugdurchlass}) geladen. + +\subsubsection*{Derzeit hinterlegte Relationen (pro Schicht)} +\begin{itemize} + \item Welzow $\rightarrow$ Jänschwalde: $C=26\,000$\,t, zusätzlich ganzzahliges Vielfaches von $2\,000$\,t. + \item Welzow $\rightarrow$ Schwarze Pumpe: $C=24\,000$\,t. + \item Welzow $\rightarrow$ Veredlung: $C=24\,000$\,t. + \item Welzow $\rightarrow$ Boxberg Werk 3: $C=20\,000$\,t. + \item Welzow $\rightarrow$ \{SP, V\}: gemeinsam $C=24\,000$\,t. + \item Welzow $\rightarrow$ \{SP, V, B3\}: gemeinsam $C=25\,000$\,t. + \item Reichwalde + Nochten $\rightarrow$ Jänschwalde: $C=20\,000$\,t. + \item Reichwalde + Nochten $\rightarrow$ Schwarze Pumpe: $C=25\,000$\,t. + \item Reichwalde + Nochten $\rightarrow$ Veredlung: $C=25\,000$\,t. + \item Reichwalde + Nochten $\rightarrow$ Boxberg Werk 3: $C=32\,000$\,t. + \item Reichwalde + Nochten $\rightarrow$ \{SP, V\}: gemeinsam $C=25\,000$\,t. + \item Reichwalde + Nochten $\rightarrow$ \{J, SP, V, B3\}: gemeinsam $C=55\,000$\,t. + \item Reichwalde + Nochten + Welzow $\rightarrow$ Jänschwalde: $C=34\,000$\,t. + \item Reichwalde + Nochten + Welzow $\rightarrow$ Boxberg Werk 3: $C=32\,000$\,t. + \item (Reichwalde + Nochten $\rightarrow$ Jänschwalde) $+$ (Welzow $\rightarrow$ B3): gemeinsam $C=20\,000$\,t. + \item (Reichwalde + Nochten $\rightarrow$ \{J, SP, V\}) $+$ (Welzow $\rightarrow$ B3): gemeinsam $C=32\,000$\,t. +\end{itemize} + + + +\subsection{Stillstände / kurzfristige Nicht-Verfügbarkeiten} + +Kurzfristige Nicht-Verfügbarkeiten werden als dynamische \emph{Verladungskapazitäten} pro Schicht +modelliert, die aus der Tabelle \texttt{Verfuegbarkeiten} je Datum geladen werden. Für jede Schicht +werden die maximal möglichen Verladungen vorgegeben und bei fehlenden Werten (keine Angabe) +keine zusätzliche Restriktion gesetzt. + +Wir definieren die Parameter (in t): +\[ +C^{\text{WZ}}_{w,d,s}, \qquad C^{\text{RW+NO}}_{w,d,s}, +\] +die die maximal verfügbare Verladung in Schicht \(s\) am Tag \(d\) der Woche \(w\) +für Welzow bzw. für Reichwalde+Nochten beschreiben. + +Die entsprechenden Restriktionen lauten: +\[ +\sum_{j \in J} x_{\text{Welzow},j,w,d,s} \le C^{\text{WZ}}_{w,d,s} +\qquad \forall w\in W,\ \forall d\in D,\ \forall s\in S, +\] +\[ +\sum_{j \in J} \left(x_{\text{Reichwalde},j,w,d,s} + x_{\text{Nochten},j,w,d,s}\right) +\le C^{\text{RW+NO}}_{w,d,s} +\qquad \forall w\in W,\ \forall d\in D,\ \forall s\in S. +\] + +Fehlt ein Kapazitätswert, wird die entsprechende Restriktion für diese Schicht +nicht aktiviert. + +\paragraph{KVB Nord (kurzfristige Kapazität nach Jänschwalde).} +Zusätzlich werden kurzfristige Kapazitäten aus der Tabelle +\texttt{zugdurchlass\_kvb\_nord} berücksichtigt. Falls ein Wert vorliegt, gilt pro Schicht +\[ +\sum_{i \in \{\text{Reichwalde},\text{Nochten},\text{Welzow}\}} x_{i,\text{J},w,d,s} +\le C^{\text{KVB}}_{w,d,s}. +\] +Fehlende Werte führen zu keiner zusätzlichen Restriktion. + +\section{Weiche Restriktionen und Zielfunktion} + +Die folgenden Restriktionen sind \emph{weich}. Die Einhaltung der Bedarfe unter Beachtung aller harten +Restriktionen hat Vorrang. Die weichen Restriktionen werden über Strafterme in der Zielfunktion abgebildet. + +\subsection{Zielfunktion} + +Die Zielfunktion setzt sich aus Straf- und Bonustermen zusammen. Es gibt keinen direkten Term für die +Gesamtliefermenge; diese wirkt nur indirekt über die Nebenbedingungen. Damit ergibt sich: +\[ +\begin{aligned} +\min Z +\;& +\lambda^{\text{tag}} + \sum_{j \in J} \sum_{w \in W} \sum_{d \in D} + \left| a^{\text{tag}}_{j,w,d} \right| + + +\lambda^{\text{woche}} + \sum_{j \in J} \sum_{w \in W} + \left| a^{\text{woche}}_{j,w} \right| + + +\lambda^{\text{monat}} + \sum_{j \in J} + \left| a^{\text{monat}}_{j} \right| +\\ +&+ +\lambda_{\text{Mon}} + \sum_{j \in J} \sum_{w \in W} p_{j,w}^{\text{Mon}} + + +\lambda_{\text{NV}} + \sum_{j} \sum_{t} q_{j,t}^{\text{NV}} + + +\lambda_{\text{shift}} + \sum_{i \in I} \sum_{j \in J} \sum_{w \in W} \sum_{d \in D} + \sum_{(s_1,s_2)\in \mathcal{S}} + e_{i,j,w,d,s_1,s_2} + + +\lambda_{\text{shift-bal}} + \sum_{j \in J} \sum_{w \in W} \sum_{d \in D} \sum_{s \in S} + \sigma_{j,w,d,s} + + +\lambda_{\text{B-max}} + \sum_{j \in J} \sum_{w \in W} \sum_{d \in D} r_{j,w,d} + + +\\ +&+ +\sum_{(i,j)\in \mathcal{P}} \sum_{w \in W} \sum_{d \in D} \lambda^{\text{pen}}_{i,j}\, X_{i,j,w,d} +- +\sum_{(i,j)\in \mathcal{B}} \sum_{w \in W} \sum_{d \in D} \lambda^{\text{bon}}_{i,j}\, X_{i,j,w,d}. +\end{aligned} +\] + +\subsubsection*{Glattheit (Smoothness)} + +Die Glattheit bestraft starke Unterschiede zwischen Schichten. Dafür wird +für jedes Schichtpaar \((s_1,s_2)\in\mathcal{S}=\{(F,S),(S,N),(F,N)\}\) die absolute +Differenz der Schichtmengen gebildet und nur der Anteil oberhalb einer Toleranz +\(\tau_{\text{shift}}\) penalisiert: +\[ +e_{i,j,w,d,s_1,s_2} \ge \left|x_{i,j,w,d,s_1}-x_{i,j,w,d,s_2}\right| - \tau_{\text{shift}}, +\qquad e_{i,j,w,d,s_1,s_2} \ge 0. +\] +Damit werden unruhige Schichtwechsel reduziert, ohne kleine Schwankungen zu bestrafen. + +\subsubsection*{Schichtverteilung (weich)} + +Die schichtweise Abgabe definieren wir als +\[ +y_{j,w,d,s} = \sum_{i \in I} o_{i,j,w,d,s}. +\] +Da der Tagesbedarf schichtweise nicht vorgegeben ist, wird eine gleichmäßige +Verteilung als weiche Restriktion modelliert. Für jede Anlage \(j\) und Schicht \(s\): +\[ +\sigma_{j,w,d,s} \ge \left|y_{j,w,d,s} - \frac{1}{3} y_{j,w,d}\right|, +\qquad \sigma_{j,w,d,s} \ge 0, +\] +und der zugehörige Strafterm lautet +\[ +\lambda_{\text{shift-bal}} \sum_{j,w,d,s} \sigma_{j,w,d,s}. +\] + +Die ersten drei Summanden minimieren die Abweichungen auf Tages-, Wochen- und Monatsebene. Danach folgen die +weichen Präferenzen (vgl. Unterabschnitt „Weitere weiche Restriktionen“): +\begin{itemize} + \item Montag-Bunkerfüllstand \(p^{\text{Mon}}_{j,w}\) mit \(\lambda_{\text{Mon}}\). + \item Vorfahren vor Nicht-Verfügbarkeiten \(q_{j,t}^{\text{NV}}\) mit \(\lambda_{\text{NV}}\). + \item (entfällt) Bunker-Maximalstand ist hart. + \item Schichtverteilung \(\sigma_{j,w,d,s}\) mit \(\lambda_{\text{shift-bal}}\). + \item Ausgleichskraftwerk Schwarze Pumpe \(|v_{\text{SP},w,d}|\) mit \(\lambda_{\text{SP}}\). + \item Strafterm für Welzower Anteil in Boxberg 3 \(p^{\text{W}}_{\text{B3},w,d}\) mit \(\lambda^{\text{pen}}_{\text{B3}}\). + \item Bonus Welzower Anteil in Jänschwalde \(u^{\text{Welzow}}_{\text{J},w,d}\) mit \(\lambda_{\text{J}}\). + \item Bonus Nochten-/Reichwalde-Anteil in Boxberg 3 \(u^{\text{N}}_{\text{B3},w,d}, u^{\text{R}}_{\text{B3},w,d}\) mit \(\lambda_{\text{B3}}\). + \item Bonus Bandbelieferung Boxberg 4 \(X_{\text{Nochten},\text{B4}}, X_{\text{Reichwalde},\text{B4}}\) mit \(\lambda_{\text{B4}}\). + \item Generelle Präferenz für Reichwalde \(u^{\text{R}}_{j,w,d}\) mit \(\lambda_{\text{R}}\). +\end{itemize} +Alle \(\lambda\)-Parameter sind Gewichte (positiv gewählt); Bonusterme erscheinen mit negativem Vorzeichen. + +\subsubsection*{2. Bunkerbilanz (täglich)} + +Für jedes Kraftwerk \(j \in J\) sowie die Veredlung \(V\) wird ein Tagesbunkerbestand +je Kohlesorte modelliert. Der Tagesendbestand der Kohlesorte \(i\) lautet +\[ +B_{i,j,w,d} = B_{i,j,w,d-1} + X_{i,j,w,d} - O_{i,j,w,d}, +\] +wobei +\[ +X_{i,j,w,d} = \sum_{s \in S} x_{i,j,w,d,s} +\] +der Tageszufluss und +\[ +O_{i,j,w,d} = \sum_{s \in S} o_{i,j,w,d,s} +\] +der Tagesabfluss aus dem Bunker ist. Die Abgabe an den Verbraucher lautet +\[ +y_{j,w,d} = \sum_{i \in I} O_{i,j,w,d}. +\] +Hierbei bezeichnet \(o_{i,j,w,d,s}\) die schichtweise Abgabe aus dem Bunker. +Ein Anfangsbestand \(B_{i,j,w,d_0}\) wird vorgegeben. + +\subsubsection*{3. Zielbestand vor Montag (weich)} + +Für den Montag wird ein Zielbestand \(B^{\text{Mon}}_j\) angestrebt. Wir verwenden +eine Shortfall-Variable \(p^{\text{Mon}}_{j,w} \ge 0\) und formulieren +\[ +B^{\text{Mon}}_j - B_{j,w,\text{So}} \le p^{\text{Mon}}_{j,w} +\qquad \forall j \in J,\ \forall w \in W. +\] +Der Strafterm in der Zielfunktion lautet +\[ +\lambda_{\text{Mon}} \sum_{j \in J} \sum_{w \in W} p^{\text{Mon}}_{j,w}. +\] + +\subsubsection*{4. Vorfahren vor Nicht-Verfügbarkeiten (weich)} + +Nicht-Verfügbarkeiten werden aus der Verfügbarkeitstabelle erkannt (Kapazität \(=0\)). +Mit einem Vorfahrfenster von \(\Delta\) Tagen wird ein Zielbestand \(B^{\text{NV}}_j\) +für den Zeitpunkt \(t-\Delta\) vor dem IH-Tag angestrebt. Wir definieren +\(q^{\text{NV}}_{j,t} \ge 0\) und setzen +\[ +B^{\text{NV}}_j - B_{j,t-\Delta} \le q^{\text{NV}}_{j,t}. +\] +Der Strafterm lautet +\[ +\lambda_{\text{NV}} \sum_{j} \sum_{t} q^{\text{NV}}_{j,t}. +\] + +\subsubsection*{5. Maximalbestand (hart)} + +Die Bunker-Maximalstände werden als harte Restriktion modelliert: +\[ +B_{j,w,d} \le B^{\max}_j +\qquad \forall j \in J,\ \forall w \in W,\ \forall d \in D. +\] + +\subsubsection*{Weitere weiche Restriktionen} + +Zusätzlich werden Routenpräferenzen als Straf- bzw. Bonusterme modelliert. In der aktuellen Konfiguration: + +\textbf{Strafterme (teure Strecken):} +\[ +\text{Nochten}\rightarrow\text{Jänschwalde},\quad +\text{Welzow}\rightarrow\text{Schwarze Pumpe},\quad +\text{Welzow}\rightarrow\text{Boxberg Werk 3}. +\] + +\textbf{Bonusterme (bevorzugte Strecken):} +\[ +\text{Welzow}\rightarrow\text{Jänschwalde},\quad +\text{Reichwalde}\rightarrow\text{Schwarze Pumpe},\quad +\text{Reichwalde}\rightarrow\text{Boxberg Werk 3},\quad +\text{Nochten}\rightarrow\text{Boxberg Werk 3}. +\] + +Diese Präferenzen wirken additiv zur Zielfunktion über entsprechende Gewichte. + +\subsubsection{6. Schichtrelationen zwischen Tagebau Welzow Süd und Kraftwerk Jänschwalde} + +Pro Schicht muss ein Vielfaches von 2 Zügen geliefert werden: +\[ +x_{\text{Welzow},\ \text{J},\ w,d,s} \in \{ 2000 \cdot k \mid k \in \mathbb{N}_{0}\}. +\] + + + +\newpage + +\subsection{Relationsgraph} + +\begin{center} +\rotatebox{90}{ +\begin{tikzpicture}[ + font=\sffamily, + node distance=2.2cm, + greenbox/.style={ + draw, + rounded corners, + fill=green!30, + minimum width=3.8cm, + minimum height=1.1cm, + align=center + }, + bluebox/.style={ + draw, + rounded corners, + fill=cyan!30, + minimum width=4cm, + minimum height=1.4cm, + align=center + }, + smallbox/.style={ + draw, + rounded corners, + fill=yellow!40, + minimum width=3.4cm, + minimum height=1.1cm, + align=center + }, + tinybox/.style={ + draw, + rounded corners, + fill=green!20, + minimum width=3.2cm, + minimum height=1cm, + align=center + }, + hub/.style={ + draw, + fill=red!60, + minimum width=0.8cm, + minimum height=0.8cm + }, + parline/.style={thick, ->}, + parlineback/.style={thick, <-} +] + +% Hilfsmakro für parallele Doppelpfeile +\newcommand{\ppfeil}[2]{ + \draw[parline] ([xshift=2pt]#1) -- ([xshift=2pt]#2); + \draw[parlineback] ([xshift=-2pt]#1) -- ([xshift=-2pt]#2); +} + +\newcommand{\ppfeilrund}[2]{ + \draw[parline] ([xshift=2pt]#1) to[out=-135,in=90] ([xshift=2pt]#2); + \draw[parlineback] ([xshift=-2pt]#1) to[out=-135,in=90] ([xshift=-2pt]#2); +} + +% Knoten +\node[greenbox] (reichwalde) at (-8,4) {Tagebau\\Reichwalde}; +\node[greenbox] (nochten) at (0,4) {Tagebau\\Nochten}; +\node[greenbox] (welzow) at (8,4) {Tagebau\\Welzow S}; + +\node[tinybox] (boxberg) at (-4,1.4) {Kohlelagerplatz\\Boxberg}; +\node[tinybox] (welzowlp) at (8,1.4) {Kohlelagerplatz\\Welzow S}; + +\node[smallbox] (direkt) at (-7.5,0) {Direktbekohlung}; +\node[smallbox] (zug) at (-2.5,0) {Zugverladung}; + +\node[hub] (K1) at (-2,-3.5) {}; +\node[hub] (K2) at (2,-3.5) {}; +\node[hub] (K3) at (6,-3.5) {}; + +\node[bluebox] (kw4) at (-10,-2.5) {Kraftwerk\\Boxberg Werk 4}; +\node[bluebox] (kw3) at (-5.5,-7.2) {Kraftwerk\\Boxberg Werk 3}; +\node[bluebox] (veredelung) at (0,-7.2) {Veredlung\\Industriepark\\Schwarze Pumpe}; +\node[bluebox] (kwsp) at (4.5,-7.2) {Kraftwerk\\Schwarze Pumpe}; +\node[bluebox] (kwj) at (10,-7.2) {Kraftwerk\\Jänschwalde}; + +% Vom Tagebau nur eine Richtung +\draw[parline] (reichwalde.south) -- (boxberg.north); +\draw[parline] (nochten.south) -- (boxberg.north); +\draw[parline] (welzow.south) -- (welzowlp.north); + +% Lagerplatz Boxberg +\draw[thick, ->] (boxberg.west) -- (direkt.north); +\draw[thick, ->] (boxberg.south) -- (zug.north); + +% Zugverladung und Welzow LP zu K1, K2, K3 (Doppelpfeile) +\ppfeil{zug.south}{K1.north} +\ppfeil{zug.south}{K2.north} +\ppfeil{zug.south}{K3.north} + +\ppfeil{welzowlp.south}{K1.north} +\ppfeil{welzowlp.south}{K2.north} +\ppfeil{welzowlp.south}{K3.north} + +% Verbraucher +\ppfeil{direkt.south}{kw4.north} +% \ppfeil{direkt.south}{kw3.north} + +\ppfeil{K1.south}{kw3.north} + +\ppfeil{K2.south}{veredelung.north} +\ppfeil{K2.south}{kwsp.north} + +\ppfeil{K3.south}{kwj.north} + +\end{tikzpicture} + +} + +\end{center} + +\section{Benötigte Eingangsdaten} +\subsubsection{1. Bedarfsdaten der Verbraucher} +\begin{itemize} + \item Tagesbedarfe \(d_{j,w,d}\) + \item Tägliche Abweichungsgrenzen \(M^{\text{tag}}_j\) + \item Wochenabweichungsgrenzen \(M^{\text{woche}}_j\) + \item Monatsabweichungsgrenzen \(M^{\text{monat}}_j\) +\end{itemize} + +\subsubsection{2. Kapazitätsdaten der Tagebaue} +\begin{itemize} + \item Maximale monatliche Fördermengen \(F_i^{\max}\) + \item Optionale kombinierte Monatsgrenzen (z. B. Reichwalde plus Nochten) +\end{itemize} + +\subsubsection{3. Kapazitätsdaten der Kohlelagerplätze} +\begin{itemize} + \item Schichtverladekapazitäten \(Z^{\max,\text{schicht}}_l\) + \item Tagesverladekapazitäten \(Z^{\max,\text{tag}}_l\) +\end{itemize} + +\subsubsection{4. Zugdurchlasskapazitäten} +\begin{itemize} + \item Schichtkapazitäten je Relation \((i,j)\) + \item Gemeinsame Kapazitätsgrenzen für Relationen mit geteilten Strecken +\end{itemize} + +\subsubsection{5. Kohlesorten und Mischungsparameter} +\begin{itemize} + \item Zugeordnete Kohlesorte für jeden Tagebau + \item Mischungsvorgaben \(\alpha^{\min}_{i,j}\), \(\alpha^{\max}_{i,j}\) +\end{itemize} + +\subsubsection{6. Daten für weiche Restriktionen} +\begin{itemize} + \item Gewichtungsparameter der Straf und Bonusterme + \item Anfangsbunkerstände \(B_{i,j,w,d_0}\) + \item Zielbestände Montagmorgen \(B^{\text{Mon}}_j\) + \item Bunker-Maximalstände \(B^{\max}_j\) + \item Nicht-Verfügbarkeitstage (aus Verfügbarkeitstabelle) + \item Vorfahrfenster \(\Delta\) +\end{itemize} +\end{document}