Вводная статья об алгоритмах оптимизации (АО). Классификация. В статье предпринята попытка создать тестовый стенд (набор функций), который послужит в дальнейшем для сравнения АО между собой, и, даже, возможно, выявления самого универсального алгоритма из всех широко известных.
在某些情况下,完全暴力搜索无法找到最佳值,因为暴力网格的节点不在最佳值上。
Maxim Dmitrievsky #:
1. Какой-нибудь конкретный критерий оценки кач-ва оптимизации есть?)
2. 如果算法需要更多的迭代次数,是不是就不好了?
1. 10 000 次访问的限制并不是 "天花板"。MetaTrader 5 优化器从实际角度出发,将这一数字作为最佳值。这个数字被用作实用性的参考界限。您可以进行更多调用,但如果您可以使用更强大的算法并更快地实现相同的结果,为什么还要浪费时间和资源呢?这个数字是一个阈值,用于比较不同的算法。
这说明了应考虑的算法质量:
收敛的准确性
结果的可重复性(稳健性)
可扩展性(随着问题维度的增加而继续高效工作的能力)。
2.2. 如果使用随机点生成,是否需要大量调用 FF?
3. 如果在一次完整搜索中对 FF 的访问次数在合理范围内,那么就应该使用它。例如,如果只需要 200 次访问,为什么还需要 AO?
在某些情况下,完全暴力搜索无法找到最佳值,因为暴力网格的节点不在最佳值上。
完全正确。而网格的缩小将导致对 FF 的调用逐步增加。这就是在时间和资源限制下,AO 在现实生活中的实际应用领域。
1.
1.你可以质疑任何事情,但从完整的源代码和正确的可重复测试的角度出发,总是更有建设性。
2.如果你让 90 亿人随机地把手指伸进一张白纸上,函数的表面就隐藏在白纸后面,那么你就可以在二维巨城上得到一个最优结果(其中一个人最后肯定会非常接近全局,并会说他是成功解决了这个问题的人)。但是,我们需要找到最优解,而不是在 90 亿次尝试中随意捅一捅,而是在 10000 次尝试中使用一种策略。
在一系列独立测试中,平均结果越高(结果的稳定性、可重复性),在特定类型的问题上,所测试的方法与随机捅解相比就越高(在某些问题上,某些方法与随机捅解没有太大区别,而在另一些问题上,它们却非常有效)。
这就是测试和比较不同算法的意义所在。对于不同的算法,不是只用一个测试函数,而是用三个不同性质的测试函数作为基准,这样就能清楚地看到不同算法在不同任务中的适用性,以及它们在不同任务中的局限性和能力。这样就能以一种有意义的方式来解决优化问题。
今后,我更愿意回答有关文章内容和代码的具体问题。
我们采用局部优化方法,将其应用于全局问题,并与全局优化方法进行比较。这就是我要说的。
我说的是如何将这些方法用于全局优化。最简单的方法就是增加初始化的次数。
如果我没理解错的话,亚当等人是为了提高速度而不是质量。
如果以时间而不是迭代次数为限制,看看评分结果会很有趣。
如果我没理解错的话,亚当等人追求的是速度,而不是质量。
如果以时间而不是迭代次数为限制,看看评分结果会很有趣。
ADAM 系列算法(AdamW、RAdam、AdaBelief 等)以及 SGD、SGRAD 和其他算法(有很多)是作为经典梯度法的现代替代方法而开发的,旨在解决大维度问题,无需了解分析公式,通常用于训练神经网络(它们各有优缺点)。谷歌(2023 年)也推出了一些有趣的雄狮方法,还有其他一些最新方法。这个话题非常值得研究,尤其是在训练神经网络的背景下,在一些简单的例子(也可能是复杂的例子)上建立一个目标曲面并进行实验(解析其内部结构、深入研究各种方法的特性、仔细评估它们的能力--一切随心所欲)将会非常有用,而且信息量很大。
有了时间限制,就没有什么可约束的了。在这种情况下,我们如何比较算法呢?这就是为什么我们使用命中次数限制,并在此限制内比较效率的原因。
有了时间限制,就没有什么可绑定的了。在这种情况下,我们如何比较他们之间的算法?这就是为什么我们使用命中次数限制,并在此限制内比较效率的原因。
绑定作者的 PC。以 ANS 的 10000 次迭代时间为基础。
我在 fxsaber代码 上的结果:
PS 代码大小作为附加指标(算法实现的复杂程度)