我有一个函数fun(x,y,z),例如,x = 1:10,y = 50:60,z = 100:105。我可以使用哪种优化方法(以及如何)来获得此函数的最小值,例如,其中(x,y,z)=(3,52,101)。我在Matlab工作。
感谢您的帮助
答案 0 :(得分:0)
有许多算法可用于直接搜索优化,如Nelder-Mead,粒子群,遗传算法等。
我相信Nelder-Mead是一种单纯形优化方法,由fminsearch函数在MATLAB中使用。
此外,MATLAB全局优化工具箱附带Genetic Algorithm。您可能也想尝试一下。
粒子群优化(PSO)是您可以使用的另一种直接搜索方法。但是,没有Mathworks构建的粒子群方法的官方工具箱。好消息是,其他人开发了相当多的PSO工具箱。我个人使用过this one,对表现非常满意。其语法类似于Global Optimization Toolbox附带的遗传算法功能。
关于你正在寻找一组整数值即x,y和z对应于最小目标函数值的问题,我会在目标函数的开头添加一个部分,将变量舍入到最接近的位置整数,然后将它们提供给您的主函数fun(x,y,z)
。这样你就可以离散你的功能空间。
我希望我的回答有所帮助。