1. Initializatsiya Algoritm odatda tasodifiy yaratilgan populyatsiyadan boshlanadi. Aholi soni muammoning tabiatiga bog'liq. Biz 0 va 1 kodlashdan foydalanishimiz mumkin. Biroq, ushbu qo'llanmada biz har bir genni ifodalash uchun bir xil taqsimlangan raqamlardan foydalanamiz.
populyatsiya uchun to'ldiruvchi = {}# populyatsiya hajmi
npop = 20
# pastki chegara
varmin = -10
# yuqori chegara
varmax = 10
# xarajat funktsiyasi
costfunc = shar# har bir inidivdualning pozitsiyasi (xromosomalari) va
diapazondagi i uchun narxi (npop):
populyatsiya[i] = {'joylashuv': Yo'q, 'xarajat': Yo'q}diapazondagi i uchun(npop):
populyatsiya[i]['position'] = np.random.uniform(varmin, varmax, num_var)
populyatsiya[i]['cost'] = costfunc(population[i]['position' ])
Biz populyatsiyani saqlash uchun lug'at yaratamiz va har bir shaxs xromosomalar ( pozitsiya ) va narx bilan bog'liq . Pozitsiya pastki chegarasi -10 va yuqori chegarasi +10 bo'lgan tasodifiy yaratilgan bir xil taqsimlangan raqamlar (genlar) bilan to'ldiriladi. Xarajat - bu biz optimallashtirishga harakat qilayotgan xarajat funktsiyasi. Ushbu qo'llanmada biz x kvadratlarining yig'indisini optimallashtiramiz , bu erda x har bir xromosomaning individual genidir.
2. Ota-onalar tanlovi Har bir keyingi avlod davomida yangi avlodni ko'paytirish uchun mavjud populyatsiyaning bir qismi tanlanadi. Individual yechimlar fitnesga asoslangan jarayon orqali tanlanadi [ 2 ]. Biz 0-avlodda bo'lganimiz sababli, bizda nasl yo'q. Biz ota-onalarni tasodifiy yaratilgan populyatsiyamizdan tanlaymiz. Eng mos shaxslarni aniqlash va naslchilik uchun tanlashning uchta asosiy usuli mavjud.
Tasodifiy tanlov : Bu ota-onalarni tanlashning eng oddiy va samarasiz usuli. Ushbu usulda biz populyatsiyani almashtirish orqali aralashtiramiz va naslchilik uchun ota-ona sifatida birinchi ikkita shaxsni tanlaymiz. Bu usul tavsiya etilmaydi, chunki u "Darvinning tabiiy tanlanish yo'li bilan evolyutsiya nazariyasiga" amal qilmaydi, bunda odamlar tasodifiy emas, balki jismoniy holatiga qarab tanlanadi.
q = np.random.permutation(npop) p1 = populyatsiya[q[0]] p2 = aholi[q[1]]