MT geliştiricileri için değil! INIT_PARAMETERS_INCORRECT nasıl değiştirilir? - sayfa 5

 
Сергей Таболин :

Şimdi konuya. Yasal zincirlere sahip bir dosya oluşturuldu. Şimdi nasıl kullanılır? OnTester, çerçeveler aracılığıyla gerekli olduğundan şüpheleniyorum ... Belgelere baktım, ancak bir şey eklemiyor. Bununla nasıl başa çıkacağımı anlayamıyorum.

Bir diziye okumak ve ondan veri almak için bir fikir var ...

Bence bu problem en iyi analitik olarak çözülür. Dizinini bilerek hareket halindeyken bir zincir oluşturmanız gerekir. Google "Birleştiriciler. Yerleşimler". Orada, Pascal üçgeni aracılığıyla hesaplanmış gibi görünüyor. En azından ben kombinasyon bulma problemini bu şekilde çözdüm, yerleşimler için de benzer bir şey olacağını düşünüyorum.

Ve genel olarak, görevinizin amacı benim için çok net değil. Bir zincirde fonksiyonlar neden tekrarlanamaz?

 
Alexey Navoykov :

Ve genel olarak, görevinizin amacı benim için çok net değil. Bir zincirde fonksiyonlar neden tekrarlanamaz?

Peki öyleyse:

  • on bir
  • 22

peki ne için?

Ve öyle olsa bile:

  • 121
sonuçta sonuç 21 gibi olacak ve 21 zinciri de bu sonucu tekrar edecek. Çoğaltma, prensipte gereksiz işlemler için fazladan zaman ...

 
Сергей Таболин :

Peki öyleyse:

  • on bir
  • 22

peki ne için?

Ve öyle olsa bile:

  • 121
sonra sonuç 21 gibi olacak ve 21 zinciri de bu sonucu tekrar edecek. Çoğaltma, prensipte gereksiz işlemler için fazladan zaman ...

İşlevlerinizin sırayla işlendiğini düşündüm, yani. birinci fonksiyonun hesaplamasının sonucu, ikinci fonksiyonun girdisine iletilir ve bu şekilde devam eder. Ve sonra her şeyin bağımsız olarak çalıştığı ortaya çıktı chtol? O zaman genellikle orada neyi optimize ettiğiniz net değildir.

 
Сергей Таболин :

Yasal zincirlere sahip bir dosya oluşturuldu. Şimdi nasıl kullanılır? OnTester, çerçeveler aracılığıyla gerekli olduğundan şüpheleniyorum ...

Buradaki çerçeveler yan değil. Tester_file veya COMMON üzerinden geçin. Burada çalışan örnek.

 
Сергей Таболин :

Bu mimarlıkla ilgili değil. Önemli olan, işlevler kümesi ve bunların uygulanma sırasıdır.

Bu işlevlerin programınızdaki rolü hakkında daha fazla bilgi verin (söz konusu mimari budur).

 

Pazara giriş koşullarını belirleme işlevleri.

Kayıt numarasına göre bir dosyadan zincir okuma yaptı. Genetik başlattı. Çalışıyor gibi görünüyor ve yemin etmiyor.

Sadece burada soru şu: zincirler hiçbir şekilde sistematik değil, genetik en iyi seçeneği bulabilecek mi? Tüm seçeneklere bakmıyor. Belki de önce ortaya çıkan dosyayı sıralamaya değer mi? Nasıl yapılır?

 

Sıralanmış metin dosyası. Şimdi diziyi zincirle birlikte okumamız, onu bileşenlere ayırmamız ve diziyi doldurmamız gerekiyor.

Ama derlerken hemen uyarı veriyor ama ne akşamdan kalma anlamadım...

 //+------------------------------------------------------------------+
void OnTick ()
{
//---
//--- считать цепочки из файла
   int chain[ 6 ];
   string    filenameF   = "KR\\func_KrL_sort.txt" ;
   string    filename    = "KR\\func_KrL_sort.bin" ;
   string    str, str_chain[];
   if ( FileIsExist (filenameF, FILE_COMMON ))
   {
       int filehandleF = FileOpen (filenameF, FILE_READ | FILE_TXT | FILE_COMMON );
       if (filehandleF != INVALID_HANDLE )
      {
         for ( int f = 0 ; f <= 1953 ; f++)
         {
             ArrayInitialize (chain, 0 );
             FileReadString (filehandleF,str); // implicit conversion from 'string' to 'number'
             Print (str);
             StringSplit (str, "," ,str_chain);  // implicit conversion from 'string' to 'number'
             for ( int i = 0 ; i <= 5 ; i++)
            {
               ArrayInitialize (chain, 0 );
               chain[i] = ( int ) StringToInteger (str_chain[i]); // array out of range
               Print ( string (chain[ 0 ])+ "," + string (chain[ 1 ])+ "," + string (chain[ 2 ])+ "," + string (chain[ 3 ])+ "," + string (chain[ 4 ])+ "," + string (chain[ 5 ]));
            }
         }
         
         FileClose (filehandleF);
         ExpertRemove ();
      }
   }
}
//+------------------------------------------------------------------+

Ve hata dizisini aralık dışında çalıştırdığınızda

Metin dosyası içeriği:

 1 , 0 , 0 , 0 , 0 , 0
1 , 2 , 0 , 0 , 0 , 0
1 , 2 , 3 , 0 , 0 , 0
1 , 2 , 3 , 4 , 0 , 0
1 , 2 , 3 , 4 , 5 , 0
1 , 2 , 3 , 4 , 5 , 6
1 , 2 , 3 , 4 , 6 , 0
1 , 2 , 3 , 4 , 6 , 5
1 , 2 , 3 , 5 , 0 , 0
1 , 2 , 3 , 5 , 4 , 0
...........
 

yeniden yapıldı:

 //+------------------------------------------------------------------+
void OnTick ()
{
//---
//--- считать цепочки из файла
   int chain[ 6 ];
   string    filenameF   = "KR\\func_KrL_sort.txt" ;
   string    filename    = "KR\\func_KrL_sort.bin" ;
   string    str, str_chain;
   if ( FileIsExist (filenameF, FILE_COMMON ))
   {
       int filehandleF = FileOpen (filenameF, FILE_READ | FILE_TXT | FILE_COMMON );
       if (filehandleF != INVALID_HANDLE )
      {
         for ( int f = 0 ; f < 1953 ; f++)
         {
             ArrayInitialize (chain, 0 );
            str = FileReadString (filehandleF);
             //Print(str); // этот рисует всё как надо
             for ( int i = 0 , p = 0 ; i <= 5 ; i++, p += 2 )
            {
               str_chain   = StringSubstr (str,p, 1 );
               chain[i]    = ( int ) StringToInteger (str_chain);
            }
         }
         
         FileClose (filehandleF);
         ExpertRemove ();
      }
   }
}
//+------------------------------------------------------------------+
 
Сергей Таболин :

Sadece burada soru şu: zincirler hiçbir şekilde sistematik değil, genetik en iyi seçeneği bulabilecek mi? Tüm seçeneklere bakmıyor. Belki de önce ortaya çıkan dosyayı sıralamanız gerekir? Nasıl yapılır?

Elbette bulamayacak. Nasıl sıralamazsın. "Genlerin" ne olduğunu anlamak için önce genetik algoritmanın özünü anlamanız gerekir.

İlk gönderide dile getirilen yaklaşımınız (" Bir kullanıcı olarak sonucu almak istiyorum, ancak orada nasıl çalıştığı benim için çok mor" ) bu durumda kesinlikle yanlış.

 
Alexey Navoykov :

İlk gönderide dile getirilen yaklaşımınız (" Bir kullanıcı olarak sonucu almak istiyorum, ancak orada nasıl çalıştığı benim için çok mor" ) bu durumda kesinlikle yanlış.

ama öyle bir şey yok. MK'dan genetikleri hakkında net bir dokümantasyon ve eğitim olmadığı sürece, kullanıcının derin genetik bilgisine sahip olmasını istemek alay konusu olur. dahası, çok sayıda uygulama olabilir, bu nedenle derin genetik bilgisi bile garantili etkili optimizasyon anlamına gelmez