Optimizasyon Algoritmaları Şampiyonası. - sayfa 4

 
Dmitry Fedoseev :
Bakın, yukarıda evrensel yöntemi ortaya koydum. Ve bir aracı aracılığıyla tek seferlik bir arama yapılırsa, arama fonksiyonunun çok ciddi bir şekilde uyarlanması gerekecek, bu kesinlikle hiç kimse yapmayacaktır.
Abartmayın. Bir çözüm var. Algoritmanızın kitaplığından dahili FF çağrısından nasıl kurtulabileceğinizi düşünün.
 
Andrey Dik :
Abartmayın. Bir çözüm var. Algoritmanızın kitaplığından dahili FF çağrısından nasıl kurtulabileceğinizi düşünün.
Bunun hakkında düşünmemelisiniz bile, bunun için çaba harcamanıza gerek yok.
 
Dmitry Fedoseev :

...

Başka seçenek yok. Mümkünse, bir işleve bir işaretçi iletmedikçe (ancak şimdiye kadar kimse yardımda nereye bakılacağını önermedi). Katılımcı, ff fonksiyonunu çağırmak için tam bir fırsata sahip olmalıdır.

Burada bir örnekle bahsedildi: MetaTrader 5 platformunun yeni versiyonu 1325 inşa: Riskten korunma ile alım satım ve gerçek keneler üzerinde test >>>

Misal:

MQL5: Olay modellerinin organizasyonunu kolaylaştırmak için işlevlere yönelik işaretçiler desteği eklendi.

Bir işlev işaretçisi bildirmek için, "işlev için işaretçi" türünü tanımlayın, örneğin:

 typedef int (*TFunc)( int , int );

Şimdi TFunc bir türdür ve bir işlev işaretçisi değişkeni bildirebilirsiniz:

TFunc func_ptr;

Fonksiyonun adresini daha sonra çağırmak için func_ptr değişkeninde saklayabilirsiniz:

 int sub( int x, int y) { return (x-y); }
int add( int x, int y) { return (x+y); }
int neg( int x)       { return (~x);  }

func_ptr=sub;
Print (func_ptr( 10 , 5 ));

func_ptr=add;
Print (func_ptr( 10 , 5 ));

func_ptr=neg;           // ошибка: neg не имеет тип  int (int,int)
Print (func_ptr( 10 ));     // ошибка: должно быть два параметра

Fonksiyon işaretçileri parametre olarak saklanabilir ve iletilebilir. Statik olmayan bir sınıf yöntemine işaretçi alamazsınız.

 

İşte benim sınıf yöntemimin bir örneği:

       void Evolution(){ 
         

         for ( int c= 0 ;c<GenerationsCount;c++){
         
            f0(); // расчет значений фф для каждого индивида
            f1();         
            f2();
            f3();
            f4();
            
         }
         
         f5();
         f6();

      }

Peki, nasıl burada olunur? Ve en önemlisi, gerçekte asla gereksiz değilse neden düşünelim. Optimizasyon algoritmaları şampiyonası, jo ile çalışmak için bir fonksiyon uyarlama şampiyonluğuna dönüşür.

İşlev, kaç kez çağrıldığını sayabilir. Katılımcı bir ithalat yaparsa, miktarı dosyaya yazıp başlamadan önce sıfırlayabilirsiniz.

Bir sınıf kullanmak en iyisidir, o zaman miktar basitçe kullanılabilir olacaktır. Burada dolandırıcılık söz konusu olamaz.

 
Dmitry Fedoseev :
Bunun hakkında düşünmemelisiniz bile, bunun için çaba harcamanıza gerek yok.

TAMAM. Sorun yok. Ardından, algoritmaların çalışması için şampiyonaya iki seçenek sağlamak gerekir:

1. Algoritmanın içinden FF'ye bir çağrı ile (sonunda algoritma, FF ile kapalı İncil'in içinde ne tür bir FF olduğunu bilmeyecek)

2. Algoritmadan FF çağırmadan, sonucun algoritmaya basit bir aktarımı ile.

Bu iki seçeneğin optimizasyon algoritmalarının kullanımındaki tüm olası varyasyonları kapsayabileceğine inanıyorum. Katılımcılarla yarı yolda buluşmamız gerekiyor, herkesin yüksek düzeyde programlama bilgisi yok (profesyonel değilim, örneğin evrensellik adına algoritmayı parçalara ayırmam birkaç ayımı aldı))))

 

Teşekkür ederim.

Bir sınıftan daha kolay değil. Hatta dersin daha kolay olduğunu söyleyebilirim.

 
Andrey Dik :

TAMAM. Sorun yok. Ardından, algoritmaların çalışması için şampiyonaya iki seçenek sağlamak gerekir:

1. Algoritmanın içinden FF'ye bir çağrı ile (sonunda algoritma, FF ile kapalı İncil'in içinde ne tür bir FF olduğunu bilmeyecek)

2. Algoritmadan FF çağırmadan, sonucun algoritmaya basit bir aktarımı ile.

Bu iki seçeneğin optimizasyon algoritmalarının kullanımındaki tüm olası varyasyonları kapsayabileceğine inanıyorum. Katılımcılarla yarı yolda buluşmamız gerekiyor, herkesin yüksek düzeyde programlama bilgisi yok (profesyonel değilim, örneğin evrensellik adına algoritmayı parçalara ayırmam birkaç ayımı aldı))))

Çok fazla zaman varsa, lütfen. Sadece. 2 istenmeyecektir.
 
Dmitry Fedoseev :
Çok fazla zaman varsa, lütfen. Sadece. 2 istenmeyecektir.
Bunu yargılayamayız. Senin 1. seçeneğin var ve benim 2. seçeneğim var. Diğer katılımcıların nasıl olacağını kim bilebilir. Ve saat kaç? - Yukarıdaki scriptin bir örneğini 5 dakika sonra yazdım, eninde sonunda yerleşmiş 2. seçeneğe geleceğiz sanırım.
 
Andrey Dik :
Pekala, bunu yargılayamayız. Senin 1. seçeneğin var ve benim 2. seçeneğim var. Diğer katılımcıların nasıl olacağını kim bilebilir. Ve saat kaç? - Yukarıdaki scriptin bir örneğini 5 dakika sonra yazdım, eninde sonunda yerleşmiş 2. seçeneğe geleceğiz sanırım.
Seçenek 2'nin nasıl olabileceğini tahmin etmek için hiçbir şey düşünemiyorum bile? Bu doğal değil.
 
Dmitry Fedoseev :
Seçenek 2'nin nasıl olabileceğini tahmin etmek için hiçbir şey düşünemiyorum bile? Bu doğal değil.

Basit bir örnek. Optimizasyon algoritması, grafikte bir yerde asılı kalıyor. Standart test cihazında Expert Advisor'ın optimizasyonu, kapsamlı arama ile başlatıldı. Böylece normal algoritma yerine optimizasyon algoritmanızı kullanabilirsiniz.

Başka bir örnek. EA, grafik ve işlemler üzerinde çalışır. Bir süre sonra alım satım sonuçlarını parametreleriyle birlikte algoritmaya atar (belki danışmanın içinde veya dışında. Kutsallık yoktur) ve yeni parametreleri geri alır ve sonra alım satıma devam eder (sizin durumunuzda, bir deneme yapmanız gerekir) tarih, ama benim durumumda "canlı" seçeneğini seçebilirsiniz).

Vb. Yani bu örneklerde algoritma görevden tamamen ayrılmıştır.

Örnekler bilinçli olarak ticaretle ilgili olarak verilmiştir. Fare tüccarları.