寻找局部极值的最佳算法是什么?
粗略地说,我们需要生成一个参数列表,这些参数最好能落入局部极值(顶点)。
以刺猬为例,显示其针尖的坐标。
对于任何全局搜索任务,表格顶端的任何算法都能发挥最佳效果。如果您知道函数是平滑或离散的,您可以单独选择最合适的算法,或者根据问题中优化参数的数量选择最合适的算法。
通常情况下,不要将问题设置为必须找到局部极值,因为在大多数实际问题中,局部极值的数量是未知的(如果不是这样,使用分析方法会更容易),而全局极值的数量是已知的--一个(如果有几个全局极值的值相同,就相当于它是一个)。这就是为什么问题的设置通常会使函数尽可能具有单调性,误差最小化就是一个例子。
在一般情况下,我不知道有什么算法可以解决搜索局部的问题,而且很少有针对特定问题编写特定算法的权宜之计。在这种情况下,我会考虑如何表示 FF 来解决问题。可能会有不同的方法,比如使用 AO 作为聚类的附加功能。解决问题的另一种方法是将 FF 分成假设的 "层",从全局最小值到全局最大值(必须事先找到),然后按顺序检查每一层,也就是说,您需要为 AO 制作一个批处理任务管理器。
总之,我要让你失望了--目前还没有解决搜索局部极值问题的通用算法。修改 FF 比制作特殊算法更容易。
3. 为当前迭代选择有效参数的算法无关紧要,允许改变优化的范围和步骤
1.好吧,AO 并不关心向其提交多少参数和什么参数进行优化,因此您可以向 AO 提交所有参数,也可以不提交所有参数。
2.2. 您可以单独、联合、顺序和组合应用任何算法。我尽量使文章中的算法统一。
3.原则上,所介绍的任何算法都可以在优化过程中直接调整。您只需修正初始化,使累积种群不被重置。例如,可以根据已过的时间减少(或增加)优化参数的步长。
这绝对是反科学的! )))))不过很聪明。
我在想,有一些算法的 "团块化 "程度很高,当种群倾向于按地域划分为不同群体时,例如 IWO、COA、ABC、BFO,这些算法的种群可以通过测量代理之间的欧氏距离来分析代理团块(AO 中的逻辑搜索单元称为代理),即搜索代理之间距离最小的代理群体。
您还可以尝试在 COA、HS 或 MA 等回滚(当一个代理从同一位置向不同方向反复尝试搜索时)算法中设置一个尝试计数器,通过多次迭代对群体状态进行切分,尝试次数最多的代理将成为局部极值。MA 和 BFO 本身就有这样一个计数器。
也就是说,我说过没有精确的方法来搜索局部极值(搜索全局极值在这方面可以被认为是 "精确的"),但你可以像我上面描述的那样进行近似搜索。要获得精确的解决方案,您需要知道 FF 的差异信息。
ZЫ. 向所有对此感兴趣的人提出一个有趣的问题:局部极值和全局极值(不考虑它们在 FF 值上的差异)之间有什么区别?
ZZY 在回答了第一个问题之后,许多问题就会自行消失。
新文章 种群优化算法:树苗播种和成长(SSG)算法已发布:
树苗播种和成长(SSG)算法的灵感来自星球上最具韧性的生物之一,在各种条件下都表现出杰出的生存能力。
该算法是少数几个没有作者明确讲述的算法之一(仅提供一般规定和思路)。 由作者提出的算法操作符,算法也没有现成的程序指令实现。 没有关于子树和父树、及其交互的明确说明。 对于操作符的执行顺序没有要求,任何用户都可以更改其顺序,从而能获得更好的幼苗。
从广义上讲,SSG 并非是一种优化算法,它是一组通用规则,旨在补充其它算法,从而提高优化品质。 换言之,SSG 是任何种群进化算法的附加组件,如此我就有了想象的空间,并有机会尝试优化算法的特定实现。 我在编写以前的算法时应用了自己的一些想法和经验,并使用它们与 SSG 配合工作。 实验结果如下,供读者判断。
为了开始理解算法,我们需要将这棵树想象为优化代理者。 一棵树是优化问题的解,其中每个枝杈都是问题的优化参数。 图例 1 提供了子树和父树的抽象和艺术描绘图。 树干是一组要优化的参数。 每个枝杈都是一个单独的优化参数,其中枝杈的长度受相应参数的允许值范围的限制。 枝杈的方向无关紧要,仅在图中显示来高亮显示它们的差异。
作者:Andrey Dik