Matlab@fminunc目标函数优化

Matlab@fminunc目标函数优化,matlab,function,optimization,maximize,Matlab,Function,Optimization,Maximize,我目前正在Matlab中练习一个简单的函数优化,希望您能对以下错误提供一些帮助/解释: %quadramin.m function z=quadramin(param,data); z=data.*(param(1).^2 - param(2).^3)+3; %quadramin_lik.m function quadlik = quadramin_lik(param,data); %pseudo/ad-hoc log-likelihood function quadlik = quadram

我目前正在Matlab中练习一个简单的函数优化,希望您能对以下错误提供一些帮助/解释:

%quadramin.m
function z=quadramin(param,data);
z=data.*(param(1).^2 - param(2).^3)+3;

%quadramin_lik.m
function quadlik = quadramin_lik(param,data);
%pseudo/ad-hoc log-likelihood function
quadlik = quadramin(param,data)- 10;

%script.m
data=trnd(5,6,1);
param0=[2,3];
[param_eq,exitflag,output,grad,hessian] = ... 
fminunc(@(param) quadramin_lik(param,data),param0)
使用fminunc执行%script.m:错误后的输出(第333行) 用户提供的目标函数必须返回标量值。

ps:这看起来很矛盾,因为用户定义的函数quadramin&&quadramin_lik确实返回值


谢谢

这两个函数都返回一个值向量,而
fminunc
要求函数返回一个标量/单个值。错误很明显。函数
fminunc
试图找到使成本函数最小化的最佳解决方案,因此您需要提供的是成本函数


因此,在返回每个函数之前,可以尝试将结果求和。。。。但这样做并不能保证全局最小值,因为fminunc假设您的成本函数是凸的。然而,从您在计算日志可能性时的评论来看,不管怎样,求和都是您应该做的事情

这两个函数都返回值向量,而
fminunc
要求函数返回标量/单个值。错误很明显。函数
fminunc
试图找到使成本函数最小化的最佳解决方案,因此您需要提供的是成本函数。因此,在返回每个函数之前,可以尝试将结果求和。。。。但是这样做并不能保证全局最小值,因为
fminunc
假定代价函数是凸函数。将伪对数样函数求和以返回标量/单个值确实有效。谢谢你的评论。最后,如果我想使用@fmincon,设置
lb=[0,2],ub=[0,+inf]
if
0I不知道你的线性程序是如何设置的,所以我不能评论你编写的代码是否正确。这本来不重要,但我非常感谢提出并解决的主要标量问题,因为我猜不出这个错误的原因。干杯