Genetik algoritma terminolojisinde pop?lasyon b?y?kl???. Genetik algoritma - g?rsel uygulama

1. Do?adaki do?al se?ilim

Evrim teorisi herkesin oldu?unu iddia ediyor biyolojik t?rler amac?yla bilin?li olarak geli?ir ve de?i?ir. en iyi yol adapte ?evre. Evrim s?recinde bir?ok b?cek ve bal?k t?r? koruyucu renkler kazanm??, kirpi i?neler sayesinde zarar g?rmez hale gelmi?, insan en kompleksin sahibi olmu?tur. gergin sistem. Evrimin t?m canl? organizmalar?n optimizasyon s?reci oldu?unu s?yleyebiliriz. Do?an?n bu optimizasyon problemini hangi yollarla ??zd???n? d???nelim.

Evrimin ana mekanizmas? do?al se?ilimdir.

Bunun ?z?, daha uyumlu bireylerin sahip olmas?d?r. daha fazla olas?l?k Hayatta kalmak ve ?remek i?in kullan?l?rlar ve bu nedenle k?t? adapte olmu? bireylere g?re daha fazla yavru ?retirler. ?stelik genetik bilginin aktar?m? sayesinde ( genetik miras) torunlar temel niteliklerini ebeveynlerinden miras al?rlar. B?ylece g??l? bireylerin yavrular? da nispeten iyi adapte olacak ve onlar?n toplam k?tle bireyler artacakt?r. Onlarca veya y?zlerce nesillik bir de?i?imden sonra, belirli bir t?r?n bireylerinin ortalama uygunlu?u g?zle g?r?l?r ?ekilde artar.

Genetik algoritmalar?n ?al??ma prensiplerini netle?tirmek i?in do?adaki genetik kal?t?m mekanizmalar?n?n nas?l ?al??t???n? da a??klayaca??z. Herhangi bir hayvan?n her h?cresi her ?eyi i?erir genetik bilgi bu birey. Bu bilgi bir dizi ?ok uzun DNA (DeoksiriboN?kleik Asit) molek?l? ?eklinde yaz?lm??t?r. Her DNA molek?l? molek?llerden olu?an bir zincirdir n?kleotidler A, T, C ve G olmak ?zere d?rt t?r? vard?r. Asl?nda bilgi, DNA'daki n?kleotidlerin s?ras?na g?re ta??n?r. B?ylece, genetik Kod Bir birey yaln?zca 4 harften olu?an ?ok uzun bir karakter dizisidir. Bir hayvan h?cresinde her DNA molek?l? bir zarla ?evrilidir - bu olu?uma denir kromozom.

Bir bireyin her do?u?tan gelen ?zelli?i (g?z rengi, kal?tsal hastal?klar, sa? tipi vb.) kromozomun ad? verilen belirli bir k?sm? taraf?ndan kodlan?r. genetik ?ifre Bu m?lk. ?rne?in g?z rengi geni, g?z rengini kodlayan bilgiyi i?erir. belirli renk g?z. ?e?itli anlamlar gen buna denir aleller.

Hayvanlar ?o?ald???nda, iki ebeveyn germ h?cresi birle?ir ve bunlar?n DNA'lar? etkile?ime girerek yavrular?n DNA's?n? olu?turur. Etkile?imin ana yolu ?aprazlama (?aprazlama, ?aprazlama).?aprazlamada atalar?n DNA's? iki par?aya b?l?n?r ve daha sonra yar?lar? de?i?tirilir.

Kal?t?m s?ras?nda, radyoaktivite veya di?er etkiler nedeniyle mutasyonlar m?mk?nd?r, bunun sonucunda ebeveynlerden birinin germ h?crelerindeki baz? genler de?i?ebilir. De?i?en genler yavrulara aktar?l?r ve ona yeni ?zellikler kazand?r?r. E?er bunlar yeniyse ?zellikler faydal?d?r b?y?k olas?l?kla bu bi?imde korunacaklar - bu durumda t?r?n uygunlu?unda ani bir art?? olacak.

2. Genetik algoritma nedir

Baz? karma??k fonksiyonlara izin verin ( ama? fonksiyonu), birka? de?i?kene ba?l? olup, fonksiyonun de?erinin maksimum oldu?u de?i?kenlerin bu t?r de?erlerinin bulunmas? gerekir. Bu t?r sorunlara denir optimizasyon problemleri ve pratikte ?ok s?k meydana gelir.

En iyilerinden biri a??klay?c? ?rnekler- daha ?nce a??klanan yat?r?m da??t?m? sorunu. Bu problemde de?i?kenler her bir projedeki yat?r?m hacmidir (10 de?i?ken), maksimize edilmesi gereken fonksiyon ise yat?r?mc?n?n toplam geliridir. De?i?kenlerin her biri i?in de?i?im alan?n? belirleyen projelerin her birinde minimum ve maksimum yat?r?m hacminin de?erleri de verilmektedir.

Bu sorunu bilinenleri kullanarak ??zmeye ?al??al?m. do?al yollar optimizasyon. Her yat?r?m se?ene?ini (de?i?ken de?erler k?mesi) bir birey olarak ele alaca??z ve bu se?ene?in karl?l???n? da bu bireyin uygunlu?u olarak ele alaca??z. Daha sonra, evrim s?recinde (e?er organize etmeyi ba?ar?rsak), bireylerin uygunlu?u artacak, bu da giderek daha karl? yat?r?m se?eneklerinin ortaya ??kaca?? anlam?na geliyor. Evrimi bir noktada durdurup en iyi bireyi se?erek, yeterince ?ey elde ederiz. iyi karar g?revler.

Genetik algoritma basit model do?adaki evrim, bir bilgisayar program? ?eklinde uygulanm??t?r. Hem genetik kal?t?m mekanizmas?n?n bir analogunu hem de do?al se?ilimin bir analogunu kullan?r. Ayn? zamanda biyolojik terminoloji basitle?tirilmi? bir bi?imde korunur.

Genetik miras bu ?ekilde modellenir

Evrimsel s?reci sim?le etmek i?in ?nce rastgele bir pop?lasyon olu?tururuz; rastgele bir kromozom setine (say?sal vekt?rler) sahip birka? birey. Genetik algoritma, bu pop?lasyonun evrimini, bireyleri ?aprazlayan ve nesilleri de?i?tiren d?ng?sel bir s?re? olarak sim?le eder.

Bir pop?lasyonun ya?am d?ng?s?, ?e?itli rastgele ge?i?lerden (?aprazlama yoluyla) ve mutasyonlardan olu?ur ve bunun sonucunda pop?lasyona belirli say?da yeni birey eklenir. Genetik algoritmada se?im, eski pop?lasyondan yeni bir pop?lasyon olu?turulmas? ve ard?ndan eski pop?lasyonun ?lmesi s?recidir. Se?imden sonra yeni pop?lasyona ?aprazlama ve mutasyon i?lemleri tekrar uygulan?r, ard?ndan se?im tekrar ger?ekle?ir ve bu ?ekilde devam eder.

Genetik algoritmada se?ilim, do?adaki do?al se?ilimin ilkeleriyle ?u ?ekilde yak?ndan ili?kilidir:

B?ylece seleksiyon modeli gelecek neslin pop?lasyonunun nas?l olu?turulmas? gerekti?ini belirler. Kural olarak, bir bireyin ?aprazlamaya kat?lma olas?l??? onun uygunlu?uyla orant?l? olarak al?n?r. En iyi bireylerden birka??n?n ?aprazlama ve se?ilime kat?lmadan bir sonraki nesle de?i?meden aktar?ld??? s?zde elitizm stratejisi s?kl?kla kullan?l?r. Her durumda, her yeni nesil ortalama olarak bir ?ncekinden daha iyi olacakt?r. Bireylerin uygunlu?u g?zle g?r?l?r ?ekilde artmay? b?rakt???nda s?re? durdurulur ve optimizasyon problemine ??z?m olarak bulunan bireylerden en iyisi al?n?r.

Optimum yat?r?m da??t?m? sorununa d?nersek, bu durumda genetik algoritman?n uygulanmas?n?n ?zelliklerini a??klayal?m.

  • Bireysel = problemin ??z?m? = 10 kromozomdan olu?an set X j
  • Kromozom X j = projeye yap?lan yat?r?m?n hacmi j = bu say?n?n 16 bitlik g?sterimi
  • Yat?r?m hacimleri s?n?rl? oldu?undan t?m kromozom de?erleri ge?erli de?ildir. Pop?lasyonlar olu?turulurken bu dikkate al?n?r.
  • Toplam yat?r?m tutar? sabit oldu?undan asl?nda sadece 9 kromozom de?i?iklik g?sterir ve 10'uncunun de?eri bunlardan benzersiz olarak belirlenir.

Toplam yat?r?m hacmi K'n?n ?? farkl? de?eri i?in genetik algoritman?n sonu?lar? a?a??da verilmi?tir.

K?r grafiklerindeki renkli kareler, belirli bir projeye ne kadar yat?r?m?n genetik algoritma taraf?ndan ?nerildi?ini g?sterir.     K???k bir K de?eriyle yaln?zca minimum yat?r?mla k?rl? olan projelere yat?r?m yap?ld??? g?r?lebilir.


Toplam yat?r?m hacmini art?r?rsan?z daha pahal? projelere yat?r?m yapmak karl? hale gelir.

K'n?n daha da artmas?yla, k?rl? projelere maksimum yat?r?m e?i?ine ula??l?r ve d???k k?rl? projelere yat?r?m yapmak yeniden mant?kl? hale gelir.

3. Genetik algoritmalar?n ?zellikleri

Genetik algoritma en yenisidir ancak optimizasyon problemlerini ??zmenin m?mk?n olan tek yolu de?ildir. Uzun zamand?r bu t?r sorunlar? ??zmenin iki ana yolu biliniyordu: kapsaml? arama ve yerel gradyan. Bu y?ntemlerin kendi avantajlar? ve dezavantajlar? vard?r ve her ?zel durumda hangisini se?ece?inizi d???nmelisiniz.

Standartlar?n avantajlar?n? ve dezavantajlar?n? ele alal?m ve genetik y?ntemler Klasik gezici sat?c? problemi (TSP) ?rne?ini kullanarak. Sorunun ?z?, ?e?itli ?ehirlerin koordinatlar? ile verilen en k?sa kapal? yolu bulmakt?r. Halihaz?rda 30 ?ehir i?in en uygun yolun arand??? ortaya ??kt? zor g?rev Bu da ?e?itli yeni y?ntemlerin (sinir a?lar? ve genetik algoritmalar dahil) geli?tirilmesine yol a?t?.

Her ??z?m se?ene?i (30 ?ehir i?in) bir say? do?rusudur; j'inci s?rada, bypass s?ras?na g?re j'inci ?ehrin numaras? yer al?r. Dolay?s?yla bu problemde 30 parametre vard?r ve de?erlerin t?m kombinasyonlar? ge?erli de?ildir. Do?al olarak ilk fikir, t?m ge?ici ??z?m se?eneklerinin tam olarak aranmas?d?r.

Kapsaml? y?ntem do?as? gere?i en basit olan?d?r ve programlama a??s?ndan ?nemsizdir. Arama i?in en uygun ??z?m(ama? fonksiyonunun maksimum noktalar?), ama? fonksiyonunun de?erlerini, maksimumlar?n? hat?rlayarak m?mk?n olan t?m noktalarda s?rayla hesaplamak gerekir. Bu y?ntemin dezavantaj? y?ksek hesaplama maliyetidir. ?zellikle gezgin sat?c? probleminde 10 30'dan fazla yol se?ene?inin uzunluklar?n?n hesaplanmas? gerekli olacakt?r ki bu tamamen ger?ek?i de?ildir. Ancak t?m se?enekleri makul bir s?rede aramak m?mk?nse, bulunan ??z?m?n ger?ekten optimal oldu?undan kesinlikle emin olabilirsiniz.

?kinci pop?ler y?ntem ise gradyan ini? y?ntemine dayanmaktad?r. Bu durumda ilk ?nce rastgele bir parametre de?erleri ve daha sonra bu de?erler kademeli olarak de?i?tirilerek ama? fonksiyonunun en y?ksek b?y?me oran?na ula??l?r. Yerel maksimuma ula??ld???nda b?yle bir algoritma durur, dolay?s?yla k?resel optimumu bulmak i?in ek ?abalar gerekecektir. Gradyan y?ntemleri ?ok h?zl? ?al???r ancak bulunan ??z?m?n optimalli?ini garanti etmez.

S?zde kullan?m i?in idealdirler. tek modlu ama? fonksiyonunun tek bir yerel maksimuma (k?resel olarak da bilinir) sahip oldu?u problemler. Gezgin sat?c? probleminin tek modlu olmad???n? g?rmek kolayd?r.

Tipik bir pratik problem genellikle ?ok modlu  ve ?ok boyutludur, yani bir?ok parametre i?erir. Bu t?r g?revler i?in hi?bir evrensel y?ntem Bu, ki?inin tamamen kesin bir ??z?m? h?zl? bir ?ekilde bulmas?na olanak tan?r.

Bununla birlikte, kapsaml? ve gradyan y?ntemleri birle?tirerek, hesaplama s?resi artt?k?a do?rulu?u artacak olan en az?ndan yakla??k bir ??z?m elde edilmesi umut edilebilir.

Genetik algoritma tam da b?yle birle?tirilmi? bir y?ntemdir. ?aprazlama ve mutasyon mekanizmalar? bir anlamda y?ntemin arama k?sm?n? ve se?me i?lemini ger?ekle?tirir. en iyi ??z?mler- dereceli al?alma. ?ekil, bu kombinasyonun her t?rl? problem i?in s?rekli olarak iyi bir genetik arama performans?na olanak sa?lad???n? g?stermektedir.

Dolay?s?yla, e?er belirli bir k?mede birden fazla de?i?kenden olu?an karma??k bir fonksiyon veriliyorsa, genetik algoritma, makul bir s?rede, fonksiyonun de?erinin m?mk?n olan maksimum de?ere yeterince yak?n oldu?u noktay? bulan bir programd?r. Kabul edilebilir bir hesaplama s?resi se?erek genellikle bu s?rede elde edilebilecek en iyi ??z?mlerden birini elde etmi? oluruz.

Ward Systems Group, gezgin sat?c? problemini genetik algoritma kullanarak ??zmenin net bir ?rne?ini haz?rlad?. Bu ama?la GeneHunter ?r?n fonksiyon k?t?phanesi kullan?ld?.

Genetik algoritman?n ay?rt edici bir ?zelli?i, rol? canl? do?adaki ?aprazlama rol?ne benzer olan aday ??z?mlerin rekombinasyon i?lemini ger?ekle?tiren "?aprazlama" operat?r?n?n kullan?m?na vurgu yap?lmas?d?r.

Ansiklopedik YouTube

    1 / 5

    ? Genetik algoritma

    ? 20: Genetik Algoritmalara Giri? (1/2)

    ? C# - Deniz sava??- En iyi AI algoritmas?

    ? 15.09.2018 Ders “Optimal yap?lar? aramak i?in genetik algoritmalar” Ulyantsev V.I.

    ? Genetik algoritma. Grafi?i cetvelin ?zerine yerle?tirme

    Altyaz?lar

Hikaye

Evrimi sim?le etmeye y?nelik ilk ?al??ma 1954 y?l?nda Nils Baricelli taraf?ndan Princeton ?niversitesi'ne kurulan bir bilgisayarda yap?ld?. Ayn? y?l yay?nlanan ?al??mas? kamuoyunun b?y?k ilgisini ?ekti. Avustralyal? genetik?i Alex Fraser, 1957'den bu yana, ?l??lebilir ?zellikler ?zerinde ?oklu kontrole sahip organizmalar aras?ndaki yapay se?ilimin sim?le edilmesi ?zerine bir dizi makale yay?nlad?. Bu geli?me, evrimsel s?re?lerin bilgisayar sim?lasyonlar?n?n ve Fraser ve Barnell (1970) ile Crosby'nin (1973) kitaplar?nda a??klanan y?ntemlerin 1960'lardan itibaren biyologlar aras?nda daha yayg?n bir faaliyet haline gelmesine olanak sa?lad?. Fraser'?n sim?lasyonlar? her ?eyi i?eriyordu temel elementler modern genetik algoritmalar. Buna ek olarak Hans-Joachim Bremermann, 1960'larda optimizasyon problemlerinde rekombinasyon, mutasyon ve se?ime tabi bir ??z?m pop?lasyonunun kullan?lmas? yakla??m?n? da benimseyen bir dizi makale yay?nlad?. Bremermann'?n ara?t?rmas? ayn? zamanda modern genetik algoritmalar?n unsurlar?n? da i?eriyordu. Di?er ?nc?ler aras?nda Richard Friedberg, George Friedman ve Michael Conrad yer al?yor. Bir demet erken ?al??malar David B. Vogel (1998) taraf?ndan yeniden yay?mland?.

Her ne kadar Baricelli 1963'teki ?al??mas?nda makinenin oyun oynama yetene?ini sim?le etmi? olsa da basit oyun Yapay evrim, Ingo Rechenberg ve Hans-Paul Schwefel'in 1960'larda ve yirminci y?zy?l?n 1970'lerin ba?lar?ndaki ?al??malar?n?n ard?ndan genel olarak kabul edilen bir optimizasyon y?ntemi haline geldi; Rechensberg'in grubu, karma??k m?hendislik problemlerini evrimsel stratejilere g?re ??zmeyi ba?ard?. Di?er bir yakla??m ise Lawrence J. Vogel'in evrimsel programlama tekni?iydi. yapay zeka. Evrimsel programlama ba?lang??ta ko?ullar? tahmin etmek i?in sonlu durum makinelerini kulland? ve tahmin mant???n? optimize etmek i?in ?e?itlilik ve se?ilimi kulland?. Genetik algoritmalar, John Holland'?n 70'li y?llar?n ba??ndaki ?al??malar? ve Adaptation in Natural Environments adl? kitab? sayesinde ?zellikle pop?ler hale geldi. yapay sistemler"(1975). Ara?t?rmas?, Hollanda taraf?ndan y?r?t?len h?cresel otomata deneylerine ve Michigan ?niversitesi'ndeki yaz?lar?na dayan?yordu. Holland, Devre Teoremi olarak bilinen yeni nesil kaliteyi tahmin etmek i?in resmile?tirilmi? bir yakla??m ba?latt?. Genetik algoritmalar alan?ndaki ara?t?rmalar, Birinci Uluslararas? Genetik Algoritmalar Konferans?'n?n nihayet Pittsburgh, Pensilvanya'da (ABD) yap?ld??? 1980'lerin ortalar?na kadar b?y?k ?l??de teorik kald?.

Ara?t?rma ilgisinin artmas?yla birlikte masa?st? bilgisayarlar?n bilgi i?lem g?c? de ?nemli ?l??de artt?, bu da yeni bilgi i?lem teknolojisinin pratikte kullan?lmas?n? m?mk?n k?ld?. 1980'lerin sonunda General Electric d?nyan?n ilk genetik algoritma ?r?n?n? satmaya ba?lad?. Bir dizi end?striyel bilgi i?lem arac? haline geldi. 1989 y?l?nda ba?ka bir ?irket olan Axcelis, Inc. masa?st? bilgisayarlar i?in d?nyan?n ilk ticari genetik algoritma ?r?n? Evolver'? piyasaya s?rd?. New York Times teknoloji muhabiri John Markoff, 1990 y?l?nda Evolver hakk?nda yazd?.

Algoritman?n a??klamas?

Sorun, ??z?m?, her genin bir bit, bir say? veya ba?ka bir nesne olabilece?i bir gen vekt?r? (“genotip”) olarak kodlanabilecek ?ekilde form?le edilmi?tir. Genetik algoritman?n (GA) klasik uygulamalar?, genotipin sabit bir uzunlu?a sahip oldu?unu varsayar. Ancak GA'n?n bu s?n?rlamadan muaf ?e?itleri de mevcuttur.

Genellikle rastgele bir ?ekilde, ba?lang?? pop?lasyonunun bir?ok genotipi yarat?l?r. Her bir genotipin, tan?mlad??? fenotipin eldeki sorunu ne kadar iyi ??zd???n? belirleyen belirli bir de?erle (“uygunluk”) ili?kilendirildi?i bir “uygunluk fonksiyonu” kullan?larak de?erlendirilirler.

Genetik algoritmalar?n uygulanmas?

Genetik algoritmalar a?a??daki problemleri ??zmek i?in kullan?l?r:

  1. Fonksiyon optimizasyonu
  2. Grafiklerde ?e?itli problemler (Gezgin sat?c? problemi, renklendirme, e?le?tirme bulma)
  3. Yapay sinir a??n?n kurulmas? ve e?itimi
  4. D?zen g?revleri
  5. Oyun Stratejileri
  6. Biyoinformatik (protein katlama)
  7. Sonlu durum makinelerinin sentezi
  8. PID denetleyicilerini ayarlama

C++'da basit bir uygulamaya ?rnek

Tek boyutlu uzayda ge?i? yapmadan arama yap?n.

#katmak #katmak #katmak #katmak #katmak int main () ( srand ((unsigned int ) time (NULL )); const size_t N = 1000 ; int a [ N ] = ( 0 ); for ( ; ; ) ( //her eleman?n rastgele bir y?nde mutasyonu: for (size_t i = 0 ; i< N ; ++ i ) a [ i ] += ((rand () % 2 == 1 ) ? 1 : - 1 ); //?imdi en iyilerini se?, artan d?zende s?rala std::sort(a, a + N); //ve en iyileri dizinin ikinci yar?s?nda olacak. //en iyi olanlar? yavru b?rakt?klar? ilk yar?ya kopyalay?n ve ilk olanlar ?ld?: std::copy(a + N / 2, a + N, a); //?imdi n?fusun ortalama durumuna bakal?m. G?rd???n?z gibi her ge?en g?n daha da iyiye gidiyor. std::cout<< std :: accumulate (a , a + N , 0 ) / N << std :: endl ; } }

Delphi'de basit bir uygulama ?rne?i

Tek boyutlu uzayda hayatta kalma olas?l???yla, ge?i? yapmadan arama yap?n. (Delphi XE'de test edilmi?tir)

program Program1 ; ($APPTYPE KONSOL) ($R *.res) System ??esini kullan?r. Jenerikler. Varsay?lanlar, Sistem. Jenerikler. Koleksiyonlar, Sistem. SistemUtils; sabit N = 1000; Nh = Nb?l2; Maksimum N?fus = Y?ksek(Tamsay?); var A : Tamsay? dizisi [1..N]; I, R, C, Puan, Do?um Oran?: Tamsay?; ?ptr: ^ Tamsay?; Rastgelele?tir'i ba?lat; // K?smi pop?lasyon for I := 1'den N'ye A yapmak [ I ] := Rastgele ( 2 ) ; tekrarla // Mutasyonu I := 1'den N'ye yap A [ I ] := A [ I ] + (- Rastgele (2 ) veya 1 ) ; // Se?im, sondaki en iyisi TArray. D?zenlemek< Integer >(A, TComparer< Integer >. Varsay?lan); // Preset IPtr := Addr (A [ Nh + 1 ]) ; Puanlar := 0; Do?um Oran? := 0 ;// ?aprazlama sonu?lar? I := 1'den Nh'ye Inc'yi ba?lat?r (Puan, Iptr ^) ;// Rastgele ge?i? ba?ar?s? R := Rastgele(2); Inc(Do?umOran?, R); A[I]:=Iptr^*R; ?ptr ^ := 0 ; Inc(Iptr, 1); son ;// Ara toplam Inc(C); kadar (Puan / N >= 1 ) veya (C >= Maksimum N?fus ) ; Writeln(Bi?im("N?fus %d (oran:%f) puan:%f"

, [ C , Do?um Oran? / Nh , Puan / N ])) ; son.

su?lular.

Bu b?l?mde ?e?itli optimizasyon problemlerini ??zmeyi ama?layan basit bir genetik algoritma (GA) kavram? a??klanmaktad?r. GA teorisinde ve uygulamalar?nda kullan?lan kavramlar tan?t?lmakta ve anlaml? bir ?ekilde anlat?lmaktad?r. GA'n?n temel teoremi sunulmu? ve GA'n?n teorik temelini olu?turan devrelerin teorisi sunulmu?tur. GA'n?n avantaj ve dezavantajlar?na ili?kin kavramsal konular tart???lm??t?r.

Genetik algoritma teorisinin temelleri J. G. Holland taraf?ndan ufuk a??c? ?al??mas?nda form?le edildi ve daha sonra bir dizi ba?ka ara?t?rmac? taraf?ndan geli?tirildi. Ana sonu?lar? ve alanlar? sistematik olarak sunan, D. Goldberg'in en ?nl? ve en s?k al?nt? yap?lan monografisi pratik uygulama GA.

GA'lar biyolojik genetik biliminden al?nan ilkeleri ve terminolojiyi kullan?r. GA'da her birey bir problemin potansiyel ??z?m?n? temsil eder. Klasik bir GA'da, bir birey, her bir bitine gen ad? verilen bir kromozom olan bir dizi ikili karakter taraf?ndan kodlan?r. Bir dizi birey (potansiyel ??z?mler) bir pop?lasyonu olu?turur. Bir soruna optimal veya optimal olmayan bir ??z?m aray???, pop?lasyon evrimi s?recinde ger?ekle?tirilir, yani. ?reme, ?aprazlama ve mutasyon genetik operat?rlerini kullanarak sonlu bir ??z?m k?mesinin di?erine s?ral? d?n???m?. EV'ler a?a??daki ilkelere dayal? olarak do?al evrim mekanizmalar?n? kullan?r:

  1. Darwin'e g?re ilk prensip, Darwin'in 1859 y?l?nda "Do?al Seleksiyon Yoluyla T?rlerin K?keni" kitab?nda form?le etti?i, en uygun olan?n hayatta kalmas? ve do?al seleksiyon kavram?na dayanmaktad?r. Darwin'e g?re ?evrelerindeki sorunlar? daha iyi ??zebilen bireylerin hayatta kalma ve daha s?k ?reme (?reme) olas?l?klar? daha y?ksektir. Genetik algoritmalarda her birey bir problemin ??z?m?n? temsil eder. Bu prensibe benzetilerek, bireyler en iyi de?erler Hedef (uygunluk) fonksiyonlar?n?n hayatta kalma ve ?o?alma ?ans? y?ksektir. Bu prensibin resmile?tirilmesi, daha sonra g?rece?imiz gibi, ?o?altma operat?r? taraf?ndan uygulan?r.
  2. ?kinci prensip, yavrunun kromozomunun ebeveynlerin kromozomlar?ndan t?retilen par?alardan olu?mas? ger?e?inden kaynaklanmaktad?r. Bu prensip 1865 y?l?nda G. Mendel taraf?ndan ke?fedilmi?tir. Resmile?tirilmesi ge?i? operat?r? i?in temel olu?turur.
  3. ???nc? prensip ise 1900 y?l?nda de Vres taraf?ndan ke?fedilen mutasyon kavram?na dayanmaktad?r. Ba?lang??ta bu terim, yavrular?n ?zelliklerindeki ?nemli (keskin) de?i?iklikleri ve ebeveynlerinde bulunmayan ?zelliklerin edinilmesini tan?mlamak i?in kullan?ld?. Bu prensibe benzer ?ekilde genetik algoritmalar, nesillerin ?zelliklerini ?nemli ?l??de de?i?tirmek ve b?ylece bir pop?lasyondaki (??z?mler k?mesi) bireylerin ?e?itlili?ini (de?i?kenli?ini) art?rmak i?in benzer bir mekanizma kullan?r.

Bu ?? prensip EV'nin temelini olu?turur. Bunlar? kullanarak n?fus (belirli bir soruna bir?ok ??z?m) nesilden nesile geli?ir.

Yapay bir pop?lasyonun evrimi (belirli bir soruna birden fazla ??z?m aray???) resmi olarak ?ekil 1.1'de sunulan bir algoritma bi?iminde tan?mlanabilir.

GA, optimizasyon probleminin bir dizi parametresini al?r ve bunlar? baz? sonlu alfabelerde (en basit durumda ikili alfabe "0" ve "1") sonlu uzunluklu diziler halinde kodlar.

Basit ?ncesi bir GA rastgele bir ba?lang?? kromozom (dizi) pop?lasyonu ?retir. Algoritma daha sonra a?a??daki ?? temel y?ntemi kullanarak yeni nesli (n?fus) olu?turur: genetik operat?rler:

  1. ?o?altma operat?r? (OR);
  2. ge?i? operat?r? (?aprazlama, OK);
  3. mutasyon operat?r? (OM).

Genetik algoritmalar sadece rastgele bir arama de?ildir, evrim s?recinde biriken bilgileri etkin bir ?ekilde kullan?rlar.

??z?m arama s?recinde, o anda elde edilen en iyi ??z?mlerden “faydalanmak” ile arama alan?n? geni?letmek aras?nda bir denge kurmak gerekir. ?e?itli metodlar arama motorlar? bu sorunu farkl? ?ekillerde ??zer.

?rne?in, gradyan y?ntemleri pratik olarak yaln?zca en iyi g?ncel ??z?mlerin kullan?m?na dayanmaktad?r; bu, bir yandan yak?nsama h?z?n? art?r?rken, di?er yandan yerel ekstremum problemine yol a?maktad?r. Kutupsal yakla??mda, rastgele arama y?ntemleri herkes taraf?ndan kullan?lmaktad?r.

???NDE Son zamanlarda Sinir a?lar? ve genetik algoritmalar gibi yeni ??km?? algoritmalar hakk?nda giderek daha fazla konu?uluyor. Bug?n genetik algoritmalardan bahsedece?im ama bu kez anla??lmas? g?? tan?mlardan ve karma??k terimlerden ka??nmaya ?al??al?m.
B?y?k bilim adamlar?ndan birinin dedi?i gibi: "E?er teorinizi e?inize a??klayam?yorsan?z, teorinizin hi?bir de?eri yoktur!" ?yleyse her ?eyi s?rayla ??zmeye ?al??al?m.

Bir tutam tarih

Wikipedia'n?n dedi?i gibi: "Genetik algoritmalar?n kurucu babas?, 1975 y?l?nda geneti?i kendi ama?lar? i?in kullanma fikrini ortaya atan John Holland'd?." Referans olarak Altair 8800 ayn? y?l ortaya ??kt? ve hay?r, bu bir ter?rist de?il, ilk Ki?isel bilgisayar. O zamana kadar John zaten 46 ya??ndayd?.

Nerede kullan?l?r?

Algoritma kendi kendine ??renebildi?i i?in uygulama aral??? son derece geni?tir:
  • Grafik sorunlar?
  • D?zen g?revleri
  • Planlama
  • "Yapay Zeka"n?n yarat?lmas?

?al??ma prensibi

Genetik algoritma ?ncelikle evrimsel bir algoritmad?r, yani algoritman?n temel ?zelli?i ?aprazlamad?r (birle?tirmedir). Tahmin edebilece?iniz gibi, algoritma fikri y?zs?zce do?adan al?nm??t?r, neyse ki do?a bunun i?in dava a?mayacak. B?ylece numaraland?rma ve en ?nemlisi se?im yoluyla do?ru “kombinasyon” elde edilir.
Algoritma ?? a?amaya ayr?lm??t?r:
  • Melezleme
  • Yeti?tirme (se?im)
  • Yeni neslin olu?umu
Sonu? bize uymuyorsa, sonu? bizi tatmin etmeye ba?layana veya a?a??daki ko?ullardan biri olu?ana kadar bu ad?mlar tekrarlan?r:
  • Nesillerin (d?ng?lerin) say?s? ?nceden se?ilmi? bir maksimuma ula?acak
  • Mutasyon s?resi doldu
Ad?mlar hakk?nda daha fazla ayr?nt?
Yeni bir pop?lasyonun yarat?lmas?. Bu ad?mda, b?y?k ihtimalle ko?er olmayacak bir ba?lang?? pop?lasyonu olu?turulur, ancak algoritman?n bu sorunu d?zeltme ihtimali y?ksektir. ?nemli olan, bunlar?n "formata" kar??l?k gelmesi ve "?o?altmaya uyarlanm??" olmas?d?r.
?reme. Burada her ?ey insanlarda oldu?u gibi, bir torun sahibi olmak i?in iki ebeveyne ihtiya? var. ?nemli olan, soyundan gelenlerin (?ocu?un) ?zelliklerini ebeveynlerinden miras alabilmesidir. Bu durumda, yaln?zca hayatta kalanlar de?il, herkes ?rer (bu ifade ?zellikle sa?mad?r, ancak her ?ey k?resel bir bo?lukta oldu?undan, her ?ey m?mk?nd?r), aksi takdirde genleri di?erleriyle ?rt??en bir alfa erke?i ?ne ??kacak ve bu bizim a??m?zdan kesinlikle kabul edilemez.
Mutasyonlar. Mutasyonlar ?remeye benzer; mutantlardan belirli say?da birey se?ilir ve ?nceden belirlenmi? i?lemlere g?re de?i?tirilir.
Se?im. ??in en tatl? k?sm? da burada ba?l?yor, “daha ileri gidecek” ki?ilerin pay?n? n?fustan se?meye ba?l?yoruz. Ayn? zamanda se?imimiz sonras?nda “hayatta kalanlar?n” pay?n? da ?nceden el ile parametre olarak belirterek belirliyoruz. Ne yaz?k ki geri kalan bireylerin ?lmesi gerekiyor.

Pratik

Mucize algoritma hakk?ndaki “peri masal?n?” ba?ar?yla dinlediniz ve muhtemelen onu kullanmaya ba?lamam?z? bekliyordunuz. Sizi mutlu etmek istiyorum, zaman? geldi.
En sevdi?im Diophantine denklemleri ?rne?ine bakal?m (Tamsay? k?kl? denklemler).
Denklemimiz: a+2b+3c+4d=30
Muhtemelen zaten bu denklemin k?klerinin segment ?zerinde oldu?undan ??pheleniyorsunuz, bu y?zden 5'i al?yoruz.
rastgele a,b,c,d de?erleri. (G?revi basitle?tirmek i?in ?zellikle 30 s?n?r? al?nm??t?r)
Ve b?ylece ilk nesile sahibiz:
  1. (1,28,15,3)
  2. (14,9,2,4)
  3. (13,5,7,3)
  4. (23,8,16,19)
  5. (9,13,5,2)
Hayatta kalma oranlar?n? hesaplamak i?in her ??z?m? ifadede yerine koyar?z. Elde edilen de?erden 30'a olan mesafe istenilen de?er.
  1. |114-30|=84
  2. |54-30|=24
  3. |56-30|=26
  4. |163-30|=133
  5. |58-30|=28
Daha d???k de?erler 30'a yak?nd?r, bu da onlar?n daha ?ok tercih edildi?i anlam?na gelir. ?ekline d?n??t? b?y?k de?erler hayatta kalma oran? daha d???k olacakt?r. Sistemi olu?turmak i?in her birinin (kromozom) se?ilme olas?l???n? hesaplayal?m. Ancak ??z?m, katsay?lar?n kar??l?kl? de?erlerinin toplam?n? almak ve bundan y?zdeleri hesaplamakt?r. ( Not: 0.135266 - ters oranlar?n toplam?)
  1. (1/84)/0.135266 = 8.80%
  2. (1/24)/0.135266 = 30.8%
  3. (1/26)/0.135266 = 28.4%
  4. (1/133)/0.135266 = 5.56%
  5. (1/28)/0.135266 = 26.4%
Daha sonra, her birinin tam olarak bir ?ocu?u olacak be? ?ift ebeveyni se?ece?iz. Tam be? kez ?ans verece?iz, her seferinde ebeveyn olma ?ans? ayn? olacak ve hayatta kalma ?ans?na e?it olacak.
3-1, 5-2, 3-5, 2-5, 5-3
Daha ?nce de belirtildi?i gibi yavrular, anne ve baban?n genleri hakk?nda bilgi i?erir. Bu sa?lanabilir Farkl? yollar ancak bu durumda "?aprazlama" kullan?lacakt?r. (| = b?lme ?izgisi)
  • H.-baba: a1 | b1,c1,d1 H.-anne: a2 | b2,c2,d2 X. soyundan gelen: a1,b2,c2,d2 veya a2,b1,c1,d1
  • H.-baba: a1,b1 | c1,d1 H.-anne: a2,b2 | c2,d2 X. soyundan gelen: a1,b1,c2,d2 veya a2,b2,c1,d1
  • H.-baba: a1,b1,c1 | d1 H.-anne: a2,b2,c2 | d2 X. soyundan gelen: a1,b1,c1,d2 veya a2,b2,c2,d1
Bir alt nesile bilgi aktarman?n bir?ok yolu vard?r ve ?apraz ge?i? pek ?ok yoldan yaln?zca biridir. Ay?r?c?n?n konumu ve baban?n m? yoksa annenin mi ?izginin solunda olaca?? tamamen keyfi olabilir.
?imdi ayn?s?n? torunlarla yapal?m:
  • H.-baba: (13 | 5,7,3) H.-anne:(1 | 28,15,3) X. soyundan gelen: (13,28,15,3)
  • H.-baba: (9,13 | 5,2) H.-anne: (14,9 | 2,4) X. soyundan gelen: (9,13,2,4)
  • H.-baba: (13,5,7 | 3) H.-anne: (9,13,5 | 2) X. soyundan gelen: (13,5,7,2)
  • H.-baba: (14 | 9,2,4) H.-anne: (9 | 13,5,2) X. soyundan gelen: (14,13,5,2)
  • H.-baba: (13,5 | 7, 3) H.-anne: (9,13 | 5, 2) X. soyundan gelen: (13,5,5,2)
?imdi torunlar?n hayatta kalma oranlar?n? hesaplayal?m.
  • (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

    ?z?c? ??nk? yavrular?n ortalama uygunlu?unun 38,8 oldu?u ve ebeveynler i?in bu katsay?n?n 59,4 oldu?u ortaya ??kt?. ?u anda bir mutasyonun kullan?lmas? daha tavsiye edilir; bunun i?in bir veya daha fazla de?eri 1'den 30'a kadar rastgele bir say?yla de?i?tiririz.
    Algoritma hayatta kalma oran? s?f?r olana kadar ?al??acakt?r. Onlar. denklemin ??z?m? olacakt?r.
    N?fusu daha b?y?k olan sistemler (?rne?in 5 yerine 50) istenen seviyeye (0) daha h?zl? ve istikrarl? bir ?ekilde yak?nsar.

    Kod

    Buras? sadeli?in bitti?i ve harika C++'?n ba?lad??? yer...
    Bir C++ s?n?f?, ba?latma s?ras?nda 5 de?er gerektirir: 4 katsay? ve bir sonu?. Yukar?daki ?rnek i?in ??yle g?r?necektir: CDiyofantin dp(1,2,3,4,30);

    Daha sonra denklemi ??zmek i?in ??z?m? i?eren aleli d?nd?recek Solve() i?levini ?a??r?n. Geni almak i?in GetGene() ??esini ?a??r?n. do?ru de?erler a, b, c, d. Bu s?n?f? kullanan standart bir main.cpp prosed?r? ??yle g?r?nebilir:

    #katmak " " #include "diophantine.h" void main() ( CDiophantine dp(1,2,3,4,30); int ans; ans = dp.Solve(); if (ans == -1) ( cout<< "No solution found." << endl; } else { gene gn = dp.GetGene(ans); cout << "The solution set to a+2b+3c+4d=30 is:\n"; cout << "a = " << gn.alleles << "." << endl; cout << "b = " << gn.alleles << "." << endl; cout << "c = " << gn.alleles << "." << endl; cout << "d = " << gn.alleles << "." << endl; } }

    CDiophantine s?n?f?n?n kendisi:

    #katmak #katmak #define MAXPOP 25 struct gen ( int alleles; int uygunluk; float olas?l?k; // E?itlik testi. operat?r==(gen gn) ( for (int i=0;i<4;i++) { if (gn.alleles[i] != alleles[i]) return false; } return true; } }; class CDiophantine { public: CDiophantine(int, int, int, int, int);// Constructor with coefficients for a,b,c,d. int Solve();// Solve the equation. // Returns a given gene. gene GetGene(int i) { return population[i];} protected: int ca,cb,cc,cd;// The coefficients. int result; gene population;// Population. int Fitness(gene &);// Fitness function. void GenerateLikelihoods(); // Generate likelihoods. float MultInv();// Creates the multiplicative inverse. int CreateFitnesses(); void CreateNewPopulation(); int GetIndex(float val); gene Breed(int p1, int p2); }; CDiophantine::CDiophantine(int a, int b, int c, int d, int res) : ca(a), cb(b), cc(c), cd(d), result(res) {} int CDiophantine::Solve() { int fitness = -1; // Generate initial population. srand((unsigned)time(NULL)); for(int i=0;i25) mola; ) temppop[i] = Breed(ebeveyn1, ebeveyn2);// Bir ?ocuk olu?turun. ) for(i=0;i

    Makale Wikipedia ve web sitesindeki materyallere dayanmaktad?r.