马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
mycono.m
(355 Bytes, 下载次数: 7)
o.m
(1.06 KB, 下载次数: 8)
当B1=2,B2=30,时运行到一半会停住,当改变B1 B2的值,如B1=2,B2=0.3,可以运行,不明白怎么回事,另外想尝试1stOpt解,不知道在1stOpt代码是怎么写的?求助,急啊 代码如下,也可以在上面附件里找到,帮忙看看 多谢了 另外会用1stOpt的同学可不可以告诉我相应的1stOpt,我用1stOpt解也出错~
clear all;
B1=2;
B2=30;
B3=0.75; %sin(angle a1 and a2)^2
B4=sqrt(1-B3); %cos(angle a1 and a2)
r1max=1/2*log(1+B1);
r2max=1/2*log(1+B2);
save p B1 B2 B3 B4
fun0='-x(3)';% objective function
Aeq=[];beq=[];A=[];b=[];
lb=[0;0;0];
ub=[1;1;inf];
options=optimset('LargeScale','off');
r1=0:0.05:r1max
r2=0:0.05:r2max;
flag=0;
for i=1:length(r1)
if flag==1;
i=i-1;
break;
end
for j=1:length(r2)
assignin('base','r1s',r1(i));
assignin('base','r2s',r2(j));
x0=[0.5;0.5;-(r1max+r2max)+2*r1(i)+2*r2(j)];% to set a better initial value
[x,mr0(i,j),exitflag(i,j),output]=fmincon(fun0,x0,A,b,Aeq,beq,lb,ub,@mycono,options);
if exitflag<1
mr0(i,j)=0;
end
if mr0(i,j)>0
mr0(i,j)=0
end
if mr0==0
j=j-1;
flag=1;% if the optimization can not handle or r0<0
break;
end
end
end
r0=-mr0;
[x,y]=meshgrid(r1,r2);
meshz(r0);
ylabel('R1');xlabel('R2');zlabel('R0');
view([50,90,10]);% set view angle
约束:
function [c,ceq]=mycono(x) %nonlinear constraint
r1=evalin('base','r1s');
r2=evalin('base','r2s');
load p.mat
c=[-1/2*log(1+(1-x(1))*B1)+r1;
-1/2*log(1+(1-x(2))*B2)+r2;
-1/2*log(1+(1-x(1))*B1+(1-x(2))*B2+(1-x(1))*(1-x(2))*B1*B2*B3)+r1+r2;
-1/2*log(1+B1+B2+2*B4*sqrt(B1*B2*x(1)*x(2))+B1*B2*B3*(1-x(1)*x(2)))+r1+r2+x(3);
]
ceq=[];
end
[ 本帖最后由 eight 于 2007-12-14 09:34 编辑 ] |