• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Matlab
  • 标签: .m  matlab  

资源简介

采用遗传算法实现pid参数的优化,

资源截图

代码片段和文件信息

clear all
close all

Size=50;% 规模
CodeL=3;% 代码长度
Gmax=200;% 迭代次数
Pc=0.9; % 交叉概率
Pm=0.1;% 变异概率

MinX =[0 0 0];%最小范围
MaxX =[30 0.03 5000];

for kg=1:Gmax % 开始循环
    disp([‘正在进行第‘ num2str(kg) ‘代优化/共‘ num2str(Gmax) ‘代‘])
    for i=1:Size
        if kg==1 % 第一代初始生成
            E(i:)= (MaxX-MinX).*rand(1CodeL)+MinX;% 生成范围内的代码
        end
        kp=E(i1);% pid提取
        ki=E(i2);
        kd=E(i3);
        
        Bsf=pid_ga(kpkikd);% 目标函数计算 调用pid
        
        fi(i)=1/Bsf;% 适应度是目标函数的倒数
    end
    
    [Val Ind ]=max(fi);% 找到最大适应度
    BestJ(kg)=Val ;% 最大适应度保存
    BestS=E(Ind:);
    
    % 选择
    fi_sum=sum(fi);             % 适应度和
    Pr=fi/fi_sum;               % 选择概率
    Pri=cumsum(Pr);% 形成轮盘
    for i=1:Size
        Prand=rand;     % 随机概率生成
        Pi0=find(Pri>Prand); % 所处的轮盘区间
        Pi1=Pi0(1);
        TempE(i:)=E(Pi1:);    % 把轮盘对应的代码保存
    end
    
    % 交叉
    for i=1:2:(S

评论

共有 条评论