Zahlenkolonnen in Grafiken verwandeln

Wenn man Zahlenkolonnen mit Hilfe einer Tabellenkalkulation erstellt, bietet sich die Verwendung der integrierten GrafikfÄhigkeiten an. Kommen die Daten jedoch aus anderen Quellen, gibt es bessere Alternativen. Im folgenden wird dazu die Programmiersprache octave verwendet.

Wahrscheinlichkeitsverteilung bei gegebenem m und s


% Create a chart showing the probabililies for given n, ng, m, s
%
% n: total number of bits
% ng: number of "good" bits (maybe a vector!!)
% m: number of mutations per generation
% s: population size
% fname: filename where chart will be store

function chart_probabilities_m_s(n, ng, m, s, fname)
  for i = 1 : length(ng)
    [d, p(i, :)] = probabilities_multiple(n, ng(i), m, s);
  endfor

  clf;
  for i = 1 : length(ng)
     meshz(d, ng(i) / n, p(i, :),'LineWidth',2);
     hold on;
  endfor
  title(sprintf("Mutations m = %d\nPopulation s = %d", m, s));
  xlabel("\\Delta nG");
  ylabel("n_G / n");
  zlabel("Propability");

  h= figure(1);
  print(h,'-dpng','-color',fname);
  
endfunction

Die im Text gezeigten Grafiken entstehen durch:


n = 5000 * 333* 24;
chart_probabilities_m_s(n, [.1 .25 .5 .75 .9] * n, 5, 1, 'chart_probabilites_m05_s1.png');

Geschwindigkeit und Kosten der Optimierung

Ein Beispiel mit Subplot, d.h. zwei Grafiken nebeneinander. Berechnet werden die Fortschritt der Optimierung, das berechnete Ergebnis wird einmal über der Generation und daneben über der Zahl der Auswertungen der Fitnessfunktion dargestellt.


1; % this is no function, only script 

m = 1 : 5;          % mutation
s = 10;             % Population size
n = 500 * 333* 24;  % number of bits

generations = (1 : 2000000)'; % generations

for i = 1 : length(m)
  i
  ng_temp = nGood(n, m(i), s, max(generations));
  if (i == 1)
    generation = generations;
    evaluation = generations * m(i);
    ng = ng_temp';
  else
    generation = [generation generations];
    evaluation = [evaluation (generations * m(i))];
    ng = [ng ng_temp'];
  endif
endfor

vAxis = ng / n *100;

clf;

subplot(1, 2, 1);
hAxis = generation;
hold on;
for i = 1 : length(m)
  plot(hAxis(:, i), vAxis(:, i), 'LineWidth', 2);
  j = hAxis(length(hAxis) * .8);
  text(hAxis(j, i), vAxis(j, i), sprintf("m=%d", m(i)));
endfor
grid on;
ylabel("Good Bits [%]");
xlabel("Generations");
ylimits = ylim();
ylimits(1) = 50;
ylim(ylimits);
title(sprintf("Speed @ s = %d", s));

subplot(1, 2, 2);
hAxis = evaluation;
hold on;
for i = 1 : length(m)
  plot(hAxis(:, i), vAxis(:, i), 'LineWidth', 2);
  j = hAxis(length(hAxis) * .8);
  text(hAxis(j, i), vAxis(j, i), sprintf("m=%d", m(i)));
endfor
grid on;
ylabel("Good Bits [%]");
xlabel("Evalulations");
ylimits = ylim();
ylimits(1) = 50;
ylim(ylimits);
title(sprintf("Cost @ s = %d", s));

h= figure(1);
print(h,'-dpng','-color','chart_speed_cost.png');

Navigation

Vorhergehendes Kapitel (Extractor)

übersicht

NÄchstes Kapitel (Animation)