Matlab中多变量函数的优化

Optimization of multivariable function In Matlab

我有一个函数 fun(x,y,z),比如 x=1:10,y=50:60,z=100:105。我可以使用哪种优化方法(以及如何)来获取此函数的最小值,例如,其中 (x,y,z)=(3,52,101)。我在 Matlab 工作。

感谢您的帮助

算法

有许多算法可用于直接搜索优化,例如 Nelder-Mead、粒子群、遗传算法等。

  1. 我相信 Nelder-Mead 是一种单纯形优化方法,它被 MATLAB 中的 fminsearch 函数使用。

  2. 另外还有Genetic Algorithm是MATLAB全局优化工具箱自带的。您可能也想尝试一下。

  3. 粒子群优化 (PSO) 是您可以使用的另一种直接搜索方法。但是,Mathworks 没有为 Particle Swarm 方法构建的官方工具箱。好消息是有很多其他人开发的 PSO 工具箱。我个人使用过 this one 并且对性能非常满意。它的语法类似于 Global Optimization Toolbox 附带的遗传算法函数。

离散优化

关于你正在寻找一组整数值,即与最小 objective 函数值相对应的 x、y 和 z 的问题,我会在 [=38] 的开头添加一部分=] 函数将变量四舍五入为最接近的整数,然后将它们提供给您的主函数 fun(x,y,z)。这样你就可以离散化你的函数 space.

希望我的回答对您有所帮助。