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
44
45
46
47
48
|
digraph {
layout=dot;
// default values
node [shape=box, label="", fontname="sans-serif", style=filled, fillcolor=white, fontsize=8];
graph [fontname="sans-serif"]; // must be specified separately
edge [fontname="sans-serif"]; // must be specified separately
// an unobtrusive background color
pad="1.0, 0.5";
bgcolor=whitesmoke;
// layout of edges and nodes
splines=ortho;
nodesep=0.3;
ranksep=0.3;
// nodes
a1[label="INITIALIZE t := 0"];
a2[label="INITIALIZE P(t)"];
a3[label="evaluate FITNESS of P(t)"];
a4[shape="diamond", label="STOPPING CRITERION"; width=4];
// connect 'end' node with 'a9' node (bottom of figure)
{
rank=same;
a9[label="t := t + 1"];
// end-symbol similar to UML notation
end[shape=doublecircle, label="end", width=0.5];
}
a5[label="P'(t) := RECOMBINATION{P(t)}"];
a6[label="P''(t) := MUTATION{P'(t)}"];
a7[label="P(t+1) := SELECTION{P''(t) + P(t)}"];
a8[label="evaluate FITNESS of P''(t)"];
// edges
a1 -> a2 -> a3 -> a4;
a4 -> a5[xlabel="false ", fontsize=10];
a4 -> end[xlabel="true ", fontsize=10];
a5 -> a6 -> a7 -> a8 -> a9;
a4 -> a9 [dir=back];
// explain the notation
expl [shape=plaintext, fontsize=10, width=3.2, fillcolor=whitesmoke,
label="P(t): generation of ancestors at a time t\lP''(t): generation of descendants at a time t\l"];
}
|