如何在 MATLAB 的全局优化工具箱中定义要优化的 objective 函数变量?

How to define the objective fucntion's variables to be optimized in MATLAB's global optimization toolbox?

我有一个 objective 函数 fun,其中输入参数 x 应该被 particleswarm() 优化:https://de.mathworks.com/help/gads/particleswarm.html

我想为定义的场景找到 x 的最佳值。因此,除了 x 函数 fun 还接受场景参数 s1s2:

function f = objective(x, s1, s2)

现在,如何告诉求解器只优化 x 并忽略 s1s2 的输入参数?

我觉得应该是这样的

out = particleswarm(@(x)fun(x,s1,s2))

对于像 fminunc 这样的内置优化器,您就是这样做的

编辑:那么,如果我没看错的话,particleswarm是你自己写的优化器,那么particleswarm的函数定义就是

function [ out ] = particleswarm( func )

或者,如果您正在做类似 BFGS 的事情,您需要有一个初始猜测 x0,它会改变优化函数,您可以使用

调用优化器
out = particleswarm(x0, @(x)fun(x,s1,s2))

函数定义为

function [ out ] = particleswarm(x0, func )