如何在 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
还接受场景参数 s1
和 s2
:
function f = objective(x, s1, s2)
现在,如何告诉求解器只优化 x
并忽略 s1
和 s2
的输入参数?
我觉得应该是这样的
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 )
我有一个 objective 函数 fun
,其中输入参数 x
应该被 particleswarm()
优化:https://de.mathworks.com/help/gads/particleswarm.html
我想为定义的场景找到 x
的最佳值。因此,除了 x
函数 fun
还接受场景参数 s1
和 s2
:
function f = objective(x, s1, s2)
现在,如何告诉求解器只优化 x
并忽略 s1
和 s2
的输入参数?
我觉得应该是这样的
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 )