Seite 1 von 1

Optimierungsproblem

Verfasst: Di 19. Mär 2013, 22:23
von kojak
hi leute!

ich hab ein kleines problem mit der formatierung eines optimierungsproblems. im internet bin ich auf das package amsmath aufmerksam geworden. das ganze soll am ende ungefähr so wie hier:

[img]http://imageshack.us/photo/my-images/38 ... 016ph.jpg/[\img]

also die formatierung soll so sein, die formeln sind in der jpeg anders als in meinem beispiel.

bisher hab ich es so:
\begin{alignat}{2}
& \text{min} \qquad
& & \sum_{p \in \mathcal{P}, s \in \mathcal{S}, c \in C_{\geq s}} obj_{s, c, p} \cdot y_{s, c, p} \\
& \text{s.t.}
& & \sum_{p \in \mathcal{P}} x_{c,p} = l(c) \qquad \forall c \in \mathcal{C} \\
& & & \sum_{c \in \mathcal{C}} x_{c,p} \leq |\mathcal{R}| \qquad \forall p \in \mathcal{P} \\
& & & \sum_{p \in \mathcal{P}} x_{c,p} = l(c) \qquad \forall c \in \mathcal{C} \\
\end{alignat}
mein problem ist, dass ich die \forall der nebenbedingungen gerne weiter rechts und auf einer höhe hätte. bisher hab ich das mit \qquad gelöst, aber der abstand richtet sich da ja nach dem vorangegangen text. macht man das mit einer tabbing umgebung oder geht es besser? super wäre auch eine ausrichtung bei den nebenbedingungen an dem vergleichsoperator (=, <=, >=).

Verfasst: Mi 20. Mär 2013, 07:49
von Noch so einer
Da Du ohnehin bereits alignat verwendest, stellt sich die Frage, ob das nicht einfach durch Hinzufügen weiterer Spalten zu erreichen ist. Da Du allerdings weder darauf geachtet hast, dass das Bild wirklich als Bild in Deinem Beitrag steht noch ein vollständiges Minimalbeispiel zum Testen präsentiert hast, hast Du sicher Verständnis dafür, dass das nicht auszuprobieren und als fertige Lösung präsentieren werde.

Verfasst: Mi 20. Mär 2013, 08:36
von kojak
sorry, war gestern ein wenig im stress und für das anfügen eines bildes bin ich scheinbar zu doof. das hat gestern auf teufel komm raus nicht funktioniert. ich hab es mittlerweile für ein kleines beispiel schon recht gut hinbekommen. nur die ausrichtung nach den vergleichsoperatoren fehlt, aber das ist auch nicht so wichtig. hier nochmal mein beispiel:
\documentclass[titlepage, a4paper]{report} 						

\usepackage{ngerman}												
\usepackage[utf8]{inputenc}	
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{calc}
\usepackage{latexsym}

\begin{document}

\begin{alignat}{3}
& \text{min} \qquad
& & \sum_{c \in \mathcal{C}, r \in \mathcal{R}} y_{c,r} \\
& \text{s.t.}
& & \sum_{p \in \mathcal{P}} u_{c,p} v_{r,p} - |\mathcal{P}| \cdot y_{c,r} \leq 0 & \forall \: c \in \mathcal{C}, \: r \in \mathcal{R}, \\
& & & \sum_{u_{c,p} v_{r,p} \in \delta (u_{c,p})} u_{c,p} v_{r,p} = 1 & \forall \: u_{c,p} \in U, \\
& & & \sum_{u_{c,p} v_{r,p} \in \delta (v_{r,p})} u_{c,p} v_{r,p} \leq 1 & \forall \: v_{r,p} \in V, \\
& & & u_{c,p} v_{r,p} \in \{0,1\}, \\
& & & y_{r,p} \in \{0,1\}.
\end{alignat}

\end{document}
ich glaube man erkennt auf was ich hinaus will, aber ich probier es mit dem bild trotzdem nochmal:

[img]
http://imageshack.us/photo/my-images/38 ... n016ph.jpg
[/img]

bei einem größeren beispiel hab ich jetzt allerdings probleme:
1. der teil der nebenbedingungen nach dem \forall ist viel zu weit rechts
2. die zeile wird umgebrochen und erst hier erfolgt die nummerierung
3. im originaltext steht auch noch text davor und dadurch wird durch die länge des problems über die seite hinaus geschrieben. wie kann ich da einen seitenumbruch mitten im optimierungsproblem erzwingen?

hier der code:
\documentclass[titlepage, a4paper]{report} 												
\usepackage{ngerman}													
\usepackage[utf8]{inputenc}	
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{calc}
\usepackage{latexsym}

\begin{document}

\begin{alignat}{3}
& \text{min} \qquad
& & \sum_{p \in \mathcal{P}, s \in \mathcal{S}, c \in C_{\geq s}} obj_{s,c,p} \cdot y_{s,c,p} + \sum_{c \in \mathcal{C}} 5 \cdot w_{c} + \sum_{cu \in \mathcal{CU}, p \in \mathcal{P}} 2 \cdot v_{cu,p} \\
& \text{s.t.}
& & \sum_{p \in \mathcal{P}} x_{c,p} = l(c) & \qquad \forall \: c \in \mathcal{C}, \\
& & & \sum_{c \in \mathcal{C}} x_{c,p} \leq |\mathcal{R}| & \qquad \forall \: p \in \mathcal{P}, \\
& & & x_{c,p} - y_{s,c,p} \geq 0 & \qquad \forall \: s \in \mathcal{S}, \: c \in \mathcal{C}_{\geq s}, \: p \in \mathcal{P}, \\
& & & \sum_{c \in \mathcal{C}_{\geq s}} x_{c,p} - y_{s,c,p} \leq |\mathcal{R}_{\geq s}| & \qquad \forall \: s \in \mathcal{S}, \: p \in \mathcal{P}, \\
& & & \sum_{p \in d} x_{c,p} - z_{c,d} \geq 0 & \qquad \forall \: c \in \mathcal{C}, \: d \in \mathcal{D}, \\
& & & \sum_{d \in \mathcal{D}} z_{c,d} + w_{c} \geq mnd(c) & \qquad \forall \: c \in \mathcal{C}, \\
& & & \sum_{c \in cu} x_{c,p} - r_{cu,p} = 0 & \qquad \forall \: cu \in \mathcal{CU}, \: p \in \mathcal{P}, \\
& & & -r_{cu,p-1} + r_{cu,p} - r_{cu,p+1} - v_{cu,p} \leq 0 & \qquad \forall \: cu \in \mathcal{CU}, \: p \in \mathcal{P}, \\
& & & \sum_{c \in \mathcal{C}(t)} x_{c,p} \leq 1 & \qquad \forall \: t \in \mathcal{T}, \: p \in \mathcal{P}, \\
& & & r_{cu,p} \in \{0,1\}, \\
& & & v_{cu,p} \in \{0,1\}, \\
& & & w_{c} \in \mathbb{Z}_{+}, \\
& & & x_{c,p} \in \{0,1\}, \\
& & & y_{s,c,p} \in \{0,1\}, \\
& & & z_{c,d} \in \{0,1\}.
\end{alignat}

\end{document}
das liegt doch an der länge der zielfunktion, oder? gibt es da evtl. sowas wie \multicolumn, das ich für die zielfunktion nehmen kann? wie kann ich das am schlausten beheben? gibt es ne bessere/einfachere variante ein optimierungsproblem darzustellen als in meinem beispiel?

Verfasst: Mi 20. Mär 2013, 17:45
von kojak
hat keiner eine lösung für mich? :?

Verfasst: Mi 20. Mär 2013, 20:01
von Noch so einer
Auf die Schnelle kann ich Dir zumindest verraten, dass Seitenumbrüche von amsmath unterstützt werden. In Abschnitt 3.9 der Anleitung wird das explizit erklärt. Ob das innerhalb von alignat funktioniert, weiß ich aber nicht.

Verfasst: Mi 20. Mär 2013, 20:44
von kojak
schon mal ein anfang. bin bezüglich des seitenumbruchs fündig geworden. danke! jetzt macht mir nur noch die lange zielfunktion und die dadurch resultierende verschiebung der nebenbedigungen kopfzerbrechen.

Verfasst: Do 21. Mär 2013, 08:40
von Noch so einer
Man könnte die Funktion auf mehrere Zeilen aufteilen:
\documentclass[a4paper]{report}                                    
\usepackage{ngerman}                                      
\usepackage[utf8]{inputenc}  
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{calc}
\usepackage{latexsym}

\begin{document}

\begin{align}
\text{min~} 
& \sum_{p \in \mathcal{P}, s \in \mathcal{S}, c \in C_{\geq s}} obj_{s,c,p}
\cdot y_{s,c,p} \notag\\
& + \sum_{c \in \mathcal{C}} 5 \cdot w_{c} + \sum_{cu \in \mathcal{CU}, p \in \mathcal{P}} 2 \cdot v_{cu,p} \\
\text{s.\,t.~}
& \sum_{p \in \mathcal{P}} x_{c,p} = l(c) &  \forall \: c \in \mathcal{C}, \\
& \sum_{c \in \mathcal{C}} x_{c,p} \leq |\mathcal{R}| &  \forall \: p \in \mathcal{P}, \\
& x_{c,p} - y_{s,c,p} \geq 0 &  \forall \: s \in \mathcal{S}, \: c \in \mathcal{C}_{\geq s}, \: p \in \mathcal{P}, \\
& \sum_{c \in \mathcal{C}_{\geq s}} x_{c,p} - y_{s,c,p} \leq |\mathcal{R}_{\geq s}| &  \forall \: s \in \mathcal{S}, \: p \in \mathcal{P}, \\
& \sum_{p \in d} x_{c,p} - z_{c,d} \geq 0 &  \forall \: c \in \mathcal{C}, \: d \in \mathcal{D}, \\
& \sum_{d \in \mathcal{D}} z_{c,d} + w_{c} \geq mnd(c) &  \forall \: c \in \mathcal{C}, \\
& \sum_{c \in cu} x_{c,p} - r_{cu,p} = 0 &  \forall \: cu \in \mathcal{CU}, \: p \in \mathcal{P}, \\
& -r_{cu,p-1} + r_{cu,p} - r_{cu,p+1} - v_{cu,p} \leq 0 &  \forall \: cu \in \mathcal{CU}, \: p \in \mathcal{P}, \\
& \sum_{c \in \mathcal{C}(t)} x_{c,p} \leq 1 &  \forall \: t \in \mathcal{T}, \: p \in \mathcal{P}, \\
& r_{cu,p} \in \{0,1\}, \\
& v_{cu,p} \in \{0,1\}, \\
& w_{c} \in \mathbb{Z}_{+}, \\
& x_{c,p} \in \{0,1\}, \\
& y_{s,c,p} \in \{0,1\}, \\
& z_{c,d} \in \{0,1\}.
\end{align}

\end{document}
Oder man gaukelt LaTeX vor, sie wäre kürzer:
\documentclass[a4paper]{report}                                    
\usepackage{ngerman}                                      
\usepackage[utf8]{inputenc}  
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{calc}
\usepackage{latexsym}

\begin{document}

\begin{align}
\text{min~} 
& \sum_{p \in \mathcal{P}, s \in \mathcal{S}, c \in C_{\geq s}} obj_{s,c,p}
\cdot y_{s,c,p} + \sum_{c \in \mathcal{C}} 5 \cdot w_{c} + \sum_{cu \in \mathcal{CU}, p \in \mathcal{P}} 2 \cdot v_{cu,p} \hspace{-\linewidth}\\
\text{s.\,t.~}
& \sum_{p \in \mathcal{P}} x_{c,p} = l(c) &  \forall \: c \in \mathcal{C}, \\
& \sum_{c \in \mathcal{C}} x_{c,p} \leq |\mathcal{R}| &  \forall \: p \in \mathcal{P}, \\
& x_{c,p} - y_{s,c,p} \geq 0 &  \forall \: s \in \mathcal{S}, \: c \in \mathcal{C}_{\geq s}, \: p \in \mathcal{P}, \\
& \sum_{c \in \mathcal{C}_{\geq s}} x_{c,p} - y_{s,c,p} \leq |\mathcal{R}_{\geq s}| &  \forall \: s \in \mathcal{S}, \: p \in \mathcal{P}, \\
& \sum_{p \in d} x_{c,p} - z_{c,d} \geq 0 &  \forall \: c \in \mathcal{C}, \: d \in \mathcal{D}, \\
& \sum_{d \in \mathcal{D}} z_{c,d} + w_{c} \geq mnd(c) &  \forall \: c \in \mathcal{C}, \\
& \sum_{c \in cu} x_{c,p} - r_{cu,p} = 0 &  \forall \: cu \in \mathcal{CU}, \: p \in \mathcal{P}, \\
& -r_{cu,p-1} + r_{cu,p} - r_{cu,p+1} - v_{cu,p} \leq 0 &  \forall \: cu \in \mathcal{CU}, \: p \in \mathcal{P}, \\
& \sum_{c \in \mathcal{C}(t)} x_{c,p} \leq 1 &  \forall \: t \in \mathcal{T}, \: p \in \mathcal{P}, \\
& r_{cu,p} \in \{0,1\}, \\
& v_{cu,p} \in \{0,1\}, \\
& w_{c} \in \mathbb{Z}_{+}, \\
& x_{c,p} \in \{0,1\}, \\
& y_{s,c,p} \in \{0,1\}, \\
& z_{c,d} \in \{0,1\}.
\end{align}

\end{document}
Wobei ich mir hier das Leben leicht gemacht habe, und einfach die maximal mögliche Breite wieder nach links gehe, statt auszuprobieren, wie weit ich gehen muss, damit es passt.

Verfasst: Do 21. Mär 2013, 09:36
von kojak
vielen vielen dank! ich hatte als notlösung noch die zielfunktion auf 2 zeilen aufzuteilen, aber deine ansätze sind natürlich viel besser!