算法优化锦标赛。 - 页 5

 
Andrey Dik:

一个简单的例子。优化算法挂在某个图表上。专家顾问 在内置测试器中通过全面搜索进行优化。因此,你可以使用你自己的优化算法,而不是常规算法。

另一个例子。专家顾问在图表中工作并进行交易。它在一段时间后将交易结果连同其参数一起保存到算法(可以在专家顾问内部或外部),并接收新的参数回来,然后继续交易(在你的情况下,我们需要运行一个历史运行,而在我的情况下,我们可以使用 "实时 "优化)。

以此类推。也就是说,在这些例子中,算法是完全独立于任务的。

我特意将这些例子应用于交易。我们是商人。

一些不寻常的事情。

专家顾问已经在测试器中进行了优化,那么这与你自己的优化算法有什么关系?

第二种情况更清楚一些。是的,如果你提供单一的独立调用,你可以一个一个地调用。而且你可以通过一个单独的过程一次完成。我明白了,但这是算法的复杂化,我们正在偏离锦标赛的目的。锦标赛的目的是优化算法,而不是其应用。有很多人不了解它,现在它变得更加复杂。

 
Andrey Dik:

在一般情况下,像这样,当然也会有一个记时的计数器。 纲要。

在这段代码中,它不是一次性的调用,而是将算法的主要部分放在外面,并将部分算法强加给参与者。在原来的条件下,参与者有权隐藏整个算法。
 
Dmitry Fedoseev:

1.一些不寻常的事情。专家顾问的优化已经在测试器中运行了,它与自己的优化算法有什么关系?

2.第二种情况更清楚一些。是的,如果你提供单一的独立电话,你可以一个一个地打电话给他们。而且你可以通过一个单独的过程一次完成。我明白了,但这是算法的复杂化,偏离了锦标赛的目的。锦标赛的目的是优化算法,而不是其应用。有很多人没有理解它,现在它变得越来越复杂。

1.没有什么出格的事情,这只是一个真实的生活情况。一个内部测试员进行一次又一次的运行(一个参数--计数器被接管),我们控制所有参数的优化,而且数量不限。

2.我们决定使用2种变体与FF合作。所以一切都很好,没有问题,谁想要,谁就会使用优化。

参与者可以自由选择使用哪一个测试脚本,是第一个还是第二个。

 
Dmitry Fedoseev:
在这段代码中,它不是一次性调用,而是将算法的主要部分移到外面,将部分算法强加给参与者。根据初始条件,参与者有权利隐藏整个算法。

那里的强迫性在哪里呢?问算法多少次,算什么,参与者的算法决定这种事情。算法在架构上可以与同一种GA有很大不同,这个例子允许在任何工作原理上使用一个算法。

我在那里展示了服务功能--如果参与者不需要,它们可以是空的。

 
Andrey Dik:

那里的强迫性在哪里呢?问算法多少次,算什么,参与者的算法决定这种事情。算法在架构上可以与同一种GA有很大不同,这个例子允许在任何工作原理上使用一个算法。

我在那里展示了服务功能--如果参与者不需要,它们可能是空的。

只要给参与者一个指向函数的指针或指向有方法的对象。这是第三个千禧年。
 
同时将允许的ff调用次数传递给参与函数,这样就可以分配好历时的数量和个体的数量。
 
Dmitry Fedoseev:
同时,在参与人函数中传递允许的FF调用次数,这样我们就可以分配历时数和个体数。

例如,该算法被告知,你最多可以有100次FF调用...啊哈!--他(算法)想,我要欺骗大家,叫出50个音符的音乐,我只叫50次FF。:)

不,让他按自己的需要去数。而我们将决定何时停止它。毕竟,FF电话的数量将被评估为工作质量的一个指标。

 
Andrey Dik:

例如,该算法被告知,你最多可以有100次FF调用...啊哈!--他(算法)想,我要欺骗大家,叫出50个音符的音乐,我只叫50次FF。:)

不,让他按自己的需要去数。而我们将决定何时停止它。毕竟,FF被调用的次数将被判断为衡量业绩的标准。

狡猾地称其为少时,有什么意义呢?你可以少做,你不能多做。问题是什么?

FF函数对呼叫进行计数。如果超过了允许的范围,则取消资格。

 

这大致是一个会员库的模板。

#property library
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

class CFF{
   public:
   virtual double fun(double & x[]){return(0);}
   virtual string type(){return("");}
   virtual double value(){return(0);}
   virtual string note(){return("");}
};

здесь участник пишет свои классы, если надо 

void function(CFF * aff,int n,double & params[],double & value) export{

    Здесь участник пишет свой код и вызывает функцию так - aff.value(x); // x - это массив double

//по окончанию поиска вернуть params (параметры соответствующие лучшему результату), value (лучший результат)

}

здесь участник создает свои вспомогательные функции
 
Dmitry Fedoseev:

这么狡猾的人,少打几次电话有什么用?你可以少做,你不能多做。有什么问题呢?

ff函数对调用进行计数。如果允许更多,则取消资格。

更少的f跑是更好的,这就是问题所在。这可能有点棘手。

不需要限制算法,让它算。要么它自己决定停止,要么被强行制止。该算法不需要知道多少次运行是上限--没有人会知道上限。不会有取消资格的情况发生。该算法将按照它的能力来解决这个问题。

唯一不合格的是试图保存结果并在随后的检查脚本运行中使用它们。