背景: 我正在尝试寻找一组浮点参数列表,用于低级控制器,以在机器人行走时保持平衡。
问题: 有没有人能推荐一些适合我所描述领域的局部搜索算法?对我来说最重要的标准是快速收敛到正确解的速度。
任何帮助都将不胜感激!
P.S. 我也进行了一些研究,发现“进化策略”算法非常适合连续状态空间。然而,我并不完全确定它们是否适合我的特定问题。
更多信息: 我正在优化8个参数(虽然我可以将参数数量减少到4个)。我有一个模拟器,我的标准是试验次数的速度,因为模拟重置成本高(平均需要10-15秒)。
回答:
对于低维度(最多约10维左右),最佳的局部搜索算法之一是Nelder-Mead单纯形方法。顺便说一下,它被用作MATLAB的fminsearch
函数的默认优化器。我个人使用这种方法来寻找一些教科书中二阶或三阶动态系统的参数(虽然非常简单)。
另一个选项是已经提到的进化策略。目前最好的一个是协方差矩阵适应ES,或CMA-ES。这个算法有变体,例如BI-POP CMA-ES等,可能比原始版本更好。
你只需要尝试找出最适合你的方法。