Genetik algoritmlar



Yüklə 0,75 Mb.
səhifə4/6
tarix17.10.2023
ölçüsü0,75 Mb.
#130547
1   2   3   4   5   6
GENETIK ALGORITMLAR.

Turnirni tanlash : Bu usul har bir shaxsni tanlash ehtimoliga asoslanadi. Biz tasodifiy tanlangan shaxslar guruhi o'rtasida bir nechta turnirlarni o'tkazamiz, har bir guruhdan bir kishini g'olib sifatida tanlaymiz va yana birinchi iteratsiyadan g'oliblarni guruhlash orqali turnirni o'tkazamiz, naslchilik uchun ikkita g'olib ota-onalarga yaqinlashgunimizcha jarayonni takrorlaymiz. Har bir iteratsiyada har bir guruhning eng yaxshi a'zosi tanlashning eng yuqori ehtimoliga ega.
Ruletka g'ildiragini tanlash : Bu ota-onalarni tanlash uchun keng qo'llaniladigan va eng samarali usul; shuning uchun biz uni bugun algoritmimizda ishlatamiz. Biz hammamiz ruletka g'ildiragi kazinolarda qanday ishlashini bilamiz, to'pni tashlab, g'ildirakni aylantiramiz va to'p qaysi idishga tushishini ko'rish uchun g'ildirak to'xtaguncha kutamiz. Keling, amalga oshirish qismiga chuqurroq kirib boramiz.
Ota-ona tanlash uchun Roulette Wheel usuli

2-rasm
Kazino ruletka g'ildiragi va ota-ona tanlash uchun ruletka g'ildiragi usuli o'rtasidagi yagona farq kazino ruletka g'ildiragida, g'ildirak aylanish to'xtaydi qachon har bir pot to'pni ushlab teng ehtimoli bor. Biroq, bu erda biz har bir qozon uchun (aholining individual) ehtimolini aniqlaymiz. Har bir shaxsning ehtimoli individualning yaroqliligi deb ataladi.

3-rasm.Ruletka g'ildirak tanlash jarayoni.
Bizda to'rtta ota-ona P1, P2, P3 va P4 bor, naslchilik uchun tanlangan bo'lish ehtimoli mos ravishda 0,1, 0,2, 0,3, 0,4. O'q bir joyga o'rnatiladi va g'ildirak aylantiriladi. G'ildirak aylanishni to'xtatganda, naslchilik uchun o'q ko'rsatgan ota-ona tanlanadi - g'ildirakdagi maydon qanchalik katta bo'lsa, tanlangan bo'lish ehtimoli yuqori bo'ladi.
Endi, ruletka g'ildiragini dasturiy tarzda qanday amalga oshiramiz? Biz g'ildirakni bir xil chiziqqa ochamiz va chiziqni populyatsiyadagi ota-onalar soniga ajratamiz va har bir ota-ona tanlangan bo'lish ehtimoliga teng chiziqdagi bo'sh joyni egallaydi va har bir kesish nuqtasi ehtimollikning yig'indisi hisoblanadi. 0 dan 1 gacha bo'lgan tasodifiy sonni yaratish naslchilik uchun ota-onani tanlaydigan o'q kabi ishlaydi. Bu erda tasodifiy son 0,28 ga teng; shuning uchun g'olib P2.

4-rasm: naslchilik uchun ota-onani tanlash uchun psevdor tasodifiy raqamni yaratish .
Buni yanada soddalashtirish uchun biz har bir ota-ona ehtimolining yig'indisini hisoblaymiz, uning yig'indisini tasodifiy yaratilgan raqam bilan ko'paytiramiz. Keyin yig'indisi tasodifiy sondan katta bo'lgan birinchi ota-onaning indeksini oling. Misol uchun, P1 umumiy qiymati 0,1, P2 0,3, P3 0,6 va P4 1. Agar tasodifiy hosil qilingan son 0,28 bo'lsa, yig'ilgan qiymati 0,28 dan katta bo'lgan birinchi ota-ona P2 bo'ladi, shuning uchun g'olib ota-ona hisoblanadi. naslchilik. argwhere () funksiyasi parametr sifatida berilgan ifoda asosida rost va yolgʻon massivni qaytaradi.
def roulette_wheel_selection(p):
c = np.cumsum(p)
r = sum(p) * np.random.rand()
ind = np.argwhere(r <= c)
return ind[0][0]p1 = populyatsiya[ruletka_g'ildiragini tanlash( probs )]
p2 = aholi[ruletka_g'ildiragini tanlash( probs )]
Biz har bir ota-onaning ehtimolini manfiy beta vaqt xarajatlarining eksponensial ko‘rsatkichi bo‘yicha hisoblaymiz, bunda beta oldindan belgilangan butun sondir va xarajatlar har bir ota-onaning narxi aholidagi barcha ota-onalarning o‘rtacha narxiga bo‘linadi.
# Ruletka g'ildiragini tanlash ehtimolini hisoblash
beta = 1
diapazonidagi i uchun(len(aholi)):
# barcha aholi xarajatlari ro'yxati.append
(population[i]['cost'])xarajatlar = np.array(xarajatlar)
avg_cost = np.mean(xarajatlar),
agar avg_cost != 0 bo'lsa:
xarajatlar = xarajatlar/avg_cost

Yüklə 0,75 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin