在我遇到的非线性约束优化问题上运行GlobalSearch求解器时,每次运行时我经常得到非常不同的解。对于我有解析解的情况,数值结果比非分析情况分散得少,但每次运行仍然不同。至少对于这些分析案例,获得相同的结果会很好,这样我就知道优化例程正常工作。我错过了“全局优化工具箱用户指南”中对此有一个很好的解释吗?
另外,为什么GlobalSearch每次运行使用不同数量的本地解算器运行?
谢谢!
答案 0 :(得分:0)
可以找到有关GlobalSearch算法如何工作的完整描述Here。
总之,GlobalSearch方法迭代地执行凸优化。基本上,它首先使用fmincon在您提供的初始条件附近搜索局部最小值。然后,使用"散射搜索算法生成一堆基于初始结果有多好的试验点""#34;然后有一些更凸的优化和评级"多好"这些点周围的最小值是。
有几件事可以导致算法给出不同的答案: 1.改变你给出的初始条件 2.分散搜索算法本身
每次获得不同答案的事实可能意味着您的功能非常不凸。在这种情况下,我所知道的最好的事情就是在几个不同的初始条件下尝试优化算法,看看你最常回到什么结果。
看起来还有一种叫做“PlotFcns”的东西。该属性可以让您更好地了解求解器为您生成的函数。
答案 1 :(得分:0)
您可以在GlobalSearch api中使用ga或gamulti目标函数。我会推荐这个。凸优化器将无法解决非线性问题。即使这样,遗传算法也无法保证解决方案。如果您运行ga,然后将其最终最小值用作fmincon搜索的开始,那么它将始终产生相同的答案。可能会有更好的选择,但是如果搜索空间未知,您可能永远不会知道。