Não para desenvolvedores de MT! O que substituir INIT_PARAMETERS_INCORRECT por ? - página 5

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

Agora, quanto à substância. Eu criei um arquivo com correntes legítimas. Como posso utilizá-lo agora? Suspeito que deve ser através do onTester, armações... Examinei a documentação, mas alguma coisa não bate certo. Não consigo descobrir como lidar com isso.

Estou pensando em lê-lo em um array e tirar dados dele...

Acho que este problema é melhor resolvido analiticamente. Você precisa gerar uma cadeia na mosca, conhecendo seu índice. Google "Combinatorics". Parece estar resolvido através do triângulo de Pascal. Pelo menos resolvi este problema de busca de combinações, acho que haverá algo semelhante para as colocações.

Em geral, não estou muito claro sobre o propósito de seu problema. Por que as funções não podem ser repetidas na cadeia?

 
Alexey Navoykov:

Em geral, não estou muito claro quanto ao propósito de sua tarefa. Por que as funções não podem ser repetidas em uma cadeia?

Bem, se assim for:

  • 11
  • 22

então por quê?

E se for assim:

  • 121
então o total seria como 21. E uma corrente de 21 repetiria esse resultado. Duplicação, tempo extra para, em princípio, corridas inúteis.

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

Se for esse o caso:

  • 11
  • 22

então qual é o objetivo?

E se for assim:

  • 121
então o total seria como 21. E uma corrente de 21 repetiria esse resultado. Duplicação, tempo extra para, em princípio, corridas inúteis.

Pensei que o processamento das funções é sequencial, ou seja, o resultado do cálculo da primeira função é passado para a entrada da segunda função, etc. E acontece que tudo funciona de forma independente... Então até não está claro, o que você está otimizando lá.

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

Foi criado um arquivo com as cadeias legítimas. Como posso utilizá-lo agora? Suspeito que você tem que usar o onTester, armações...

As molduras não têm nada a ver com isso. Use o arquivo tester_file ou COMMON. Aqui está um exemplo de trabalho.

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

Não se trata de arquitetura. É sobre o conjunto de funções e como elas são aplicadas.

Dê mais informações sobre o papel destas funções em seu programa (esta é a arquitetura em questão).

 

Funções para definir as condições de entrada no mercado.

Feito cadeias de leitura a partir de um arquivo por número de entrada. Iniciada a genética. Parece estar funcionando e não pragueja.

A única pergunta é: as correntes não são sistematizadas de forma alguma e a genética vai encontrar a melhor variante? Não olha para todos eles. Não deveríamos começar ordenando o arquivo resultante? Como fazer isso?

 

Eu ordenei um arquivo de texto. Agora tenho que ler o fio com corrente, quebrá-lo em componentes e encher a matriz.

Mas ao compilar, gera imediatamente um aviso, e não entendo por que...

//+------------------------------------------------------------------+
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();
      }
   }
}
//+------------------------------------------------------------------+

Na partida, amatriz fora da faixa de erro

Conteúdo do arquivo de texto:

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
...........
 

Retrabalhados:

//+------------------------------------------------------------------+
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();
      }
   }
}
//+------------------------------------------------------------------+
 
Сергей Таболин:

Mas a questão é: as cadeias não são sistematizadas de forma alguma, será que a genética encontrará a melhor opção? Não considera todas as variantes. Não deveríamos começar ordenando o arquivo? Como você faria isso?

É claro que não vai. Primeiro você tem que entender o algoritmo genético, entender o que são "genes".

Sua abordagem, expressa no primeiro post ("Eu, como usuário, quero obter um resultado, e não me importo como funciona") está absolutamente errada neste caso.

 
Alexey Navoykov:

Sua abordagem, conforme declarado no primeiro post ("Eu, como usuário, quero resultados, e não me importo como funciona") está completamente errada neste caso.

Este não é o caso. enquanto não houver uma documentação clara e um tutorial da MK sobre sua genética, é zombaria exigir do usuário um profundo conhecimento de genética. pode haver um grande número de implementações, então mesmo um profundo conhecimento de genética não significa uma otimização eficaz garantida.