⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chaosmain.m

📁 一种改进的混沌优化
💻 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 + -