Strateji Test Cihazında Optimizasyon - sayfa 7

 

Kısacası:

  • Makul yeterlilik, arama alanı 2'yi 64. dereceye kadar karşılamaktır.
  • Makul davranış, tüm yinelenen değişkenleri maksimuma döndürmek yerine arama alanının bir ön tahminidir.

Rashid, kimsenin doğrudan bir numaralandırmaya karar vermesi pek olası değil. 2^64 genetik optimize edici kolayca kontrol edecektir, ancak bu, sınırsız arama alanları ayarlamanız gerektiği anlamına gelmez. Sonuçta, bu alanlar için genler üretmemiz ve sonra onları manipüle etmemiz gerekiyor.

 
Rosh :

Tamam, sayalım. Test cihazında bir geçişin 1 saniye sürmesine izin verin, ardından 2^64-1 geçiş sayısını 60'a bölün ve optimizasyon süresini dakika olarak alın: 18 446 744 073 709 551 615/60.

Ayrıca bu süreyi 8'e bölüyoruz (bilgisayarda 8 çekirdek) ve 8 çekirdekte bu geçiş sayısıyla optimizasyon süresini alıyoruz. Saatler veya günler içinde ne kadar sürer?

Saymaya gerek yok, doğrudan numaralandırmadan bahsetmiyorum. Bırakın ne kadar ihtiyacı olduğunu genetik algoritma belirlesin.

Bilim adamlarına göre insan beyniyle karşılaştırıldığında, beyin yaklaşık 10^10 nöron içerir ve her birinin yaklaşık 10^4 sinoptik bağlantısı vardır.

Hepimizin uğraştığı şey, giderek daha gelişmiş programlar yaratmak.

Bulut bilişim ne içindi? Bu sayede kullanıcılar, çok teşekkürler olan bir bilgisayarla sınırlı olamaz.

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
Renat :

Kısacası:

  • Makul yeterlilik, arama alanı 2'yi 64. dereceye kadar karşılamaktır.
  • Makul davranış, tüm yinelenen değişkenleri maksimuma döndürmek yerine arama alanının bir ön tahminidir.

Rashid, kimsenin doğrudan bir numaralandırmaya karar vermesi pek olası değil. 2^64 genetik optimize edici kolayca kontrol edecektir, ancak bu, sınırsız arama alanları ayarlamanız gerektiği anlamına gelmez. Sonuçta, bu alanlar için genler üretmemiz ve sonra onları manipüle etmemiz gerekiyor.

64'te 2 olan şey, yapmacık bir problemdir.

Genetik bir algoritmada en kötü sonuçları saklamak gerekmez mi?

Tüm değişkenleri maksimuma çıkarmanızı engelleyen nedir?

Genler ile 2 ^ 64 arasındaki bağlantının ne olduğunu anlayamıyorum?

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 

Yine de, birçok değişkeni (örneğin , Sinir ağı ) sıralamak faydalı olabilir ve bu sınırlama bir şekilde pek iyi değildir.

Bu yüzden kısıtlamalardan kurtulmayı umuyoruz))

 

Görünüşe göre, strateji test cihazı, kromozomların ikili kodlamasına sahip bir GA kullanıyor.

alıntı yapacağım:

" Bununla birlikte, kromozomların ikili gösterimi, yüksek boyutlu sürekli boşluklarda arama yaparken ve fenotipin yüksek doğruluğu gerektiğinde, kabul edilebilir değerlerin tüm aralığının tamamı gerçeğine dayanan özel bir teknik kullanılır. [ai,bi] nesnesinin özelliği, gerekli doğrulukla bölümlere ayrılır Belirtilen doğruluk p, ifadeyle belirlenir :


burada N, bit dizesini kodlayacak bit sayısıdır.

Bu formül, p'nin kuvvetle N'ye bağlı olduğunu gösterir, yani. temsil doğruluğu, bir kromozomu kodlamak için kullanılan bit sayısı ile belirlenir. Bu nedenle, N arttıkça arama uzayı genişler ve devasa hale gelir. İyi bilinen bir kitap örneği: [-500; 500], altıncı ondalık basamağa kadar ekstremumu bulmak gerekir. Bu durumda, ikili kodlamalı bir GA kullanırken, dizenin uzunluğu 3000 eleman olacak ve arama alanı yaklaşık 10 1000 kromozom olacaktır.

Bu nedenle, 64'e kadar optimize edilmiş parametre sınırına sahip normal bir optimize edicideki nispeten küçük bir sinir ağı bile eğitilemez. Bir rahatsızlık daha var - optimize edilmiş değişkenlerin parametrelerini manuel olarak doldurma işlemi, birçoğu varsa çok zahmetlidir. Bu nedenle, optimize edilmiş parametrelere sahip dizileri programlama yoluyla belirtme olasılığını zaten sunmayı önerdim.

Ama aynı zamanda iyi haberler de var. Test cihazında ve terminalde eksik olan her şey standart MQL5 dil araçları kullanılarak uygulanabilir. Biraz sonra, test cihazı tarafından ve programlı olarak birkaç test optimizasyon probleminin sonuçlarını yayınlayacağım.

 

Ancak, test görevinde test cihazından sonuçları beklemedim (beklemek tembellik anlamında).

Ancak herkes testleri kendisi yapabilir. Bunun için makaleden ilk örneği alabilirsiniz. Optimizasyon modunu ayarlamayı unutmayın - maksimumu arayın (bu, yalnızca maksimizasyon sağlayan standart optimize edici ile karşılaştırılabilir).

Buharlı şalgamdan bile daha basit olan ve hiçbir şey yapmayan, sadece özel bir test fonksiyonunu hesaplayan en basit Expert Advisor'ı yazalım:

 //+------------------------------------------------------------------+
//|                                                  Test expert.mq5 |
//|                                      Copyright 2010, JQS aka Joo |
//|                              https://www.mql5.com/ru/users/joo |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, JQS aka Joo"
#property link       "https://www.mql5.com/ru/users/joo"
#property version   "1.00"
//--- input parameters
input double    x1= 0.0 ;
input double    x2= 0.0 ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {

  }
//+------------------------------------------------------------------+

double OnTester()
  {
   return
   (
     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)
    );
  }
//+------------------------------------------------------------------+

Test penceresinde, ayarları aşağıdaki gibi yapın:


"Girişler" sekmesinde aşağıdakileri yapın:


Ve devam et.

Yaklaşık sonuçlar aşağıdaki gibidir:

1) Test cihazındaki optimize edici 10-100 kat daha yavaş çalışıyor (test cihazındaki optimizasyon iki işlemci çekirdeğinde ve yazılım bire birde gerçekleştirilmesine rağmen benim için çalıştı). Büyük olasılıkla, böyle korkunç bir fark, test cihazının doğrudan FF hesaplamalarına ek olarak, günlükler yazması, ekranda bilgi göstermesi vb. yazılım optimizasyonu.

2) Test cihazında 64'ten fazla optimize edilmiş parametre kullanmak imkansızdır (ve uzman oluşturma sihirbazında 60 parametrelik bir sınır vardır), bu nedenle, herhangi bir boyuttaki sinir ağlarını eğitmek imkansızdır.

Ya hamur ikamelerini kendi başınıza yazmak için kalır (MQL5 buna izin verir, mükemmel bir "olta" ve bir "balık" değil) veya test cihazının ikili genetik algoritmasının sürekli bir algoritma ile değiştirilmesini ve dolayısıyla kısıtlamaları bekleyin . optimize edilmiş parametre sayısı kaldırılacaktır. İkincisi yapıcı değil, bu yüzden ilki kalıyor. :)

Küresel Çıkarım: Öğrenme MQL5.


PS İyi bir çözüm, optimizasyon (günlükler, optimizasyon grafiği) hakkındaki bilgilerin çıktısını devre dışı bırakma yeteneğini ve daha da iyisi, test cihazının performansını artırmak için çıktı bilgilerinin ayrıntılarını özelleştirme yeteneğini tanıtmak olacaktır.

 
joo , başka bir şey daha var, böyle küçük olmayan hesaplamalar için bir test cihazı ve bir optimize edici yazmanın yanı sıra, tüm işlemci çekirdeklerini kullanmak için bir hesaplama dağıtıcısı yapmanız gerekir ve uzak aracıları bağlamak mümkündür (eğer toplu hesaplamalar yapılıyorsa). İlk olarak, hız açısından standart bir test cihazı ile karşılaştırılamaz - her şey çok daha yavaş çalışacak ve ikincisi, tüm bunları yazmak için çok fazla zaman ve yüzlerce kilobayt kod harcamanız gerekiyor ve bunların hepsi nedeniyle bir şey aslında?
 
Mr.FreeMan :
joo , başka bir şey daha var, böyle küçük olmayan hesaplamalar için bir test cihazı ve bir optimize edici yazmanın yanı sıra, tüm işlemci çekirdeklerini kullanmak için bir hesaplama dağıtıcısı yapmanız gerekir ve uzak aracıları bağlamak mümkündür (eğer toplu hesaplamalar yapılıyorsa). İlk olarak, hız açısından standart bir test cihazı ile karşılaştırılamaz - her şey çok daha yavaş çalışacak ve ikincisi, tüm bunları yazmak için çok fazla zaman ve yüzlerce kilobayt kod harcamanız gerekiyor ve bunların hepsi nedeniyle bir şey aslında?
Joo'dan GA zaten standart olandan daha hızlı çalışıyor ve kod 10. stüdyo (çok çekirdekli işlemciler için uyarlanmış) tarafından CPP'ye aktarıldığında, hızlanma 6 kat daha artıyor.
 
Mr.FreeMan :
joo , başka bir şey daha var, böyle küçük olmayan hesaplamalar için bir test cihazı ve bir optimize edici yazmanın yanı sıra, tüm işlemci çekirdeklerini kullanmak için bir hesaplama dağıtıcısı yapmanız gerekir ve uzak aracıları bağlamak mümkündür (eğer toplu hesaplamalar yapılıyorsa). İlk olarak, hız açısından standart bir test cihazı ile karşılaştırılamaz - her şey çok daha yavaş çalışacak ve ikincisi, tüm bunları yazmak için çok fazla zaman ve yüzlerce kilobayt kod harcamanız gerekiyor ve bunların hepsi bir şey aslında ?

Kırmızı Urain hakkında cevap verdi.

Ve yeşil pahasına - elbette para yüzünden. Vakit nakittir. Genelde yavaş koşuyorum, ama sonra hızla gidiyorum (GA'yı geliştirmek ve hata ayıklamak için bir yıldan fazla zaman harcadım) ve şimdi makalenin yayınlanmasından sonra kişisel olarak teşekkür mesajları almaya devam ediyorlar. :)

Normal testçiyi suçlamıyorum. Geliştiricilerin dikkatini yalnızca özel dikkat gerektiren şeylere odaklarım. Sonuçta, optimize edici ne kadar iyi olursa olsun (yani, optimize edici, test edici değil), çok yavaşsa, tüm avantajları boşa çıkar.

 

Az önce aklıma cesur bir fikir geldi. Her ne kadar, aslında, pigua pa olmaz mıydı?

MetaQuotes Software Corp'u kullanmak benim için büyük bir onurdur. UGA'm MetaTrader 5 optimize edicide. Kesinlikle ücretsiz, ancak elbette primi reddetmeyeceğim.

UGA basit ve etkilidir. Ayarlarda çok esnek. Test cihazına üç ayar şablonu girebilirsiniz - "Kaba", "Orta" ve "İyi" ve ayrıca "Ne için tam olarak neye ihtiyacınız olduğunu bilmiyorsanız, o zaman yapma" göstergesiyle gelişmiş ayarları ayrı olarak görüntüleyebilirsiniz. bu ayarlarda hiçbir şeyi değiştirmeyin" . Ardından, çok hızlı bir tahminden en uygun araç ayarları için doğru bir nihai aramaya kadar gerekli arama detayı derecesiyle optimizasyon yapmak mümkün olacaktır. Şu anda, normal optimize edici, kendisinin yapılandırılmasına izin vermiyor.

Торговая платформа MetaTrader 5 для организации брокерского обслуживания / MetaQuotes Software Corp.
  • www.metaquotes.net
Торговая платформа MetaTrader 5 предназначена для проведения торговых операций на различных финансовый рынках. Терминал обладает большой базой аналитических возможностей и поддерживает более 70 различных инструментов для выполнения технического анализа
Neden: