文章 "遗传算法 - 很简单!"

 

新文章 遗传算法 - 很简单!已发布:

在本文中,笔者将讨论利用亲自开发的遗传算法进行的进化计算。笔者将通过示例说明算法的功能,并为算法的使用提供实用性的建议。

作者:Andrey Dik

 

大家好!

希望你们喜欢这篇文章。

我将很高兴听到您关于如何将 UGA 转换为 OOP 的建议。

 

我想看看

 MathSrand((int)TimeLocal());

优化后是否有效?

您在测试器中运行过您的程序库吗?

 
zigan :

1) 我想知道这是否会

MathSrand((int)TimeLocal());

优化后是否有效?

2) 您在测试器中运行过您的库吗?

1) 我看不出有什么理由不能运行。

2) 对于这个简单的问题,您无法用两句话给出详尽的答案。

交易者的优化问题可以有条件地分为两类:a) "局部问题 "和 b) "全局问题"。

a) 局部问题--交易者/TS 在每个 交易日执行的所有操作的集合(反过来也可分为局部任务)。文章中的第一个任务(解方程、选择最优期权价格和其他类似任务)就是这种类型的一个例子。它们不需要 "未来 "的价格历史。

b) 全局任务 - 优化所有局部任务的某些函数(可以是报告期内的总利润、缩减、MO 等)。需要优化期间的全部价格历史记录。内部测试人员执行的正是这类任务。

UGA 的设计不依赖于标准测试仪,可用于全局和局部任务,无需更改算法代码,包括 "自制 "测试仪。在标准测试仪的框架内,UGA 仅可用于局部任务,无需更改。对于全局任务,则必须在测试仪中进行修改。

我还没有在有自己优化算法的测试仪中使用优化算法的需要。

请概括描述您的任务,我们将在此考虑解决方法。

 

谢谢你,--有趣的工作!

关于遗传算法 的实际应用出现了一些问题

论文描述了

- 寻找给定区间内两个变量函数的最大值/最小值

- 寻找利润函数的最大值(以 ZigZag 为例)。

请举例说明该算法在实际交易任务中的应用。

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
joo :

请概括描述您的问题,我们将在此探讨解决问题的方法。

问题很简单:我希望每次运行测试器时,srand() 函数都能将发生器设置为随机起点。

结果发现,MathSrand((int)TimeLocal()) 会在多次运行测试仪时将发生器设置为之前(相同)的初始状态。

 
zigan :

任务很简单:我希望每次运行测试器时,srand() 函数都能将生成器设置为随机起点。

事实证明,MathSrand((int)TimeLocal()) 会在测试仪的不同多次运行中将发生器设置为先前(相同)的初始状态。

TimeLocal 以秒为单位给出时间。测试时,它将是相同的生成测试时间。

尝试使用GetTickCount。老实说,它给出的是毫秒数,不会模拟任何东西。

 
stringo :

测试时,生成的测试时间相同。

О!谢谢。

 
yu-sha :

谢谢你,--有趣的工作!

关于遗传算法 的实际应用出现了一些问题

论文描述了

- 寻找给定区间内两个变量函数的最大值/最小值

- 寻找利润函数的最大值(以 ZigZag 为例)。

请举例说明该算法在实际交易任务中的应用。

一般来说,经济任务,尤其是交易任务,大多具有优化性质。

交易者一直在寻找其 TS 的最佳参数。以下是 UGA 可以帮助解决的任务类型的不完整列表:

-寻找指标的最佳参数

-寻找 MM 的最佳参数

-寻找指标中滤波器(任何滤波器,包括寻找数字滤波器中的系数)的最佳设置

-训练任意拓扑结构和任意大小的神经网络

-训练任意拓扑结构和任意大小的网络委员会。(委员会是一组相互独立的网络)。

UGA 既可用于单独解决上述任务,也可一次解决所有任务。 因此,为了帮助您了解 UGA 的强大功能,我要说的是,解决列表中最后一类任务的可能性允许您创建大脑模型(正如您所知道的,大脑由多个部门组成)。

任务列表可以很长,看看论坛上的主题就知道了。

您还可以找到方程的根。:)
 

很酷的东西,写得很好。我自己也玩过遗传优化,但遗憾的是,我发现它的好处并不多。遗传优化通常被认为是一种全局优化方法。如果你有足够的时间来处理非常大的菌落,这的确没错,但当时间(菌落大小)有限时,GA 就会像梯度下降法一样,收敛到局部最小值,而且速度相当慢。当然,与钝化搜索所有可能的输入参数组合的方法相比,GA 在速度上具有不可否认的优势。GA 的广泛应用之一是训练具有大量系数的多层神经网络。这种网络有大量的局部最小值。出于某种原因,GA 被认为是解决这一问题的良方。但事实上,"良方 "就是所应用的工具,也就是本例中的多层网络。选择另一种分类准确率高的工具(如买入/卖出/持有)或回归外推法进行简单明了的优化要容易得多;-)。

 
gpwr :

1) 东西很酷,写得很好。

2) 我自己也在玩遗传优化,但遗憾的是,我并没有发现什么好处。GA通常被认为是全局优化的一种方法。如果你有足够的时间来处理非常大的菌落,这的确没错,但当时间(菌落大小)有限时,GA 就会像梯度下降法一样,收敛到局部最小值,而且速度相当慢。 当然,与钝化搜索所有可能的输入参数组合的方法相比,GA 在速度上具有不可否认的优势。GA 的广泛应用之一是训练具有大量系数的多层神经网络。这种网络有大量的局部最小值。出于某种原因,GA 被认为是解决这一问题的良方。但事实上,"良药 "是应用的工具,即本例中的多层网络。选择另一种能进行高精度分类(如买入/卖出/持有)或回归推断的工具,并进行简单明了的优化,会容易得多;-)。

1) 感谢您的美言。

2) 我并不怀疑你对这一主题的了解,但你仍然需要一些使用遗传算法的技巧(文章 "使用 UGA 的建议 "部分的第 4 条建议)。

UGA 是作为一种通用工具开发的,可用于任何优化问题(文章 "历史回顾 "部分),无需对算法进行任何修改。它可以最大限度地用于进一步修改和添加特定运算符。你知道有多少优化算法具有这样的特性吗?

我不知道为什么 GA 被认为是解决各种优化问题的灵丹妙药,我个人不这么认为,也从未在任何地方说过。当然,对于每项具体任务,你都可以从执行速度和最终结果两方面选择最佳优化工具。UGA 有一个不同的目标--通用。

我在 MQL4 论坛主题"测试多变量多极限函数 " 中发布了一些有趣的测试函数,文章中介绍了其中一个。

如果您愿意,可以尝试使用 GA 以外的其他优化算法找到所提议函数的极值,并将结果发布在这里。欢迎您这样做。这对每个人来说都会很有趣,对我来说更是如此。

PS 我建议您了解一下文章中提出的算法,以便对相反的观点(粗体字)深信不疑,尽管我无意说服任何人。

祝您研究顺利!

Тестовая многопеременная многоэкстремальная функция. - MQL4 форум
  • www.mql5.com
Тестовая многопеременная многоэкстремальная функция. - MQL4 форум