Add simple script for generating plots.
[genetic.git] / bin / generate-plots
1 #!/bin/sh
2
3 limit=100
4
5 test -d ./auto || mkdir auto
6 test -d ./auto/data || mkdir auto/data
7 test -d ./auto/plots || mkdir auto/plots
8
9 i=1
10 size=648    # 6*6*6*3 = 216
11
12 echo "[+] Generating data"
13 for m in 0 0.01 0.05 0.1 0.5 1; do          #6
14 #       echo " * Mutation chance: $m"
15         for c in 0.01 0.05 0.1 0.5 0.75 1; do   #6
16 #               echo " ** Crossover chance: $c"
17                 for g in 10 20 50 100 200 500; do   #6
18 #                       echo "    > Generations: $g"
19                         for ch in 10 20 30; do          #3
20                                 FILENAME="$limit-$g-$ch-$c-$m"
21                                 FILE="./auto/data/$FILENAME"
22 #                               echo "        > Chromosomes: $ch"
23 #                               echo "./genetic --chromosome-size=$ch --generation-size=$g --generation-limit=$limit --crossover=$c --mutation=$m > ./../../genetic-materialy/auto/$limit.$g.$ch.$c.$m"
24                                 ./genetic --chromosome-size=$ch --generation-size=$g --generation-limit=$limit --crossover=$c --mutation=$m > $FILE
25
26                                 gnuplot <<- EOF
27                                 set xlabel "Pokolenia"
28                                 set ylabel "Dostosowanie"
29                                 set term png
30                                 set samples 50
31                                 set ticslevel 0
32                                 set title "Wykres średniego dostosowania populacji i najlepszego osobnika \n Genów:$ch, Osobników:$g, Krzyżowanie:$c, Mutacja:$m"
33                                 set key autotitle columnheader
34                                 set output "./auto/plots/${FILENAME}.png"
35                                 plot "${FILE}" using 1:2 with lines, "" using 1:3 with lines
36                                 EOF
37
38                                 echo -n " > (" $i/$size ")\r"
39                 i=$((i+1))
40                         done
41                 done
42         done
43 done
44
45 echo "[+] Generating comparison charts"
46
47 test -d ./auto/comparisons || mkdir auto/comparisons
48 test -d ./auto/comparisons/genes || mkdir auto/comparisons/genes
49
50 i=1
51 size=216    # 6*6*6 = 216
52 for m in 0 0.01 0.05 0.1 0.5 1; do          #6
53         for c in 0.01 0.05 0.1 0.5 0.75 1; do   #6
54                 for g in 10 20 50 100 200 500; do   #6
55             FILENAME="$limit-$g-$c-$m"
56
57                         gnuplot <<- EOF
58                         set xlabel "Pokolenia"
59                         set ylabel "Dostosowanie"
60                         set term png
61                         set samples 50
62                         set ticslevel 0
63                         set title "Wykres wpływu ilości genów na szybkość dostosowania populacji \n Osobników:$g, Krzyżowanie:$c, Mutacja:$m"
64                         set key autotitle columnheader
65                         set output "./auto/comparisons/genes/${FILENAME}.png"
66                         plot "./auto/data/$limit-$g-10-$c-$m" using 1:2 with lines title "10 Genów", \
67                              "./auto/data/$limit-$g-20-$c-$m" using 1:2 with lines title "20 Genów", \
68                              "./auto/data/$limit-$g-30-$c-$m" using 1:2 with lines title "30 Genów"
69                         EOF
70
71                         echo -n " * Genes (" $i/$size ")\r"
72             i=$((i+1))
73                 done
74         done
75 done
76
77 echo "[+] Done!              \n"
78 echo "Check: ./auto/ directory for generated data and plots"