Дискретно-непрерывная математика. Кн. 0 : Алгоритмы. Ч. Генетические алгоритмы



Download 9,87 Mb.
Pdf ko'rish
bet223/228
Sana20.06.2022
Hajmi9,87 Mb.
#683557
TuriКнига
1   ...   220   221   222   223   224   225   226   227   228
Bog'liq
Algorithms3

Хромосома-отец
Хромосома-мать
Хромосома-потомок
(13 | 5,7,3) 
(1 | 28,15,3) 
(13,28,15,3) 
(9,13 | 5,2) 
(14,9 | 2,4) 
(9,13,2,4) 
(13,5,7 | 3) 
(9,13,5 | 2) 
(13,5,7,2) 
(14 | 9,2,4) 
(9 | 13,5,2) 
(14,13,5,2) 
(13,5 | 7, 3) 
(9,13 | 5, 2) 
(13,5,5,2) 
Таблица 6
: Симуляция кросс-оверов хромосом родителей 
Теперь мы можем вычислить коэффициенты выживаемости (fitness) 
потомков. 
Хромосома-потомок
Коэффициент выживаемости
(13,28,15,3) 
|126-30|=96 
(9,13,2,4) 
|57-30|=27 
(13,5,7,2) 
|57-30|=22 
(14,13,5,2) 
|63-30|=33 
(13,5,5,2) 
|46-30|=16 
Таблица 7
: Коэффициенты выживаемости потомков (fitness) 
Средняя приспособленность (fitness) потомков оказалась 38.8, в то 
время как у родителей этот коэффициент равнялся 59.4. Следующее 
поколение может мутировать. Например, мы можем заменить одно из 
значений какой-нибудь хромосомы на случайное целое от 1 до 30.
Продолжая таким образом, одна хромосома в конце концов достигнет 
коэффициента выживаемости 0, то есть станет решением.


А.Е. Кононюк Дискретно-непрерывная математика 
422 
Системы с большей популяцией (например, 50 вместо 5-и сходятся к 
желаемому уровню (0) более быстро и стабильно.
1.
1
Принцип работы программы
Oбранимся к теоретическим пояснениям в практической реализации 
данной задачи в среде программирования С++ : 
Первым делом посмотрим на заголовок класса:
#include  
#include  
#define MAXPOP 25 
struct gene { 
int alleles[4]; 
int fitness; 
float likelihood; 
// Test for equality. 
operator==(gene gn) { 
for (int i=0;i<4;i++) { 
if (gn.alleles[i] != alleles[i]) return false; 

return true; 


А.Е. Кононюк Дискретно-непрерывная математика 
423 

}; 
class CDiophantine { 
public: 
CDiophantine(int, int, int, int, int); 
int Solve(); 
// Returns a given gene. 
gene GetGene(int i) { return population[i];} 
protected: 
int ca,cb,cc,cd; 
int result; 
gene population[MAXPOP]; 
int Fitness(gene &); 
void GenerateLikelihoods(); 
float MultInv();inverse. 
int CreateFitnesses(); 
void CreateNewPopulation(); 
int GetIndex(float val); 


А.Е. Кононюк Дискретно-непрерывная математика 
424 
gene Breed(int p1, int p2); 
}; 
Существуют две структуры: gene и класс CDiophantine. gene 
используется для слежения за различными наборами решений. 
Создаваямая популяция — популяция ген. Эта генетическая структура 
отслеживает свои коэффициенты выживаемости и вероятность 
оказаться родителем. Также есть небольшая функция проверки на 
равенство.
Теперь по функциям:

Download 9,87 Mb.

Do'stlaringiz bilan baham:
1   ...   220   221   222   223   224   225   226   227   228




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish