matlab sll,我用Matlab的fmincon,fval是最优但x显示仍然是初始值??

求助各位高手帮忙看看我的code!!感激涕零啊!!!

function f=nsllh(x)

close=xlsread('HW_3_Part2Data','#3','D3:D1257');

nvix=xlsread('HW_3_Part2Data','#3','H4:H1257');

alpha=zeros(1,1);beta=zeros(1,1);theta=zeros(1,1);gamma=zeros(1,1);

x=[alpha,beta,theta,gamma];

r=zeros(1254,1);

for i=1:1254

r(i+1,1)=log(close(i+1,1)/close(i,1));

end

sigma=var(r);

omega=sigma*(1-alpha*(1+theta^2)-beta);

npsigma=ones(1254,1);

npsigma(1,1)=sigma;

for i=1:1253

npsigma(i+1,1)=omega+alpha*(r(i,1)-theta*npsigma(i,1)^0.5)^2+beta*npsigma(i,1)+gamma*nvix(i,1)^2/252;

end

alpha=x(1);beta=x(2);theta=x(3);gamma=x(4);

for i=1:1254

nllh(i,1)=0.5*log(2*3.1415926)+0.5*log(npsigma(i,1))+0.5*(r(i,1)^2/npsigma(i,1));

end

f=sum(nllh);

另外nonlcon的code是:

function [c,ceq]=mycon(x)

alpha=zeros(1,1);beta=zeros(1,1);theta=zeros(1,1);

x=[alpha,beta,theta];

c=alpha*(1+theta^2)+beta-1;

ceq=[];

run出来显示:

x0=[0.04;0.5;2;0.07];

Optimization terminated: first-order optimality measure less

than options.TolFun and maximum constraint violation is less

than options.TolCon.

No active inequalities.

x =

0.0400

0.5000

2.0000

0.0700

fval =

-3.6963e+003

exitflag =

1

output =

iterations: 1

funcCount: 10

stepsize: 1

algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'

firstorderopt: 0

cgiterations: []

message: [1x144 char]

lamda =

lower: [4x1 double]

upper: [4x1 double]

eqlin: [1x0 double]

eqnonlin: [1x0 double]

ineqlin: [1x0 double]

ineqnonlin: 0

??为什么会这样呢?fval已经改变了但是x不会变?而且iteration只有1.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值