策略测试仪的优化 - 页 10

 

在最新的版本中,我们已经完全摆脱了任务运行的系统开销,将其从近2000毫秒减少到零。

以下是运行计算任务的结果,这是由joo建议的。

input double   x1=0.0;
input double   x2=0.0;
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)
    );
  }

设置(日期是故意设置的,以便不使用图表历史)。

要运行的参数。

使用的代理(4个本地代理)。

优化的结果。

优化只用了25秒,18,432次通过。



总体结果:MetaTrader 5和它的代理网络可以用于大规模的数学计算。

 
Renat:

在最新的版本中,我们已经完全摆脱了任务运行的系统开销,将其从近2000毫秒减少到零。

以下是运行计算任务的结果,这是由joo建议的。

设置(日期是故意设置的,以便不使用图表历史)。

要运行的参数。

正在使用的代理(4个本地代理)。

优化的结果。

优化只花了25秒,并进行了18,432次传递。

总的结果是:MetaTrader 5和它的代理网络可以用来进行大规模的数学计算。

这是一个非常好的结果。现在,优化器确实或多或少地适用于优化任务(包括交易和非交易相关)。如果在默认的优化器GA设置下,将这一特定任务的通过次数减少到2-3千次,结果会更好,但为此你需要显示GA设置供用户访问(如果用户愿意,可以将通过次数减少到500-900)。

仍然存在着搜索空间限制的问题。在servicedesk中提出了一个相应的优化器建议。

 
joo:

这是一个非常好的结果。现在,优化器确实或多或少地适用于优化任务(包括交易和非交易直接相关的任务)。如果在优化器的默认GA设置下,这个特定任务的通过次数减少到2-3千次,效果会更好,但为此你需要向用户提供GA设置(如果用户愿意,可以将通过次数减少到500-900次)。

仍有一个与搜索空间限制有关的问题。在服务台中提出了一个相应的优化器建议。

而这个问题的解决主要与这个问题有关。

如果优化通行证溢出已经发生在4个参数上,那么谈论增加参数的数量超过现在允许的数量(64)还不合适。

 
Urain:

而这个问题的解决主要与这个问题有关。

如果优化溢出已经发生在4个参数上,那么谈论增加参数的数量超过现在允许的数量(64)还不合适。

当然了。粗略地说,搜索空间是P=n*step,其中n--要优化的参数数量,参数的步长。同时,P应小于Pmax(可能的最大搜索空间,受染色体二元编码的特点限制)。因此,人为引入的限制之一(例如,你可以做出10000个参数的限制,但这样的步骤将超过解决大多数优化问题的需要),以便P不会超过Pmax,被引入了对n的限制。

关于这个问题的想法在servicedesk的优化器提案中表达了。


PS 随着远程代理网络的增长,大量运行的问题即将化为乌有。但是,当然,只有在二进制染色体编码限制被取消的情况下(读作:改用实数的染色体编码)。

 
joo:

当然了。粗略地说,搜索空间是P=n*step,其中n-待优化的参数数量,参数的步长。因此,P应该小于Pmax(最大可能的搜索空间,受染色体二进制编码的特点限制)。因此,人为引入的限制之一(例如,你可以做一个10000个参数的限制,但随后的步骤将超过解决大多数优化问题的需要),即P不会超过Pmax,被引入了一个n的限制。

在服务台的优化器提案中给出了这方面的想法。


PS 随着远程代理网络的增长,大量运行的问题就会消失。但当然,只有在二进制染色体编码限制被取消的情况下(读作:改用实数的染色体编码)。

略有错误,正确的变体数量是P=step_0*step_1*...*step_n

如果步长相等,结果是P=步长^n

 
Urain:

略有错误,正确的选择数是P=step_0*step_1*...*step_n

如果步长相等,结果是P=步长^n

嗯,是的,你是对的,我只是说--大致上,为了更清楚、更明显,什么取决于什么。
 
Renat:

在最新的构建中,我们已经完全消除了任务启动时的系统开销,将其从近2000毫秒减少到零。

太棒了!哦,夏天在优化上浪费了多少时间......。

第一件事。在当前版本和319版本(2010年9月2日)上运行了joo的测试。 结果。

2010 12/229 15:49:18 测试者在2分41秒内通过测试
2010.12.29 15:49:18 测试仪优化完成,通过15360(100000020000001的)。
2010.12.29 15:49:18 测试结果缓存被使用7265次
2010.12.29 15:49:13 测试员遗传学结束了
2010.12.29 17:10:59 测试仪优化在1小时17分34秒内通过。
2010.12.29 17:10:59 测试员的遗传学优化完成于18176次(100000020000001次)。
2010.12.29 17:10:59 测试结果缓存被使用10582次
2010.12.29 17:10:52 测试员遗传学结束了

我甚至不知道是该祝贺还是感谢。谢谢你!

 
Urain:

而解决这个问题的办法,首先要解决这个问题。

如果优化通道的溢出已经发生在4个参数上,那么谈论增加参数的数量超过现在允许的数量(64)还不合适。

使用合理的方法进行搜索,但不要在 "俄罗斯人破坏日本电锯 "模式下将旋钮转到最大。

只要你开始在实际工作中应用遗传优化,你就会立即开始选择合理的限制。

 
Yedelkin:

太棒了!诶,夏天在优化上浪费了多少时间......。

按顺序排列。我在当前版本和第319个版本(2010年9月2日)上测试了它。

2010.12.29 15:49:18 测试仪优化在2分41秒内通过
2010.12.29 15:49:18 测试仪遗传优化在通过15360(100000020000001)时完成
2010.12.29 15:49:18 测试仪结果缓存被使用7265次
2010.12.29 15:49:13 测试仪遗传学结束
2010.12.29 17:10:59 测试仪优化在1小时17分34秒内通过
2010.12.29 17:10:59 测试仪遗传学在通过18176(100000020000001)时完成
2010.12.29 17:10:59 测试仪结果缓存被使用10582次
2010.12.29 17:10:52 测试仪遗传学已结束

我不知道是该祝贺还是感谢。谢谢你!

请注意,我们已经减少了 "从终端同步/传输初始数据到代理和从代理接收结果 "阶段的系统开销,这导致每次运行节省1.5-2秒。在语言本身中没有加速计算

也就是说,这最严重的影响是在高速计算中,计算所需时间接近零。对于大规模的计算,节约的效果不是很明显。虽然每10,000次运行可节省2秒,但有20,000秒=333分钟=5.5小时。

 
Renat:
它没有。

我已经注意到它有效果。我在工作日运行该EA,现在用扩大的点差运行它,结果很不一样,现在Eurobuck的点差大约是4点(四位数)。所以在mt5中,周末也有一些点差干扰,所以我不想在周末运行它,因为优化将不正确。我甚至可以在mt4中直观地看到,一个EA从周一开始优化,结果曲线从周末开始下降;这证明点差影响了优化结果,它们变得更糟。