\documentclass[varwidth=true, border=2pt]{standalone} \usepackage{tikz} \usetikzlibrary{shapes,arrows} \begin{document} \pagestyle{empty} % Define block styles \tikzstyle{decision} = [diamond, draw, fill=blue!20, text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt] \tikzstyle{block} = [rectangle, draw, fill=blue!20, text width=5em, text centered, rounded corners, minimum height=4em] \tikzstyle{line} = [draw, -latex'] \tikzstyle{cloud} = [draw, ellipse,fill=red!20, node distance=3cm, minimum height=2em] \begin{tikzpicture}[node distance = 2cm, auto] % Place nodes \node [block] (init) {initialize model}; % \node [cloud, left of=init] (expert) {expert}; % \node [cloud, right of=init] (system) {system}; \node [block, below of=init] (qualitycheck) {calculate $q$}; \node [decision, below of=qualitycheck] (decide) {is $q$ reasonable}; \node [block, left of=decide, node distance=3cm] (investigate) {investigate}; \node [block, below of=decide, node distance=3cm] (train) {train}; \node [decision, below of=train] (decide2) {is $q$ good enough}; \node [block, left of=investigate, node distance=3cm] (update) {update model}; \node [block, below of=decide2, node distance=3cm] (stop) {stop}; % Draw edges \path [line] (init) -- (qualitycheck); \path [line] (qualitycheck) -- (decide); \path [line] (decide) -- node {yes} (train); \path [line] (decide) -- node {no} (investigate); \path [line] (investigate) -- (update); \path [line] (train) -- (decide2); % \path [line] (decide) -| node [near start] {yes} (update); % \path [line] (update) |- (init); \path [line] (decide2) -- node {yes}(stop); \path [line] (decide2) -| node {no}(update); \path [line] (update) |- (init); % \path [line,dashed] (expert) -- (init); % \path [line,dashed] (system) -- (init); % \path [line,dashed] (system) |- (evaluate); \end{tikzpicture} \end{document}