рограми
program sga;
uses crt; = 20; = 20;
dim = 2; {розмірність простору пошуку} = boolean;
{Алель - позиція в бітової рядку}
chromosome = array [1 .. maxstring * dim] of allele;
{бітова рядок} = array [1 .. dim] of real; = record: chromosome;
{генотип = бітова рядок}
x: fenotype; {фенотип = масив дійсних
координат точки в просторі пошуку}: real; {значення цільової функції}
end; = array [1 .. maxpop] of individual;
const: fenotype = (2. 048,2.048);
{масив максимальних значень для координат точки в просторі пошуку}: fenotype = (-2.048, - 2.048);
{масив мінімальних значень для координат точки в просторі пошуку}
var, minSum, minAverage: real;, nProgon: byte; {лічильники}, newpop, intpop: population;
{Три непересічних популяції - стара, нова й проміжна}
popsize, lchrom, flchrom, gen, maxgen: integer;
{Глобальні цілі змінні}, pmutation: real;
{глобальні речові змінні}: real; {Статистичні речові}
{Імовірнісні процедури} random_: real; _: = random (65535)/(65535-1);; flip (probability: real): boolean;
{підкидання монетки - true якщо орел}
beginprobability = 1.0 then: = true: = (random_ <= probability);; rnd (low, high: integer): integer;
{Випадковий вибір між low і high}
var: integer; low> = high then: = lowbegin: = trunc (random_ * (high-low +1) + low); i> high then i: = high;;: = i;;
{інтерфейсні процедури: decode and objfunc} objfunc (x: fenotype): real; me: real;: = x [1] * x [1] - x [2];: = me * me * 100;: = me + (1-x [1]) * (1-x [1]);; decode (chrom: chromosome; lbits: integer; var x: fenotype);
{Декодування рядка в масив дійсних координат точки в просторі пошуку - true = 1, false = 0}
var, j: integer;, accum, powerof2: real; i: = 1 to dim do begin: = 0.0;: = 1;: = 1; j: = 1 + lbits * (i -1) to lbits + lbits * (i-1) do beginchrom [j] then accum: = accum + powerof2;: = powerof2 * 2;: = f * 2;; [i]: = xmin [i] + ( xmax [i] - xmin [i]) * accum/(f-1)
end;
{Розрахунок статистичних величин: statistics}
procedure statistics (popsize: integer; var min: real;
var pop: population);
{Розрахунок статистик популяції}
var: integer;
{Ініціалізація}: = pop [1]. fitness;
{Цикл для min} j: = 2 to popsize do with pop [j] d...