"Genetik Algoritmalar - Çok Kolay!" makalesi için tartışma - sayfa 11

 
ivandurak:
Hangi kriterler ve kaç yavru öldürülmelidir? Optimize edilmiş parametrelerin sayısına bağlı olarak kaç ebeveyn ve torun olmalıdır, enseste hangi dönemden itibaren izin verilebilir. Genel olarak, ebeveynlerin hangi prensipte öldürüleceği tam olarak açık değildir. Ne yazık ki emeğiniz benim amaçlarıma pek uygun değil, ama bu yüzden bir fırça ile çok teşekkür ederim.

Kimseyi öldürmek zorunda değilsiniz. Tek kromozomla bile çalışabilir (kendisiyle melezleme). Ve böylece ortalama 50 kromozom tüm amaçlar için yeterlidir.

Siz sadece algoritmayı anlamıyorsunuz.

Algoritma evrenseldir, her amaca uygundur, UGA denmesinin nedeni budur. Sadece başka yollarla daha hızlı çözülebilecek bazı görevler vardır.

 
ivandurak:

1. Bana bir ipucu verin lütfen....

2. Hangi kritere göre ve kaç torunu öldürmek için .

3. Optimize edilecek parametre sayısına bağlı olarak kaç ebeveyn ve torun olmalıdır.

4. Hangi dönemden itibaren enseste izin verilebilir .

5. Genel olarak ebeveynlerin hangi ilkeye göre öldürüleceği tam olarak açık değildir.

6. Ne yazık ki emeğiniz benim amaçlarım için pek uygun değil, ancak bir fırça ile çok teşekkürler.

1. Gönderinizin amacını tam olarak anlayamadım. Algoritmanızı uygulamak için tavsiyeye ihtiyacınız varsa, ayrıntılara, tabiri caizse genel bir konsepte ihtiyacınız vardır, böylece tartışacak bir şey olur.

Sorularınız makalede açıklanan algoritma ile ilgiliyse, 2, 3, 4, 5, 5'e bakın. 2, 3, 4, 5, 6.

2. Torunlar öldürülmez. Ebeveynlerin ve onların soyundan gelenlerin kopyaları öldürülür.

3. Nüfusun büyük bölümündeki 50 birey en yaygın kullanılan anlamdır.

4. "Kendisiyle" melezleşmeye izin verilmez. Ancak çok gerekliyse (popülasyon "ölüyorsa") - bu mümkündür. ) uygun bir "eş" bulmak için birkaç girişimde bulunulur.

5. Ebeveynler rastgele veya bazı koşullar altında "öldürülmez", ancak yavrularla değiştirilir (popülasyonun tam olarak yarısı yavrularla değiştirilir - tabii ki popülasyon doluysa).

6. Eğer sorun çok "spesifik" ise - belki de (eğer mümkünse) önce analitik bir çözüm bulmaya çalışın.

 

Hızlı cevabınız için teşekkür ederim. Çeşitli deneyler için genetiğe ihtiyacım var. Biblioteka'nız bana göründüğü gibi kullanımda çok uygun değil, bu yüzden kendim yazıyorum. Ne yazık ki ağda tüm algoritma esas olarak sadece GA belirleyicileri zayıf bir şekilde tanımlanmıştır, açıklamaya bir bağlantı verirseniz (Rusça) çok minnettar olacağım. Aşağıda, düzeltilmesi zor değilse, her şeyi nasıl gördüğümü açıklayacağım.

1 50'den az olmamak üzere rastgele ebeveyn bireyler oluşturun.

2 Onlardan melezleme ve mutasyonlar yoluyla yavru sayısı en az olmayan koloni oluşturmak ..... hiçbir yerde bir açıklama bulamadım.

3 Çiftler aranır, ebeveyn olan çıkarılır.

5 Gerekirse, torunların ve ebeveynlerin kolonilerini tamamlar. Ebeveynler doğal olarak rastgele torunlar yaratır.

4 Hepsini FF üzerinden çalıştırın. FF GA'nın dışına yerleştirilir.

5 Hepsini sıralayacağız. En iyi olana Rambo statüsü verilir. Sıralama ne kadar yüksekse baba olma olasılığı o kadar yüksektir.

6 Tüm birey kalabalığını güçlü ve zayıf olarak ayırın, güçlü olanlar bir sonraki adımda ebeveyn olacaktır.

7 Yavrular tarafından koloninin bir kısmını kesin (en uygun olmayan). Küçük bir olasılıkla ebeveyn kolonisinin bir bölümünü kesip atarız.Kazara ölüm gibi.Rambo çerçevelerin temizlenmesine tabi değildir

8 Bu dönemin sonudur.

9 Eğer .... (belirtiniz) sırasında bir ve aynı kişi Rambo bayrağını elinde tutuyorsa - hesaplamalar GA yakınsamasını sona erdirir, aksi takdirde madde 3'e gidiniz.

 
ivandurak:
....
Üzgünüm ama makaleyi tekrar okumanız gerektiği izlenimini edindim.
 
GA'mı çok çaba sarf ederek yazdım. Ancak yerel aşırı uçlarda takılıp kalıyor. Bundan nasıl kaçınılacağına dair genel bir öneriniz var mı?
 
ivandurak:
GA'mı çok çaba sarf ederek yazdım. Ancak yerel aşırı uçlarda takılıp kalıyor. Bundan nasıl kaçınabileceğim konusunda bana bazı genel tavsiyeler verebilir misiniz?

Bu bir bulaşma değil, özel, "genetik" bir sihir. :)

FF olarak hangi fonksiyonu kullanıyorsunuz?

Optimizasyon algoritmanızı bu amaç için özel olarak tasarlanmış fonksiyonlar üzerinde test etmenizi, kalibre etmenizi ve hata ayıklamanızı öneririm.

Тестовая многопеременная многоэкстремальная функция. - MQL4 форум
  • www.mql5.com
Тестовая многопеременная многоэкстремальная функция. - MQL4 форум
 
Lütfen müdahaleciliğimi bağışlayın ama bu bir prensip meselesi. Makalenizden bir örnek aldım ve kontrol etmek için bir komut dosyası yazdım. Cevap örnekle örtüşmüyor, ya kayaklar hareket etmiyor ya da sorun sandalye ile klavye arasındaki dolguda. Kedi yavrusu gibi dürtmek zor olmasa gerek, ikinci gün hatayı bulamıyorum. Saygılarımla
void OnStart()
  {
   double y,x1,x2 ;
   x1=-3.315699;
   x2=-3.072485;
   y=pow((cos(2-pow(x1,2))-1.1),2)+pow((sin(0.5-x1)-1.2),2)-pow((cos(2-pow(x2,2))-1.1),2)+pow((sin(0.5-x2)-1.2),2);
   Print("Çözüm 1 muhtemelen doğrudur = ",y) ;
//-------------------------------------------------------------------
   x1=2.252170;
   x2=-4.5171187;
   y=pow((cos(2-pow(x1,2))-1.1),2)+pow((sin(0.5-x1)-1.2),2)-pow((cos(2-pow(x2,2))-1.1),2)+pow((sin(0.5-x2)-1.2),2);
   Print("Çözüm 2 benim = ",y) ;
  }
 
ivandurak:
Lütfen müdahaleciliğimi bağışlayın ama bu bir prensip meselesi. Makalenizden bir örnek aldım ve kontrol etmek için bir komut dosyası yazdım. Cevap örnekle örtüşmüyor, ya kayaklar hareket etmiyor ya da sorun sandalye ile klavye arasındaki dolguda. Kedi yavrusu gibi dürtmek zor olmasa gerek, ikinci gün hatayı bulamıyorum. Saygılarımla
Kesinlikle, conta değiştirilmeli. Özür dilerim.
 
ivandurak:
Lütfen müdahaleciliğimi bağışlayın ama bu bir prensip meselesi. Makalenizden bir örnek aldım ve kontrol etmek için bir komut dosyası yazdım. Cevap örnekle örtüşmüyor, ya kayaklar hareket etmiyor ya da sorun sandalye ile klavye arasındaki dolguda. Kedi yavrusu gibi dürtmek zor olmasa gerek, ikinci gün hatayı bulamıyorum. Saygılarımla

Eğer FF'nin kendisine güvenmiyorsanız, yani ekstremumlarınızın böyle olduğundan emin değilseniz, fonksiyonu bir test cihazında çalıştırabilirsiniz, test cihazı GA bu anlamda oldukça iyidir ve oldukça doğru bir çözüm bulur, ancak sadece az sayıda parametre ile (1,2).

Genel olarak, GA'nın kesin bir çözüm değil, sağlam bir çözüm bulduğu anlaşılmalıdır. Yani, olası çözümler alanına kıyasla oldukça iyi olan bir çözüm.

 
ivandurak:
Lütfen müdahaleciliğimi bağışlayın ama bu bir prensip meselesi. Makalenizden bir örnek aldım ve kontrol etmek için bir komut dosyası yazdım. Cevap örnekle örtüşmüyor, ya kayaklar hareket etmiyor ya da sorun sandalye ile klavye arasındaki dolguda. Kedi yavrusu gibi dürtmek zor olmasa ikinci gün hatayı bulamıyorum. Saygılar.
void OnStart()
  {
   double y,x1,x2 ;
   x1=-3.315699;
   x2=-3.072485;
   //y=pow((cos(2.0-pow(x1,2.0))-1.1),2.0)+pow((sin(0.5-x1)-1.2),2.0)-
   //  pow((cos(2.0-pow(x2,2.0))-1.1),2.0)+pow((sin(0.5-x2)-1.2),2.0);
   y=  pow(cos((double)(2*x1*x1))-0.11 e1, 0.2 e1)+pow(sin(0.5 e0*(double)x1)-0.12 e1,0.2 e1) - 
       pow(cos((double)(2*x2*x2))-0.11 e1, 0.2 e1)+pow(sin(0.5 e0*(double)x2)-0.12 e1,0.2 e1);
   Print("Çözüm 1 doğru = ",y) ;
   //-------------------------------------------------------------------
   x1=2.252170;
   x2=-4.5171187;
   //y=pow((cos(2.0-pow(x1,2.0))-1.1),2.0)+pow((sin(0.5-x1)-1.2),2.0)-
   //  pow((cos(2.0-pow(x2,2.0))-1.1),2.0)+pow((sin(0.5-x2)-1.2),2.0);
   y=  pow(cos((double)(2*x1*x1))-0.11 e1, 0.2 e1)+pow(sin(0.5 e0*(double)x1)-0.12 e1,0.2 e1) - 
       pow(cos((double)(2*x2*x2))-0.11 e1, 0.2 e1)+pow(sin(0.5 e0*(double)x2)-0.12 e1,0.2 e1);
   Print("Karar 2. Yanlış = ",y) ;
  }
Bir nedenden dolayı bir eşleşme var. Muhtemelen makaledeki gibi fonksiyon kullandığım için.