MQL5 ve MQL5 Cloud Network'te evrensel matematiksel hesaplamaların ek desteği için ne eklenmelidir? - sayfa 7

 
Lütfen çözmeme ve düzeltmeme yardım et. Dün MetaTrader 5 Agents Manager'ı kurdum
bilgisayarımı bulut bilişimde kullanmak için
MQL5 Bulut Ağı . Ama sorun şu ki http://www.mql5.com sitesindeki hesabımda aracılar görüntülenmiyor, bu da bilgisayarımı kullanmanın ücretinin düşmeyeceği anlamına geliyor. MT5 MetaTrader 5 Agents Manager'ın kendisinde hesabımın adını girdim.
Скачать MetaTrader 5 Strategy Tester Agent для работы в сети MQL5 Cloud Network
Скачать MetaTrader 5 Strategy Tester Agent для работы в сети MQL5 Cloud Network
  • cloud.mql5.com
Подключайтесь к сети распределенных вычислений MQL5 Cloud Network и получайте дополнительный доход круглосуточно — пусть компьютер работает на вас!
 
Victuar :
Ama sorun şu ki http://www.mql5.com sitesindeki hesabımda aracılar görüntülenmiyor, bu da bilgisayarımı kullanmanın ücretinin düşmeyeceği anlamına geliyor. MT5 MetaTrader 5 Agents Manager'ın kendisinde hesabımın adını girdim.
SSS bölümünü okumaya ne dersiniz - https://cloud.mql5.com/en/faq
Вопросы по сети распределенных вычислений MQL5 Cloud Network
Вопросы по сети распределенных вычислений MQL5 Cloud Network
  • cloud.mql5.com
Часто задаваемые вопросы по MetaTester 5 Agents Manager
 
Renat :

Dolayısıyla şu soru - yerleşim ağının yeteneklerini geliştirmek için başka hangi işlevler dahil edilmelidir?

Muhtemelen uzaktan çağrılabilen ve aracılardan değerlerini alabilen sınıf metotları : Uzaktan Yordam Çağrısı (RPC). Bunun gibi bir şey:

remote:
   ...
   double f( int x);
   double y(doble a, double b, int[] &c);
   void z( double [] &arr);
   void func(SomeObject *so);
   ...

Burada elbette yöntem çağrısı ile birlikte, bu yöntemi uzaktan çağıran nesnenin alanlarının mevcut değerlerini aracıya aktarmanız gerekecektir.

Sonuç olarak, sınıfın ana örneği bir tür yöntemi çağırır ve yöntemin içinde, görevleri bulut üzerinden gönderen diğer sınıfların örnekleri oluşturulur. Sonuç(lar) döndürülür.

Örneğin, satrançta birkaç hamlenin yanlış hesaplanması şeklinde bir görev oluşturulur. Uzaktan yürütülen ana yöntemde, belirli bir sınıfın nesneleri şeklinde bir hareket için yanlış hesaplama ile çeşitli kombinasyonlar oluşturulur ve gönderilir. Bunlar da, hareket bir sonuçla bitmediyse veya hesaplama derinliği sınırı aşmadıysa, yine aynı yöntemi çağırır. Vb. vb.

 
her.human :

Terminalin katılımı olmadan, bu iyidir.

Bu "aracılardan biri" için verileri kim oluşturacak? Bir komut dosyası veya gösterge bunu yapabilecek mi?

Aracılardan herhangi biri, geri kalanı için ilk verileri oluşturabilir. Tüm veya seçilen temsilciye gönderebilir veya yayınlayabilir.

Herhangi bir aracı, diğer aracılara veri çerçeveleri gönderebilecektir.


Aracılar arasındaki iletişime neden ihtiyaç duyulur, mümkünse dar görüşlüleri aydınlatın.

Önceki hesaplamaların verilerini/sonuçlarını değiş tokuş etmeniz gereken ilgili sorunları çözmek için.

Bulutta olması gerekmez. Yerel bölgenizde yüksek hızlı bir aracı ağı oluşturabilir ve büyük bir veri alışverişi ile karmaşık bir görev başlatabilirsiniz.

Sonuç olarak, herhangi bir süper bilgisayar olmadan güçlü bir bilgisayar ağı kurmak mümkündür.

 
Reshetov :

Muhtemelen uzaktan çağrılabilen ve değerlerini aracılardan alabilen sınıf yöntemleri . Bunun gibi bir şey:

Burada elbette yöntem çağrısı ile birlikte, bu yöntemi uzaktan çağıran nesnenin alanlarının mevcut değerlerini aracıya aktarmanız gerekecektir.

Hayır, çalışan ve gerçek tek bir seçenek var - veri çerçevelerini değiştirmek. İşlevlerin uzaktan yürütülmesi ciddi değildir, çünkü aklı başında hiç kimse bilgi ortamını kopyalayamaz.

Çerçevelerle çalışmanın bir parçası olarak işlevselliği genişletebilirsiniz:

 bool   FrameSend( const long     agent,       // номер агента, или BROADCAST
                 const string   name,         // публичное имя/метка
                 const long     id,           // публичный id
                 const double    value ,       // значение
                 const string   filename     // имя файла с данными
               );

Sadece bilgi için:

Ağ gecikmelerinin maliyeti, genel süreci optimize etmek için sonuçları açıkça paketlemeniz ve verileri mümkün olduğunca az aktarmanız gerektiği kadardır. Örneğin, 100.000.000 geçiş için hızlı tetiklenen (saniyenin kesirleri içinde) bir matematiksel problem varsa, optimizasyon sürecini hemen 1.000-10.000 geçişlik kısımlara algoritmik olarak dağıtmak ve sonuçlarla birlikte bir grup işleme kodu yazmak daha iyidir. toplu olarak iade edildi. Bu, ağda çok zaman harcanacağı 100.000.000 getiriye kıyasla büyük bir avantaj sağlayacaktır.

Bizim açımızdan, hızlı ateşleme görevlerinde, her bir aracıya onlarca ve yüzlerce geçişin verilmesini ve ayrıca yanıtların bir araya getirilmesini bir araya getirerek ciddi şekilde yardımcı oluyoruz. Bu, ağ iletiminde büyük tasarruf sağlar ve ağ gecikmesini minimumda tutar.

 
Renat :

Hayır, çalışan ve gerçek tek bir seçenek var - veri çerçevelerini değiştirmek. İşlevlerin uzaktan yürütülmesi ciddi değildir, çünkü aklı başında hiç kimse bilgi ortamını kopyalayamaz.

Tüm görevlerde sonuçlar paketlenemez, çünkü bazı uygulamalarda ve çok kaynak gerektiren uygulamalarda, sonuç tek olabilir veya hiç bulunamayabilir ve başarısız görevler oyun sırasında atılır, yani. eksik sonuçların döndürülmesine bile gerek yoktur.

O zaman farklı şekilde yapabilirsiniz. Yani asıl görev kendi tarafında görevler oluşturur, aracıları bu konuda bilgilendirir. Aracılar, görevlerle uzak yöntemleri çağırır, hesaplar ve bir sonuç alırlarsa, sonuçları döndürmek için uzak yöntemleri çağırırlar.

Örneğin, problem: Fermat sayılarının asal bölenlerini bulmak. Hiç bir sonuç olmayacağı ortaya çıkabilir, belki bir veya birkaç tane olabilir. Sonuç olarak, bu aynı potansiyel bölenlerin numaralandırılması çok kaynak yoğun bir görevdir, çünkü. önce büyük bir sayı şeklinde bir nesne oluşturmanız gerekir (görevde, tamsayılar şeklinde yalnızca iki sayı belirtebilirsiniz: bilgi aktarım maliyetini azaltmak için ana ve mantis). Ardından, basitlik için bu sayıyı kontrol edin (basitleştirilmiş bir kontrol yapılır, bunun yardımıyla, sayının yüzde 90'dan fazla asal olmadığı ortaya çıkacaktır). Ve sonra, basitlik testi başarıyla geçilirse, bir döngüde, koşulların eşleşmesini aramak için modulo karesini alın. Koşul, döngünün bitiminden önce eşleşmezse, sonuç yoktur ve döndürülecek hiçbir şey yoktur. Bu durumda aracı, ana uygulamada uygun yöntemi uzaktan çağırarak bir sonraki işi uzaktan talep etmelidir. Bir sonuç bulursa, başka bir yöntemi çağırmalı ve aynı sonucu iletmelidir.

Onlar. görevler farklıdır ve çerçeve yapıları herkes için yeterli değildir. Ve yukarıdaki örnekte ağ gecikmelerinin maliyeti de ihmal edilebilir, çünkü bir iş, aracıya iki tamsayı iletmekten oluşur.

 
Reshetov :

Tüm görevlerde sonuçlar paketlenemez, çünkü bazı uygulamalarda ve çok kaynak gerektiren uygulamalarda, sonuç tek olabilir veya hiç bulunamayabilir ve başarısız görevler oyun sırasında atılır, yani. eksik sonuçların döndürülmesine bile gerek yoktur .

Çerçeve şemasını kullanırsanız, "sunucu aracısına" boş sonuçlar döndürmeyin veya "paket hesaplandı, veri yok" bayrağını döndürün.

Çerçeve modunun nasıl çalıştığını biliyor musunuz? Expert Advisor'ın baş kısmı doğrudan terminal penceresinde başlatılır ve uzak aracılardan gelen yanıtları (veri çerçeveleri) bekler. Yani sunucu kısmı grafiğe oturur, verileri alır ve her şeyi görselleştirebilir.

Okuyun ve kendiniz deneyin: https://www.mql5.com/ru/code/914

DİKKAT: Video yeniden yüklenmelidir

Пример обработки результатов оптимизации в тестере стратегий
Пример обработки результатов оптимизации в тестере стратегий
  • oylar: 24
  • 2012.06.11
  • MetaQuotes Software Corp.
  • www.mql5.com
Пример визуализации результатов тестирования (динамика кривой баланса и статистические характеристики торгового советника) в процессе оптимизации.
 
Renat :

Bir çerçeve şeması kullanıyorsanız, boş sonuçları "sunucu aracısına" döndürmeyin.

Yani bu sadece temel. Ana görevler ve hesaplamalar için çok kaynak yoğun, özyinelemelidir. Ve bulut bu tür görevler için tasarlanmamıştır, çünkü. sadece ayrıntılı numaralandırma için yapılır. Uygulamalı birçok problemde ayrıntılı numaralandırma kullanılmaz, çünkü o umutsuz. Genişlik ile derinlik öncelikli arama ve genişlik ile derinlik öncelikli arama için özyinelemeli görevler gereklidir. Örneğin, moleküllerin sentezi. Onlar. oyun sırasında, her dalı hesaplama açısından yoğun kaynak olan bir potansiyel çözümler ağacı inşa edilir. Ancak her dal üretken değildir. Onlar. bir yerde arama kesintiye uğrar, ancak aynı zamanda arama diğer potansiyel dallarda derinlik veya genişlikte devam eder.

Tam numaralandırma pratikte hiç kullanılmaz, çünkü Uygulanan çoğu problem için, onun yardımıyla, bir çözüm bulmak için yeterli zaman olmayacak (örneğin, bir satranç oyununun hamlelerini analiz etme problemi). Ve ümit vermeyen karar dallarının budanması ile özyinelemeli yöntemler, özellikle dağıtılmış bilgi işlemde yüksek hız sağlar. Bu nedenle, uygulamaları buluta çekmek istiyorsanız, bu bulutu görevlerine göre ayarlamanız ve beklentileri ne olursa olsun her şeyi bırakacaklarını ve tüm seçenekleri arka arkaya sıralayacaklarını düşünmemeniz gerekir. Gigaflops açısından daha az hızlı ateşleme ve daha az bilgisayarla olsa da, kendi dağıtılmış bilgi işlem ağlarını oluşturmaları daha kolay olacak, ancak daha verimli olacak çünkü. yalnızca umut vadeden yönlerde arama yapacak ve doğru çözümü Cloud Network'ten çok daha hızlı bulacaktır. Üstelik birçok programlama dilinde bunun için araçlar var, yani. hazır RPC uygulamaları.

Örneğin, Fermat sayılarının asal bölenleri için aynı arama alt problemlere bölünebilir. Ana uygulama görevleri oluşturur. Bir sonraki katman nesneler oluşturur ve görevleri oluşturmak için diğerlerinden hızlı bir birincillik kontrolü gerçekleştirir. Bir sonraki katman koşulları arar, yani. Fermat sayısının böleni bulundu veya bulunamadı. Tespit edilen sayılardan yine görevler oluşturulur. Bir sonraki katman asallık için tam bir kontrol gerçekleştirir ve sayı asal değilse görevler oluşturur. Basitse, sonucu ana uygulamaya döndürür. Sonraki katman, Fermat sayılarının asal olmayan bölenlerini çarpanlara ayırır ve onlardan önceki katman için atamaları oluşturur.

Ajanların görevlerini her katmanda gerçekleştirdiği bir konveyör ortaya çıkıyor. Ve sonucun bulunup bulunmayacağı - bir dirgen ile yazılır. Daha fazla çözüm aramak için açıkça taviz vermeyen sayıların boru hattında atılması önemlidir. Onlar. çok sayıda bilgi işlem kaynağı kaydedilir ve ümit vaat etmeyen görevlere binlerce aracı yığılıp onları ezmeye çalışılmaz.

Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Заработать деньги, продавая мощности своего компьютера для сети распределенных вычислений MQL5 Cloud Network
 
Reshetov :

Yani bu sadece temel. Ana görevler ve hesaplamalar için çok kaynak yoğun, özyinelemelidir. Ve bulut bu tür görevler için tasarlanmamıştır, çünkü. sadece ayrıntılı numaralandırma için yapılır. Tam numaralandırma birçok uygulamalı problemde kullanılmaz, çünkü o umutsuz. Genişlik ile derinlik öncelikli arama ve genişlik ile derinlik öncelikli arama için özyinelemeli görevler gereklidir. Örneğin, moleküllerin sentezi. Onlar. oyun sırasında, her dalı hesaplama açısından yoğun kaynak olan bir potansiyel çözümler ağacı inşa edilir. Ancak her dal üretken değildir. Onlar. bir yerde arama kesintiye uğrar, ancak aynı zamanda arama diğer potansiyel dallarda derinlik veya genişlikte devam eder.

1.000-10.000 geçişlik gruplar halinde çalıştırın ve yalnızca anlamlı sonuçlar döndürün. Bu çok verimli bir algoritmik tekniktir.

Bunu özellikle yukarıda yazdım.


Tam numaralandırma pratikte hiç kullanılmaz, çünkü Uygulanan çoğu problem için, onun yardımıyla, bir çözüm bulmak için yeterli zaman olmayacak (örneğin, bir satranç oyununun hamlelerini analiz etme problemi). Ve ümit vermeyen karar dallarının budanması ile özyinelemeli yöntemler, özellikle dağıtılmış bilgi işlemde yüksek hız sağlar. Bu nedenle, uygulamaları buluta çekmek istiyorsanız, bu bulutu görevlerine göre ayarlamanız ve beklentileri ne olursa olsun her şeyi bırakacaklarını ve tüm seçenekleri arka arkaya sıralayacaklarını düşünmemeniz gerekir. Gigaflops açısından daha az hızlı ateşleme ve daha az bilgisayarla olsa da, kendi dağıtılmış bilgi işlem ağlarını oluşturmaları daha kolay olacak, ancak daha verimli olacak çünkü. yalnızca umut vadeden yönlerde arama yapacak ve doğru çözümü Cloud Network'ten çok daha hızlı bulacaktır. Üstelik birçok programlama dilinde bunun için araçlar var, yani. hazır RPC uygulamaları.

Örneğin, Fermat sayılarının asal bölenleri için aynı arama alt problemlere bölünebilir. Ana uygulama görevleri oluşturur. Bir sonraki katman nesneler oluşturur ve görevleri oluşturmak için diğerlerinden hızlı bir birincillik kontrolü gerçekleştirir. Bir sonraki katman koşulları arar, yani. Fermat sayısının bulunan veya bulunmayan böleni. Tespit edilen sayılardan yine görevler oluşturulur. Bir sonraki katman, asallık için tam bir kontrol gerçekleştirir ve sayı asal değilse, görevler oluşturur. Basitse, sonucu ana uygulamaya döndürür. Sonraki katman, Fermat sayılarının asal olmayan bölenlerini çarpanlara ayırır ve onlardan önceki katman için atamaları oluşturur.

Veri alışverişi ve demo hakkında yukarıyı okuyun:

  1. Aracıların çalışmalarını kontrol eden bir ana süreç zaten var. Grafiğe oturur ve aracılardan çerçeveler (büyük özel boyut) alır.
  2. Ana süreç, alınan özel verileri zaten alabilir, görselleştirebilir, işleyebilir ve kaydedebilir

Ana sürecin ek olarak herhangi bir aracıya, herhangi bir ek özel veriye veri aktarabilmesi için veri alışverişinin daha da genişletilmesi önerilir. Sonuç olarak, uzak aracılara yeni özel koşullar ekleyerek sadece parçaları sayabilirsiniz. Sonuç olarak, en azından her seferinde problemin koşullarını değiştirerek istediğiniz gibi hesaplamak mümkün olacaktır.

Aracıların yalnızca ana bilgisayardan görev almaları değil, aynı zamanda birbirleriyle veri alışverişi yapmaları olası uzantılardan bir diğeri. Elbette bunu sihirbaz aracılığıyla yapabilirsiniz (çok fazla veri varsa bu çok yavaş olabilir), ancak doğrudan bulut sunucuları üzerinden daha verimli ve daha hızlı yapılabilir.

 

Renat :

Olası uzantılardan bir diğeri, aracıların yalnızca ana bilgisayardan görev almaları değil, aynı zamanda birbirleriyle veri alışverişi yapmalarıdır. Elbette bunu sihirbaz aracılığıyla yapabilirsiniz (çok fazla veri varsa bu çok yavaş olabilir), ancak doğrudan bulut sunucuları üzerinden daha verimli ve daha hızlı yapılabilir.

İhtiyaç duyulan şey budur, yani. master'ın aracılığı olmaksızın, ancak master'a sonuçların garantili dönüşü ile, verilerin bir aracıdan diğerine özyinelemeli aktarımı. Onlar. böylece aracının görevi üstlendiği ve tamamlamadan, örneğin bilgisayar kapatıldığı ve aynı zamanda potansiyel olarak etkili karar dalı kesintiye uğradığı için çalışmayı durdurduğu ortaya çıkmaz.

Bu, örneğin, bir satranç oyununu analiz etme görevidir. Usta parçaları düzenler ve şimdi hareket etmesi gereken parçaların rengine göre görevler oluşturur, yani. bir rakam - bir görev. Taşı için bir görev alan her temsilci, taş hareket edemediğinde daha fazla analiz için ümit vermeyen seçenekleri atar ve kalanlardan, zaten rakibin taşları için görevler şeklinde daha fazla aktarılan yeni düzenlemeler oluşturur. Vb. vb. mat veya çıkmaza sokmak veya arama derinliğini aşmak.

Bulutun mevcut uygulamasına böyle bir görev emanet edilirse, yalnızca eksiksiz bir numaralandırma için görev paketleri oluşturmak mümkündür. Ve bulut bunun için yeterli aracıya sahip değildir ve master'ın tüm bu görevleri paketlere ayrıştırmak için yeterli belleğe sahip olması pek olası değildir. Çünkü taviz vermeyen seçenekleri elemek için bir mekanizma yok. Sonuçta, parçaların analiz edilen her yeni hareketiyle, görevlerin sayısı katlanarak artar, ancak bunların önemli bir kısmı atılır ve tam bir numaralandırmada olduğu gibi anlamsız görevler oluşturmaz. Ve ancak karar ağacının belirli bir derinliğine veya genişliğine daldıktan sonra beklentiler hakkında bilgi edinebilirsiniz. Ve bulutun bu uygulamasındaki derinlik 1'e eşittir, yani. ustadan aracıya ve tam tersi.

Bunu neden söylüyorum. Ticaret için, ümit vermeyen dalların budanması ile özyinelemeli bir aramanın uygulanması da gereklidir. Sonuçta, bir ekstremum değil, birçok yerel olanı aramak daha iyidir (gerçekten birçoğu var). Ayrıca, tüm olası seçenekler için arama alanı astronomiktir, yani. tüm dağıtılmış bilgi işlem ağlarından alınan hiçbir aracı yeterli olmayacaktır. Bunu yapmak için, her adımda, görevden elde edilen noktanın (nokta koordinatları - Uzman Danışmanın giriş parametreleri ) belirli bir mesafede ve birbirinden bir açısal değerle ayrılmış en yakın komşulukları üzerinde yineleniriz. Mevcut olana kıyasla sonuçları iyileştirip iyileştirmedikleri. Bazıları bozulursa veya arama derinliğinin ötesine geçerse, atın. İyileşirlerse, yinelemeli olarak daha ileriye bakın ve aracılara dağıttığımız iyileştirilmiş noktalardan bir başka görev paketi oluşturun. Yerel bir ekstremum bulursak (mahalledeki tüm noktalar yalnızca mevcut sonucu kötüleştirir), sonucu ana uygulamaya döndürürüz. Ekstremler bulunduktan sonra bunları master'a aktarıyoruz ve daha sonra ileri testler ile analiz ediyoruz.

Böyle bir sorunu kafa kafaya çözmek imkansızdır, çünkü astronomik sayıda seçenek. Genetik algoritma ayrıca yerel ekstremayı aramaz (hatta yakın çevrede global olanın yakınında durur), ancak ekstremitelerinden bağımsız olarak yalnızca ara sonuçları gösterir. Genetik algoritma ve kapsamlı aramanın sınırlı ve ayrı bir arama alanına sahip olduğu gerçeğinden bahsetmiyorum bile. Ve gerekli olan maksimum sayıda yerel ekstrema aramaktır, ancak hızlıdır, yani. ustadan aracılara ve aracıdan diğer aracılara ve sınırsız aralıklara kadar taviz vermeyen nesil görevlerin kesilmesiyle (ancak gerekirse kısıtlamalar ayarlanabilir, örneğin, bu tür algoritmalardaki arama derinliği her zaman sınırlıdır). Bulut özyinelemeli iş aktarımı uygulamış olsaydı, sorun çözülmüş olurdu.

Neden: