📄 chaosmain.m
字号:
clc;
clear all;
close all;
Vnum=4;M=25;N=1000;global true;true=zeros(Vnum,1);true=[10,20,30,40]';%需要逼近的数
% --------------------------------------%
% -------------- Step 1 --------------%
alow=zeros(Vnum,1);bup=zeros(Vnum,1); alow1=zeros(Vnum,1);bup1=zeros(Vnum,1);
alow=[8,18,28,38]';bup=[13,23,33,43]';alow1=[8,18,28,38]';bup1=[13,23,33,43]';
% -------------- Step 1 --------------%
% --------------------------------------%
% --------------------------------------%
% -------------- Step 2 --------------%
A=10;timer=0;foptglobal=zeros(M,1);fopt=20*ones(M,1);fopt(1,1)=10;xoptimal=zeros(Vnum,M);
x0to1=zeros(Vnum,N);x0to1(:,1)=rand(Vnum,1);
x=zeros(Vnum,N);x(:,1)=rand(Vnum,1);
x1=zeros(Vnum,N);
x2=zeros(Vnum,N);
% -------------- Step 2 --------------%
% --------------------------------------%
% --------------------------------------%
% -------------- Step 3 --------------%
for i=1:Vnum
x2(i,1)=4*x(i,1)*(1-x(i,1));
end
xoptimal=zeros(Vnum,M);
xoptimal(:,1)=[11,21,31,41]';
xoptglobal=zeros(Vnum,M);
xoptglobal(:,1)=1.104.*true;
xoptimal(:,1)=[11.0,21.5,31.5,41.5]';
ColumnVector=zeros(Vnum,1);
ColumnVector=xoptimal(:,1);
foptglobal=funcObject(ColumnVector);
foptN=2*ones(N,1);
% foptN(1,1)=15.0501;
ColumnVector1=zeros(Vnum,1);
ColumnVector2=zeros(Vnum,1);
n=1;
flag=0;
for m=1:M
while(n<N)
for i=1:Vnum
delta=bup(i)-alow(i);
x1(i,n)=alow(i)+x(i,n)*delta; %x=zeros(Vnum,N);
ColumnVector1(i,1)=x1(i,n);
ColumnVector2(i,1)=xoptglobal(i,m);
end
% -------------- Step 3 --------------%
% --------------------------------------%
% --------------------------------------%
% -------------- Step 4 --------------%
% ColumnVector2=xoptimal(:,n);
ValuefuncObject1=funcObject(ColumnVector1);
ValuefuncObject2=funcObject(ColumnVector2);
if ValuefuncObject1<ValuefuncObject2
for i=1:Vnum
xoptglobal(i,m)=x1(i,n);
xoptimal(i,m)=x1(i,n);
end
foptN(n)=ValuefuncObject1;
else
foptN(n)=ValuefuncObject2;
for i=1:Vnum
xoptglobal(i,m)=xoptglobal(i,m);%有问题吗
xoptimal(i,m)=xoptglobal(i,m);
end
end
timer=timer+1;
% timer=10;A=9;
if timer>A;
break;
else
% --------------------------------------%
% -------------- Step 5 --------------%
for i=1:Vnum
aaa=1-x(i,n);
x2(i,n)=4*x(i,n)*aaa;
% x(i,n)=x2(i,n);
end
% --------------------------------------%
% -------------- Step 6 --------------%
for i=1:Vnum
x(i,n)=x2(i,n);
end
n=n+1;
end
%-------------- Step 4 --------------%
% --------------------------------------%
if foptN(n)<1e-2
flag=1;
break;% end for n=1:N
end
end % for n=1:N
if flag==1
break;% end for m=1:M
end
for i=1:Vnum
delta1=(bup(i)-alow(i))/(m+1);
alow1(i)=xoptimal(i,m)-delta1;
bup1(i)=xoptimal(i,m)+delta1;
if alow1(i)<alow(i)
alow1(i)=alow(i);
end
if bup1(i)>bup(i)
bup1(i)=bup(i);
end
end %for i=1:Vnum
alow(i)=alow1(i);
bup(i)=bup1(i);
end %for m=1:M
figure
plot(foptN,'-r');
foptN
xoptglobal
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -