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、粒子群、遗传算法等。
我相信 Nelder-Mead 是一种单纯形优化方法,它被 MATLAB 中的 fminsearch 函数使用。
另外还有Genetic Algorithm是MATLAB全局优化工具箱自带的。您可能也想尝试一下。
粒子群优化 (PSO) 是您可以使用的另一种直接搜索方法。但是,Mathworks 没有为 Particle Swarm 方法构建的官方工具箱。好消息是有很多其他人开发的 PSO 工具箱。我个人使用过 this one 并且对性能非常满意。它的语法类似于 Global Optimization Toolbox 附带的遗传算法函数。
离散优化
关于你正在寻找一组整数值,即与最小 objective 函数值相对应的 x、y 和 z 的问题,我会在 [=38] 的开头添加一部分=] 函数将变量四舍五入为最接近的整数,然后将它们提供给您的主函数 fun(x,y,z)
。这样你就可以离散化你的函数 space.
希望我的回答对您有所帮助。
我有一个函数 fun(x,y,z),比如 x=1:10,y=50:60,z=100:105。我可以使用哪种优化方法(以及如何)来获取此函数的最小值,例如,其中 (x,y,z)=(3,52,101)。我在 Matlab 工作。
感谢您的帮助
算法
有许多算法可用于直接搜索优化,例如 Nelder-Mead、粒子群、遗传算法等。
我相信 Nelder-Mead 是一种单纯形优化方法,它被 MATLAB 中的 fminsearch 函数使用。
另外还有Genetic Algorithm是MATLAB全局优化工具箱自带的。您可能也想尝试一下。
粒子群优化 (PSO) 是您可以使用的另一种直接搜索方法。但是,Mathworks 没有为 Particle Swarm 方法构建的官方工具箱。好消息是有很多其他人开发的 PSO 工具箱。我个人使用过 this one 并且对性能非常满意。它的语法类似于 Global Optimization Toolbox 附带的遗传算法函数。
离散优化
关于你正在寻找一组整数值,即与最小 objective 函数值相对应的 x、y 和 z 的问题,我会在 [=38] 的开头添加一部分=] 函数将变量四舍五入为最接近的整数,然后将它们提供给您的主函数 fun(x,y,z)
。这样你就可以离散化你的函数 space.
希望我的回答对您有所帮助。