1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\tikzset{%
>={Latex[width=2mm,length=2mm]},
% Specifications for style of nodes:
base/.style = {rectangle, rounded corners, draw=black,
minimum width=4cm, minimum height=1cm,
text centered, font=\sffamily},
activityStarts/.style = {base, fill=blue!30},
startstop/.style = {base, fill=red!30},
scoreDiff/.style = {base, fill=green!30},
process/.style = {base, minimum width=2.5cm, fill=orange!15,
font=\ttfamily},
}
\begin{document}
% Drawing part, node distance is 1.5 cm and every node
% is prefilled with white background
\begin{tikzpicture}[node distance=1.5cm,
every node/.style={fill=white, font=\sffamily}, align=center]
% Specification of nodes (position, etc.)
\node (start) [activityStarts] {BEGIN};
\node (retriveLastMutationsBlock) [process, below of=start] {retrieve last two \\ mutations score marks};
\node (scoreDiff) [scoreDiff, below of=retriveLastMutationsBlock] {Last Mutation scored better \\ than its parent ?};
\node (pickLastMutationChildBlock) [startstop, right of=scoreDiff, below of=scoreDiff, xshift=2cm] {pick one of the last \\ Mutation's possibilites at \\ random};
\node (modifPerformedBlock) [scoreDiff, below of=scoreDiff, yshift=-1.5cm] {modification already applied \\ on this branch ?};
\node (pickExistingBlock) [startstop, left of=scoreDiff, below of=scoreDiff, xshift=-2cm] {pick existing \\ Mutation's child \\ modification [biased by weight]};
\node (pickNewRowBlock) [startstop, left of=pickExistingBlock, xshift=-3cm] {pick a brand new \\ row in the database \\ to fuzz on};
\node (end) [activityStarts, below of=modifPerformedBlock] {END};
% Specification of lines between nodes specified above
% with aditional nodes for description
\draw[->] (start) -- (retriveLastMutationsBlock);
\draw[->] (retriveLastMutationsBlock) -- (scoreDiff);
\draw[->] (scoreDiff) -| node[yshift=0.2cm,xshift=20]{No} node[yshift=-0.4cm]{50\%} (pickExistingBlock);
\draw[->] (scoreDiff) -| node[yshift=-0.4cm]{50\%}(pickNewRowBlock);
\draw[->] (scoreDiff) -| node[xshift=0.7cm]{Yes} (pickLastMutationChildBlock);
\draw[->] (pickNewRowBlock) |- (end);
\draw[->] (pickExistingBlock) |- (modifPerformedBlock);
\draw[->] (pickLastMutationChildBlock) |- (modifPerformedBlock);
\draw[->] (modifPerformedBlock) -- node[yshift=-0.4cm]{Yes}(scoreDiff);
\draw[->] (modifPerformedBlock) -- node[xshift=0.7cm]{No} (end);
\end{tikzpicture}
\end{document}
|