声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1079|回复: 1

[综合讨论] 求助!fmincon非线性约束,迭代时条件无法满足!

[复制链接]
发表于 2009-3-16 19:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
求助!
在调用fmincon时,我加入了非线性约束,其中有一个约束相当于
a=diag(param(5:8)) - reshape(param(17:32),4,4);
然后要求 eig(a)>0
但是我在程序运行过程中,一直出现错误,会使得eig(a)<0.。这是为什么啊??
搞了好久了,还是没弄明白怎么回事。。。
下面是我调用fmincon的程序,然后全部程序在附件中
我选用了初始值:param0=[
2.808032
0.367534
0.959048
0.100000
71.057371
0.100092
0.281932
0.100000
0.944699
0.212290
0.805673
0.100000
1.042629
-0.155304
-0.480896
0.100000
70.057371
0.000000
0.000000
0.000000
0.000000
-0.899908
0.000000
0.000000
0.000000
0.000000
-0.718068
0.000000
0.000000
0.000000
0.000000
-0.900000
0.150872 ]


function  [param,fval,exitflag,output,lambda,grad,hessian]=kalman_extcir4(param0)


options=optimset('Display','iter','maxfunevals',inf,'maxiter',4000,'LargeScale','off');

lb=repmat(-300,33,1);
ub=repmat(300,33,1);
lb(5:8)=0.0000001;
lb(9:12)=0.0000001;
lb(18:21)=0.00001;
lb(23:26)=0.00001;
lb(28:31)=0.00001;
lb(33)=0.0000001;
ub(33)=1;
[param,fval,exitflag,output,lambda,grad,hessian]=fmincon(@kalfun_extcir4,param0,[],[],[],[],lb,ub,@mycon,options);


function [c,ceq]=mycon(param)

ktQ=reshape(param(1:4),4,1);
kQ=diag(param(5:8));
lamda1=reshape(param(13:16),4,1);
lamda2=reshape(param(17:32),4,4);
ktP=ktQ+lamda1;
kP=kQ-lamda2;
if det(kP)==0
    logfun=0;
    return
end
ev=-eig(kP)+[0.0001;0.0001;0.0001;0.0001];%------------------------------就是这个约束一直无法满足
ctemp=-inv(kP)*ktP+[0.000001;0.000001;0.000001;0.000001];%------------------------------还有这个约束经常也无法满足

c=zeros(15,1);
c(1)=0.5*param(9).^2 - param(1)+0.000001;%
c(2)=0.5*param(10).^2 - param(2)+0.000001;
c(3)=0.5*param(11).^2 - param(3)+0.000001;
c(4)=0.5*param(12).^2 - param(4)+0.000001;
c(5)=0.5*param(9).^2 - param(1)- param(13)+0.000001;
c(6)=0.5*param(10).^2 - param(2)- param(14)+0.000001;
c(7)=0.5*param(11).^2 - param(3)- param(15)+0.000001;
c(8)=0.5*param(12).^2 - param(4)- param(16)+0.000001;
c(9:12)=ev;
c(12:15)=ctemp;
c=c;
ceq=0;

[ 本帖最后由 kevin_sky 于 2009-3-16 19:52 编辑 ]

data.mat

156.97 KB, 下载次数: 0

kalfun_extcir4.m

4.6 KB, 下载次数: 0

cms23d4.m

2.98 KB, 下载次数: 0

CIRODE4.m

553 Bytes, 下载次数: 0

kalman_extcir4.m

2.46 KB, 下载次数: 0

回复
分享到:

使用道具 举报

 楼主| 发表于 2009-3-16 19:48 | 显示全部楼层
求求各位大侠了!搞了很久了,还是不行~~~~
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 18:23 , Processed in 0.056346 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表