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

📄 oprt_zh_8point.asv

📁 这个一个遗传算法的实例
💻 ASV
字号:
clear
D=[50,7,1500];%依次表示行,列,页
N=3;n=8;%依次表示轴数和插值点数
%以P表示位置,V表示速度,A表示加速度,J表示加加速度
%T表示时间,h表示时间间隔
VC=[100,95,1000];%依次设置第一轴,第二轴,第三轴的速度约束
AC=[70,75,75];%依次设置第一轴,第二轴,第三轴的加速度约束
JC=[70,85,70];%依次设置第一轴,第二轴,第三轴的冲击约束
V=zeros(N,n);%设置速度边界
A=zeros(N,n);%设置加速度边界
KT=1;KJ=0.01;
t1=0;%起始时间
Ps=0.04;Pm=0.16;Pc=0.8;
P(1,1)=120;P(1,3)=100;P(1,4)=60;P(1,5)=30;P(1,6)=10;P(1,8)=0;
P(2,1)=-10;P(2,3)=20;P(2,4)=0;P(2,5)=30;P(2,6)=60;P(2,8)=80;
P(3,1)=0;P(3,3)=20;P(3,4)=50;P(3,5)=70;P(3,6)=50;P(3,8)=30;
%以上三行设置初始位置点

%群体数据的初始化
%rand('state',sum(50*clock)); 
rand('state',1);
JUST=1;
while JUST<=D(1)
    %确定时间间隔及时间表
    for i=1:n-1;
        H(i)=rand*5;
    end;%h(i)表示各插值点的时间间隔
    T_ini=SOV_T(H,n,t1);
    %T(i)各插值点的即时时间
    %判断点是否生成
   QA=SOL_QA(H,V,A,P,N,n); %QA为N*n矩阵
    BDVC=JUST_VC(QA,T_ini,H,P,VC,N,n);
    if BDVC==1;
        BDAC=JUST_AC(QA,AC,N,n);
        if BDAC==1;
           BDJC=JUST_JC(QA,JC,H,N,n);
            if BDJC==1;
                HZD(JUST,:,1)=H;%HZD表示所有个体
                JUST=JUST+1;
            end;
        end;
    end;
end;
%HZD
DS=1;
while DS<=D(3)
   for ii=1:D(1);
       QAD(:,:,ii)=SOL_QA(HZD(ii,:,DS),V,A,P,N,n);%群体中的三轴加速度值
       T_8point=SOV_T(HZD(ii,:,DS),n,t1);
       BDVC_8point=JUST_VC(QAD(:,:,ii),T_8point,HZD(ii,:,DS),P,VC,N,n);
       BDAC_8point=JUST_AC(QAD(:,:,ii),AC,N,n);
       BDJC_8point=JUST_JC(QAD(:,:,ii),JC,HZD(ii,:,DS),N,n);
       BD_8point(ii)=BDVC_8point*BDAC_8point*BDJC_8point;
    end;
    Ling(DS)=0;
    for j=1:D(1)
        if BD_8point(j)==0;
            Ling(DS)=Ling(DS)+1;
        end;
    end;
     FITD=SOV_fitness_8point(HZD(:,:,DS),QAD,KT,KJ,N,n,D(1),BD_8point);
    JCLS=1;
   while JCLS<=D(1)*Pc/2;
        XZ_new1=rand;XZ_new2=rand;%选择
        [XB_new1,XB_new2]=SEAR_XZXB(FITD,XZ_new1,XZ_new2,D(1));
        [GT_new1,GT_new2]=CRE_JC(HZD(XB_new1,:,DS),HZD(XB_new2,:,DS),D(2));
         HZD(JCLS*2-1,:,DS+1)=GT_new1;%HZD表示所有个体
         HZD(JCLS*2,:,DS+1)=GT_new2;
         JCLS=JCLS+1;
   end;
   %以下操作为突变操作
	TBLS=1;%突变临时变量
    while TBLS<=D(1)*Pm;
        TBXZ_new=ceil(rand*D(1));
        TBGT_new=CRE_TB(HZD(TBXZ_new,:,DS),D(2));
        HZD(D(1)*Pc+TBLS,:,DS+1)=TBGT_new;
        TBLS=TBLS+1;
    end;
%以下是精英主义
     JYXB_new=SOV_JYXB(FITD,D(1),Ps);
    for j=1:D(1)*Ps;
         HZD(D(1)*Pc+D(1)*Pm+j,:,DS+1)=HZD(JYXB_new(j),:,DS);
    end;
    DS=DS+1;
end;  
for i=1:D(1);
       QAD(:,:,i)=SOL_QA(HZD(i,:,DS),V,A,P,N,n);%求群体中的三轴加速度值
        T_8point=SOV_T(HZD(ii,:,DS),n,t1);
        BDVC_8point=JUST_VC(QAD(:,:,ii),T_8point,HZD(ii,:,DS),P,VC,N,n);
        BDAC_8point=JUST_AC(QAD(:,:,ii),AC,N,n);
        BDJC_8point=JUST_JC(QAD(:,:,ii),JC,HZD(ii,:,DS),N,n);
        BD_8point(ii)=BDVC_8point*BDAC_8point*BDJC_8point;
end;
BD_8point
FIT_ZZ=SOV_fitness_8point(HZD(:,:,DS),QAD,KT,KJ,N,n,D(1),BD_8point)
ZYXB=SOV_ZYXB(FIT_ZZ,D(1));
H_ZY=HZD(ZYXB,:,DS)
T_HT=SOV_T(H_ZY,n,t1)
QA_HT=SOL_QA(H_ZY,V,A,P,N,n);
P_HT=SOV_P(P,QA_HT,H_ZY,V,N,n);
[QJ_MAX,QJ_ZH]=SOV_QJ(QA_HT,H_ZY,N,n)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -