"Genetik Algoritmalar - Çok Kolay!" makalesi için tartışma - sayfa 12
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
....
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 başarılı olan bir çözüm.
Test fonksiyonları "mağlup edilir". Yenilmeleri gerekir.
Ve böylece, her şeyi doğru söylüyorsunuz.
Test fonksiyonları "yenilmiştir". Yenilmeleri gerekir.
Ama doğru şeyler söylüyorsunuz.
Evet, evet, detaylandırmadım ve bu yüzden test fonksiyonlarıdır, algoritma onları almalıdır, aksi takdirde böyle bir algoritma başarılı sayılamaz.
Algoritma testi bile geçemezse bilinmeyen alanda ne bulacağını hayal etmek zor.
Hepinize teşekkür ederim, işe yarıyor.
Eksi ile çarpımı karıştıracak kadar aptal olmalıydım.
Hepinize teşekkür ederim, çalışıyor.
Yaklaşım hatasını en aza indirmek için uygunluk fonksiyonunun aynı değerine sahip farklı değişkenleri optimize etmemiz gerekiyorsa, UGA'yı nasıl doğru bir şekilde vidalayacağımızı merak ediyorum. Klasik problem. Örneğin, 4 nöronlu beş geçişli iki katmanlı bir sinir ağı, [-1...1] aralığında önyargı ile birlikte 22 katsayının 0.0001 doğrulukla aranmasını ve aynı anda aynı hedef fonksiyonda girdi göstergelerinin parametrelerinin seçimini gerektirir 5 adet * 2parametre = 5...50 aralığında 10 değişken. Ya da ayrı ayrı, ancak 0.01'lik bir adımla.
Elbette, göstergelerin değerlerini ağırlık aralığında kodlayabilirsiniz. Ama bu biraz farklıdır.
Ve bir soru daha. UGA'ya atlanan genlerin koşullarını iletmek mümkün mü? Yani, örneğin, göstergeden sorumlu genler G23< G24 G25<G26 ve benzeri koşullara karşılık gelmelidir.
Yaklaşım hatasını en aza indirmek için uygunluk fonksiyonunun aynı değerine sahip farklı değişkenleri optimize etmemiz gerekiyorsa, UGA'yı nasıl doğru bir şekilde vidalayacağımızı merak ediyorum. Klasik problem. Örneğin, 4 nöronlu beş geçişli iki katmanlı bir sinir ağı, [-1...1] aralığında önyargı ile birlikte 22 katsayının 0.0001 doğrulukla aranmasını ve aynı anda aynı hedef fonksiyonda girdi göstergelerinin parametrelerinin seçimini gerektirir 5 adet * 2parametre = 5...50 aralığında 10 değişken. Ya da ayrı ayrı, ancak 0.01'lik bir adımla.
Elbette, göstergelerin değerlerini ağırlık aralığında kodlayabilirsiniz. Ama bu biraz farklıdır.
Ve bir soru daha. UGA'ya atlanan genlerin koşullarını iletmek mümkün mü? Yani, örneğin, göstergeden sorumlu genler G23< G24 G25<G26 ve benzeri koşullara karşılık gelmelidir.
Bu kadar, bu kadar,
parametrelerin çoğunun çalıştığı bir aralık vardır, geri kalanı basitçe kaydırma ve ölçekleme ile ayarlanır.
Makaledeki kodun, tüketicinin her hapşırması için cilalanmış ticari bir gelişme olmadığını anlıyorsunuz.
Her parametre için ayarlanmış aralıklar yapma arzusu var, kimse elinizi tutmuyor, ancak binlerce parametre sayısıyla, aralıkları elle ayarlamanın çok sorunlu hale geleceğini unutmayın.
bir gen aralığına sahip olun [-1;1] --> (int)NormaliseDouble( ((gen+1)/2)*45+5 ,0) --> [5;50]
Aynı sonucu veren birçok farklı gen olacağına katılsam da, burada genleri birleştirmek için bir doğruluk ayarlayıcı yapabilirsiniz, örneğin 0'dan 1000'inci gene kadar 3 basamaklı doğruluk, 1000'den 1010'a kadar 0 basamaklı doğruluk.
Ve bir soru daha. Gen atlama koşullarını UGA'ya aktarmak mümkün mü? Yani, örneğin, göstergeden sorumlu genler G23<G24 G25<G26 ve benzeri koşulları karşılamalıdır.
Bunu şu şekilde yapabilirsiniz: Parametre1=G23 Parametre2=G23+G24.
Aralığı dönüştürürken, kırılmayı içerecek mantıksal bir kontrol ile bir dönüşüm yapmak daha iyidir.
Aksi takdirde, kırık aralığın bir kısmı ile diğeri arasında bağlantı olmayacaktır, burada genlerin farklı kromozomlardan sadece buna göre ödünç alındığını anlamak gerekir, ikinci gen sadece yeni kromozomun ikinci geninin üretimi için ödünç alınabilir.
Eğer bir parametre iki gen tarafından temsil ediliyorsa, aralarında hiçbir bağlantı olmayacaktır.
Kırılmayı içerecek mantıksal bir kontrol ile bir dönüşüm yapmak daha iyidir.
Aksi takdirde, kırık aralığın bir kısmı ile diğeri arasında bağlantı olmayacaktır, genlerin farklı kromozomlardan sadece buna göre ödünç alındığı anlaşılmalıdır, ikinci gen sadece yeni kromozomun ikinci geninin üretimi için ödünç alınabilir.
Eğer bir parametre iki gen tarafından temsil ediliyorsa, aralarında hiçbir bağlantı olmayacaktır.
Belki daha iyi olur.
Basit bir varyant önerdim. GA bunu sorunsuz bir şekilde halledebilir.
Genel olarak, genler her zaman ödünç alınmaz, yeni genler üretilebilir.