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
Açıklama için çok teşekkür ederim, kopyaların kaldırılmasıyla ilgili soru tamamen tatmin edici bir şekilde yanıtlandı. Döngülerdeki geçiş sayısındaki azalmayı gösteren orijinal ve optimize edilmiş işlevi gösteren kod kodunu ekliyorum. Mevcut yorumumda, işlevdeki bir hataya işaret etmiyorum, ancak optimizasyonunu öneriyorum ve asıl amacım, kapsamlı bir yanıt aldığım yinelenen kaldırma ilkesini bulmaktı. Bir kez daha, kütüphane ve fonksiyonun açıklanması için çok teşekkür ederim.
20 kromozom için 110 ve 160 çok fazla.... Sayacı yanlış yere koymuşsunuz.
Doğru yer burası:
TAMAM. Şimdi aynı popülasyonu, aynı kromozomlarla, ancak bu sırayla deneyin:
Ne gözlemliyoruz?
Shurick'e:
Gerçekten de öyle. Tüm farklı kromozomlarla yapılan teklik kontrollerinin sayısı aşağıdaki formülle hesaplanabilir
(PopulChromosCount^2-PopulChromosCount)/2Kromozom sayısı 20 olan örneğimizde (tüm kromozomların farklı olduğunu varsayarsak), kontrol sayısı şöyle olacaktır:
(20*20-20)/2=190bu kontrol ile doğrulanmıştır:
Mükerrerler yakalanırsa, daha da az kontrol yapılacaktır.
Projeye aktif katılımınız için teşekkür ederiz!
Kütüphanede uygun değişiklikler yapılacaktır. Değişiklikler algoritmanın arama yeteneklerini etkilemeyecek olsa da, çalışmasını daha rasyonel hale getirecek.
Neye bakıyoruz?
Değişiklikler algoritmanın arama yeteneklerini hiçbir şekilde etkilemeyecek olsa da
Kesinlikle doğru, algoritmanın kalitesi değişmeyecek, başlangıçta bundan şüphe etsem de, şimdi bunu bana kanıtladınız, ancak bu şüpheler üzerine bir optimizasyon yöntemi buldunuz :)
Makaleyi inceledim ve kodda böyle bir tutarsızlık buldum, aralık değerlerini elde etmek için iki işlevde aynı formül kullanılıyor:
Yani, iki genin değerleri dışındaki veriler elde edilir, bu da "yapay mutasyon" un karakteristiğidir. Bu bir hata mı yoksa başka bir açıklaması var mı?
Bana öyle geliyor ki, çoğaltma yöntemi için işaretleri değiştirmek gerekiyor:
Minimum = C1+((C2-C1)*ReplicationOffset);
Maksimum = C2-((C2-C1)*ReplicationOffset);
Makaleyi inceledim ve kodda bu tutarsızlığı buldum, iki işlev aralık değerlerini almak için aynı formülü kullanıyor:
Yani, "yapay mutasyonun" özelliği olan iki genin değerleri dışında veriler elde edilir. Bu bir hata mı yoksa başka bir açıklaması var mı?
Bana öyle geliyor ki, çoğaltma yöntemi için işaretleri değiştirmek gerekiyor:
Minimum = C1+((C2-C1)*ReplicationOffset);
Maksimum = C2-((C2-C1)*ReplicationOffset);
Herhangi bir hata ya da tutarsızlık yoktur. Hem replikasyonda hem de yapay mutasyonda yeni bir genin ortaya çıkma olasılığının sınırları (bahsettiğiniz kod bölümleri) aynı şekilde tanımlanır.
Ancak replikasyon için olasılık alanı bu sınırların içinde, yapay mutasyon için ise bu sınırların ötesindedir.
Çoğalma, her iki ebeveynin genlerinin karakteristik özelliklerini aktarmaya hizmet eder (sınırlar dahilinde).
Yapay mutasyon ise ebeveynlerinkinden farklı yeni genler üretmeye yarar (sınırların dışında).
Hiçbir hata ya da tutarsızlık yoktur. Hem replikasyonda hem de yapay mutasyonda, yeni bir genin ortaya çıkma olasılığının sınırları (bahsettiğiniz kod bölümleri) aynı şekilde tanımlanır.
Ancak replikasyon için olasılık alanı bu sınırların içinde, yapay mutasyon için ise bu sınırların ötesindedir.
Çoğalma, her iki ebeveynin genlerinin karakteristik özelliklerini aktarmaya hizmet eder (sınırlar dahilinde).
Yapay mutasyon ise ebeveynlerinkinden farklı yeni genler üretmeye yarar (sınırların dışında).
Bu arada, ZZ ile ilgili en ünlü tüccar efsanelerinden birinin (makaledeki ikinci görev) yok edicisi olmak çok güzel. :)
Görünüşe göre, görevin ifadesini anlamamışım. Benim ifadem:
Minimum işlemin N pip olması koşuluyla maksimum kar için giriş noktaları, minimum diz N + Spread pip koşulu ile ZigZag'ın tepelerinde bulunur.
MQL4 forumunda "Test Multivariable Multiextremal Function" başlığında bazı ilginç test fonksiyonları yayınladım, bunlardan biri makalede sunulmuştur.
İsterseniz, GA dışındaki diğer optimizasyon algoritmalarını kullanarak önerilen fonksiyonların ekstremumlarını bulmayı deneyebilir ve sonuçları burada yayınlayabilirsiniz. Bunu yapmaktan memnuniyet duyarsınız. Bu herkes için ve en başta benim için ilginç olacaktır.
Uyumun geçerliliğini değerlendirmenin çok önemli olduğunun farkındayım. Yöntemlerden biri orijinal verilere gürültü eklemektir.
Alternatif optimizasyon yöntemleri için kaynak kodları burada(http://alglib.sources.ru/optimization/) ve burada(http://ool.sourceforge.net/) bulabilirsiniz.
Açıkçası, her optimizasyon algoritması kendi hedef fonksiyon sınıflarında daha iyi performans gösterir.
Pratikte hangi hedef fonksiyonları kullanıyorsunuz?