不适合MT开发者!用什么来代替INIT_PARAMETERS_INCORRECT? - 页 5

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

现在说说实质问题。我已经创建了一个带有合法链的文件。我现在如何使用它呢?我怀疑它应该是通过onTester,框架...看了一下文件,但有些地方不对劲。想不出如何处理它。

我想把它读到一个数组中,然后从中获取数据...

我认为这个问题最好用分析法解决。 你需要在知道其索引的情况下,即时生成一条链。 谷歌 "组合学。这似乎是通过帕斯卡尔三角形来解决的。 至少我解决了这个搜索组合的问题,我想对于安置也会有类似的问题。

总的来说,我不是很清楚你这个问题的目的。 为什么这些函数不能在链中重复?

 
Alexey Navoykov:

总的来说,我不是很清楚你这个任务的目的。 为什么这些功能不能在一个链条中重复?

好吧,如果是这样。

  • 11
  • 22

那为什么?

如果是这样的话。

  • 121
那么总数将是21。而一连串的21人将重复这一结果。重复,为原则上无用的运行增加时间......

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

如果是这样的话。

  • 11
  • 22

那还有什么意义呢?

如果是这样的话。

  • 121
那么总数将是21。而一连串的21人将重复这一结果。重复,为原则上无用的运行增加时间......

我以为函数的处理是有顺序的,也就是说,第一个函数的计算结果被传递给第二个函数的输入,等等。 然后发现所有的东西都是独立工作的? 那就更不清楚了,你在那里优化什么。

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

已经创建了一个带有合法链的文件。我现在如何使用它呢?我怀疑你必须使用onTester,框架...

框架与此毫无关系。使用tester_file或COMMON。下面是 一个工作实例。

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

这与建筑无关。这是关于函数的集合以及如何应用它们。

给出更多关于这些功能在你的程序中的作用的信息(这是有问题的架构)。

 

界定市场进入 条件的功能。

按条目编号从文件中读取链。开始遗传学。它似乎是有效的,而且不骂人。

唯一的问题是:链子没有任何系统化,遗传学会不会找到最好的变体?它并不看所有的人。我们难道不应该先对产生的文件进行分类吗?如何做到这一点?

 

我对一个文本文件进行了分类。现在,我必须用链读取字符串,将其分解成各个组成部分,并填充到数组中

但在编译时,它立即产生了一个警告,我不明白为什么......

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

启动时,阵列超出范围 的错误

文本文件的内容。

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

重做了。

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

但问题是:连锁店没有任何系统化,遗传学会不会找到最佳选择?它不看所有的变种。我们不应该先对文件进行分类吗?我们如何做到这一点呢?

当然不会。你首先要了解遗传算法,了解什么是基因。

你在第一篇帖子中所表达的方法("我作为一个用户,想得到一个结果,我不关心它是如何工作的")在这种情况下是绝对错误的。

 
Alexey Navoykov:

你的方法,正如第一篇帖子中所说的("我,作为一个用户,想要的是结果,我不在乎它是如何工作的")在这种情况下是完全错误的。

只要MK公司没有关于其遗传学的明确文件和教程,要求用户对遗传学有深刻的了解就是一种嘲弄。可能有大量的实现方式,所以即使对遗传学有深刻的了解也不意味着保证有效的优化。