1062 lines
32 KiB
TeX
1062 lines
32 KiB
TeX
% 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}
|