【问题标题】:Optimization of multivariable function In MatlabMatlab中多变量函数的优化
【发布时间】:2015-03-02 23:39:56
【问题描述】:

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

感谢您的帮助

【问题讨论】:

  • 你的标题的第一个谷歌结果是fminsearch,试试看。
  • 我已经看过 fminsearch 但不知道如何使用它,因为我的搜索空间是离散点(我有它们)并且我有 3 个变量。如何让 fminsearch 从这些给定点中进行选择?
  • 我有一个组合优化问题。
  • 鉴于您的搜索空间非常小,在所有网格点评估fun,然后使用min 应该没问题。
  • 那么假设您的fun 足够平滑,请进行非整数优化,然后查看周围的整数点到最小值,这应该给您最小值(假设您的函数足够平滑) .任何比这更复杂的东西都可能超出 SO 答案的范围。

标签: matlab optimization


【解决方案1】:

算法

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

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

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

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

离散优化

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

希望我的回答对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2016-03-06
    • 2023-03-10
    • 2019-12-28
    • 1970-01-01
    相关资源
    最近更新 更多