【神经网络学习笔记】PID神经元网络解耦控制算法

%% 该代码为基于pso算法优化的PID神经网络的系统控制算法
%
%% 清空环境变量
clc
clear

%% 粒子初始化
%粒子群算法中的两个参数
c1=1.49445;
c2=1.49445;
%最大最小权值
wmax=0.9;
wmin=0.1;
%最大最小速度
Vmax=0.03;
Vmin=-0.03;
%最大最小个体
popmax=0.3;
popmin=-0.3;

maxgen=50;    % 进化次数  
sizepop=20;   %种群规模

%随机产生一个种群
for i=1:sizepop   
    pop(i,:)=0.03*rand(1,45);  %个体编码
    fitness(i)=fun(pop(i,:));   %染色体的适应度
    V(i,:)=0.003*rands(1,45);  %初始化速度
end

%% 初始种群极值
%找最好的染色体
[bestfitness bestindex]=min(fitness);
zbest=pop(bestindex,:);   %全局最佳
gbest=pop;    %个体最佳
fitnessgbest=fitness;   %个体最佳适应度值
fitnesszbest=bestfitness;   %全局最佳适应度值

%% 迭代寻优
for i=1:maxgen
    i;
    for j=1:sizepop

        w=(wmax-wmin)*(i-1)/(maxgen)+wmin;   %权值线性变化
        V(j,:)=w*V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));   %速度更新
        V(j,find(V(j,:)>Vmax))=Vmax;   %小于最大速度
        V(j,find(V(j,:)<Vmin))=Vmin;   %大于最小速度
        %种群更新
        pop(j,:)=pop(j,:)+0.5*V(j,:);
        for k=1:45
            if rand>0.95
                pop(j,k)=0.3*rand;   %自适应变异
            end
        end
        pop(j,find(pop(j,:)>popmax))=popmax;       %小于个体最大值
        pop(j,find(pop(j,:)<popmin))=popmin;       %大于个体最小值

        %适应度值
        fitness(j)=fun(pop(j,:));
    end
    
    for j=1:sizepop
        %个体极值更新
        if fitness(j)<fitnessgbest(j)
            gbest(j,:) = pop(j,:);
            fitnessgbest(j) = fitness(j);
        end

    
  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值