Barny.G
20-01-2012, 15:47
Hallo liebe Gemeinde,
ein kleines Prob bei dem ich mal wieder ein klein wenig Unterstützung brauche. Ich habe hier einen flowchart:
\documentclass{article}
\usepackage{geometry}
\geometry{a3paper,left=35mm,right=28mm, top=25mm, bottom=27mm}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,positioning}
\begin{document}
\pagestyle{empty}
% Define block styles
\tikzstyle{decision} = [diamond, draw, fill=red!10, text width=4.5em, text badly centered, node distance=15ex, inner sep=0pt]
%\tikzstyle{block} = [rectangle, draw, fill=blue!20, text width=5em, text centered, rounded corners, minimum height=4em]
\tikzstyle{block} = [rectangle, draw, fill=blue!20, node distance=15ex, text centered, rounded corners, text width=25ex, minimum height=5ex]
\tikzstyle{line} = [draw, -latex]
%\tikzstyle{cloud} = [draw, ellipse,fill=green!20, node distance=3cm, minimum height=2em]
\tikzstyle{cloud} = [draw, rectangle,fill=green!20, node distance=25ex, minimum height=5ex, rounded corners]
\begin{tikzpicture}[node distance = 8ex, auto]
% Place nodes
\node [block] (init) {Modellinitialisierung mit $\widehat{\boldsymbol{x}}, \rho$};
\node [block, below of=init, node distance=10ex] (Gx) {$\begin{matrix} \boldsymbol{Gx}=\boldsymbol{d} - f\left(\widehat{\boldsymbol{x}}\right) \\
\boldsymbol{J} = \frac{\partial f}{\partial x_i}
\end{matrix}$};
\node [block, below of=Gx] (Lambda) {Berechnung des Langrange-Faktors $\lambda$ mit dem Hebden-Verfahren};
\node[left=15ex of Lambda] (dummy) {};
\node [cloud, above of=dummy, node distance=4ex] (Rho) {$\rho, \boldsymbol{J}$};
\node [cloud, left of=dummy] (Hebden) {$\begin{matrix} \text{Hebden-Verfahren} \\
\text{ggf. Anpassung $\rho$} \\
\text{Berechnung des } \lambda
\end{matrix}$};
\node [cloud, below of=dummy, node distance=4ex] (LambdaRho) {$\lambda$ und ggf. $\rho$};
\node [block, below of=Lambda] (dx) {Berechnung des Modellupdates $d\widehat{\boldsymbol{x}} = f\left(\boldsymbol{J},\lambda,\boldsymbol{I},\bold symbol{Gx}\right)$};
\node [block, below of=dx] (AGK) {$\mu$-Test mit dem Armijo-Goldstein-Kriterium $f\left(d\widehat{\boldsymbol{x}}, \boldsymbol{J}, \boldsymbol{Gx}\right)$};
\node [decision, below of=AGK] (decide) {$\mu < 0.25$};
\node [block, below of=decide] (update) {$\widehat{\boldsymbol{x}}_{\text{neu}} = \widehat{\boldsymbol{x}} + d\widehat{\boldsymbol{x}}$};
\node [block, right of=decide, node distance=20ex, text width=8ex] (RhoUpdate) {$\rho = \frac{\rho}{2}$};
%\node [right of=Lambda, node distance=20ex] (dummy2) {};
\node [decision, below of=update, node distance=20ex, text width=20ex] (Abbruchbed) {Abbruchbedingung erreicht?};
\node [cloud, below of=Abbruchbed, node distance=20ex] (Ende) {End};
\node [decision, right of=Abbruchbed, node distance=35ex] (MuGross) {$\mu > 0.75$};
\node [block, right of=RhoUpdate, node distance=15ex, text width=8ex] (RhoUpdate2) {$\rho = 2 \rho$};
\node [block, right of=RhoUpdate2, node distance=15ex, text width=8ex] (RhoUpdate3) {$\rho = \rho$};
% Draw edges
\path [line,dashed] (init) -- (Gx);
\path [line,dashed] (Gx) -- (Lambda);
\path [line,dashed] (Lambda) -- (Rho);
\path [line,dashed] (Rho) -- (Hebden);
\path [line,dashed] (Hebden) -- (LambdaRho);
\path [line,dashed] (LambdaRho) -- (Lambda);
\path [line,dashed] (Lambda) -- (dx);
\path [line,dashed] (dx) -- (AGK);
\path [line,dashed] (AGK) -- (decide);
\path [line,dashed] (decide) -- node {nein} (update);
\path [line,dashed] (decide) -- node {ja} (RhoUpdate);
\path [line,dashed] (RhoUpdate) |- (Lambda);
\path [line,dashed] (update) -- (Abbruchbed);
\path [line,dashed] (Abbruchbed) -- node {ja} (Ende);
\path [line,dashed] (Abbruchbed) -- node {nein} (MuGross);
\path [line,dashed] (MuGross) -- node {ja} (RhoUpdate2);
\path [line,dashed] (RhoUpdate2) |- (Lambda);
\path [line,dashed] (MuGross) -|node[midway]{nein} (RhoUpdate3);
\path [line,dashed] (RhoUpdate3) |- (Lambda);
\end{tikzpicture}
\end{document}
der noch nicht ganz fertig ist. Leider bekomme ich ganz rechts einfach das "nein" nicht an die Linie. Außerdem wäre ich gern das sinnlose Kästchen "rho=rho" los. Das habe ich mir nur als Krücke mit hingebaut, damit meine Pfeile überhaupt irgendwohin zeigen... :confused:
Als zweites Problem wäre dann noch dieser unschön große Rhombus(?) mit "Abbruchbedingung erreicht?". Kann man den irgendwie nicht ganz so raumfüllend gestalten? :)
Viele Grüße
Thomas
ein kleines Prob bei dem ich mal wieder ein klein wenig Unterstützung brauche. Ich habe hier einen flowchart:
\documentclass{article}
\usepackage{geometry}
\geometry{a3paper,left=35mm,right=28mm, top=25mm, bottom=27mm}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,positioning}
\begin{document}
\pagestyle{empty}
% Define block styles
\tikzstyle{decision} = [diamond, draw, fill=red!10, text width=4.5em, text badly centered, node distance=15ex, inner sep=0pt]
%\tikzstyle{block} = [rectangle, draw, fill=blue!20, text width=5em, text centered, rounded corners, minimum height=4em]
\tikzstyle{block} = [rectangle, draw, fill=blue!20, node distance=15ex, text centered, rounded corners, text width=25ex, minimum height=5ex]
\tikzstyle{line} = [draw, -latex]
%\tikzstyle{cloud} = [draw, ellipse,fill=green!20, node distance=3cm, minimum height=2em]
\tikzstyle{cloud} = [draw, rectangle,fill=green!20, node distance=25ex, minimum height=5ex, rounded corners]
\begin{tikzpicture}[node distance = 8ex, auto]
% Place nodes
\node [block] (init) {Modellinitialisierung mit $\widehat{\boldsymbol{x}}, \rho$};
\node [block, below of=init, node distance=10ex] (Gx) {$\begin{matrix} \boldsymbol{Gx}=\boldsymbol{d} - f\left(\widehat{\boldsymbol{x}}\right) \\
\boldsymbol{J} = \frac{\partial f}{\partial x_i}
\end{matrix}$};
\node [block, below of=Gx] (Lambda) {Berechnung des Langrange-Faktors $\lambda$ mit dem Hebden-Verfahren};
\node[left=15ex of Lambda] (dummy) {};
\node [cloud, above of=dummy, node distance=4ex] (Rho) {$\rho, \boldsymbol{J}$};
\node [cloud, left of=dummy] (Hebden) {$\begin{matrix} \text{Hebden-Verfahren} \\
\text{ggf. Anpassung $\rho$} \\
\text{Berechnung des } \lambda
\end{matrix}$};
\node [cloud, below of=dummy, node distance=4ex] (LambdaRho) {$\lambda$ und ggf. $\rho$};
\node [block, below of=Lambda] (dx) {Berechnung des Modellupdates $d\widehat{\boldsymbol{x}} = f\left(\boldsymbol{J},\lambda,\boldsymbol{I},\bold symbol{Gx}\right)$};
\node [block, below of=dx] (AGK) {$\mu$-Test mit dem Armijo-Goldstein-Kriterium $f\left(d\widehat{\boldsymbol{x}}, \boldsymbol{J}, \boldsymbol{Gx}\right)$};
\node [decision, below of=AGK] (decide) {$\mu < 0.25$};
\node [block, below of=decide] (update) {$\widehat{\boldsymbol{x}}_{\text{neu}} = \widehat{\boldsymbol{x}} + d\widehat{\boldsymbol{x}}$};
\node [block, right of=decide, node distance=20ex, text width=8ex] (RhoUpdate) {$\rho = \frac{\rho}{2}$};
%\node [right of=Lambda, node distance=20ex] (dummy2) {};
\node [decision, below of=update, node distance=20ex, text width=20ex] (Abbruchbed) {Abbruchbedingung erreicht?};
\node [cloud, below of=Abbruchbed, node distance=20ex] (Ende) {End};
\node [decision, right of=Abbruchbed, node distance=35ex] (MuGross) {$\mu > 0.75$};
\node [block, right of=RhoUpdate, node distance=15ex, text width=8ex] (RhoUpdate2) {$\rho = 2 \rho$};
\node [block, right of=RhoUpdate2, node distance=15ex, text width=8ex] (RhoUpdate3) {$\rho = \rho$};
% Draw edges
\path [line,dashed] (init) -- (Gx);
\path [line,dashed] (Gx) -- (Lambda);
\path [line,dashed] (Lambda) -- (Rho);
\path [line,dashed] (Rho) -- (Hebden);
\path [line,dashed] (Hebden) -- (LambdaRho);
\path [line,dashed] (LambdaRho) -- (Lambda);
\path [line,dashed] (Lambda) -- (dx);
\path [line,dashed] (dx) -- (AGK);
\path [line,dashed] (AGK) -- (decide);
\path [line,dashed] (decide) -- node {nein} (update);
\path [line,dashed] (decide) -- node {ja} (RhoUpdate);
\path [line,dashed] (RhoUpdate) |- (Lambda);
\path [line,dashed] (update) -- (Abbruchbed);
\path [line,dashed] (Abbruchbed) -- node {ja} (Ende);
\path [line,dashed] (Abbruchbed) -- node {nein} (MuGross);
\path [line,dashed] (MuGross) -- node {ja} (RhoUpdate2);
\path [line,dashed] (RhoUpdate2) |- (Lambda);
\path [line,dashed] (MuGross) -|node[midway]{nein} (RhoUpdate3);
\path [line,dashed] (RhoUpdate3) |- (Lambda);
\end{tikzpicture}
\end{document}
der noch nicht ganz fertig ist. Leider bekomme ich ganz rechts einfach das "nein" nicht an die Linie. Außerdem wäre ich gern das sinnlose Kästchen "rho=rho" los. Das habe ich mir nur als Krücke mit hingebaut, damit meine Pfeile überhaupt irgendwohin zeigen... :confused:
Als zweites Problem wäre dann noch dieser unschön große Rhombus(?) mit "Abbruchbedingung erreicht?". Kann man den irgendwie nicht ganz so raumfüllend gestalten? :)
Viele Grüße
Thomas