%遗传算法:时变系统
% y(k)+a(k)y(k-1)=b(k)u(k-1)+e(k)
% 0<k<300 a(k)=0.8,b(k)=0.5
% k>300 a(k)=0.6,b(k)=0.3
%v(k)为零均值,方差为0.1的高斯白噪声
%========================================
clear all;clc;
%==========产生 M 序列===============
u=[-1,1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,1,1]*10; %M 序列初始值
n=1001; %n 为脉冲数目
%==========生成四级移位寄存器产生的 M 序列作为输入===============
for k=1:n
if mod(k,15)~=0
u(k)=u(mod(k,15));
else
u(k)=u(15);
end
end
%===========产生均值为 0,方差为 0.1 的高斯白噪声=========
v=randn(1,n);
a=0; %噪声均值
b=0.1; %噪声方差
v=v/std(v);
v=v-mean(v);
v=a+b*v;
z=[];
z(1)=0; %取z的初始值为零
%==========给出理想的辨识输出采样信号===============
for i=2:n %循环变量从2到1001
if i<300
z(i)=-0.8*z(i-1)+0.5*u(i-1)+v(i); %当i<300时的理想辨识输出采样信号
else
z(i)=-0.6*z(i-1)+0.3*u(i-1)+v(i); %当i>=300时的理想辨识输出采样信号
end
end
%--------------------------------------------------------------------------------------------------------------%
%--------------------------------------------------------------------------------------------------------------%
%遗传算法主程序
%==========遗传算法参数定义===============
popsize=40; %群体大小
chromlength=10; %字符串长度(个体长度)
pc=0.6; %交叉概率
pm=0.001; %变异概率
T=100; %迭代次数
LB1=0;UB1=1;
LB2=0;UB2=1;%初始种群范围
pop1=initpop(popsize,chromlength); %随机产生初始群体
pop2=initpop(popsize,chromlength);
for j=1:n-1
Y=zeros(1,T);k=0;
for i=1:T %T为迭代次数
[x1,x2,y]=calobjvalue(pop1,pop2,LB1,UB1,LB2,UB2,chromlength,n,u,v,z); %计算初始群体适应值
newpop11=selection(pop1,y(:,j)); %选择复制
newpop21=selection(pop2,y(:,j));
newpop12=crossover(newpop11,pc); %交叉
newpop22=crossover(newpop21,pc);
newpop13=mutation(newpop12,pm); %变异
newpop23=mutation(newpop22,pm);
[x3,x4,y1]=calobjvalue(newpop13,newpop23,LB1,UB1,LB2,UB2,chromlength,n,u,v,z);
%计算新群体适应值
[a, b] = max(y1(:,j));
A(i)=x3(b);B(i)=x4(b);Y(i)=y1(b,j);
if (Y(i+1)-Y(i))<=1e-6
k=k+1;
end
if (y1(b,j)<1e6)&(k<50) %终止条件
pop1 = newpop13;
pop2 = newpop23;
else
break;
end
end
[a1,b1]=max(Y);
A1(j)=A(b1);B1(j)=B(b1);
end
for i=1:n-1
if i<=300
aa(i)=0.8;bb(i)=0.5;
else
aa(i)=0.6;bb(i)=0.3;
end
end
figure(1)
subplot(2,1,1)
plot(31:n-1,A1(31:n-1),'b','linewidth',0.5);
hold on;
plot(1:n-1,aa,'r','linewidth',3);
legend('a的估计值','a的真实值')
subplot(2,1,2)
plot(31:n-1,B1(31:n-1),'b','linewidth',0.5);
hold on;
plot(1:n-1,bb,'r','linewidth',3);
legend('b的估计值','b的真实值')
% figure(2)
% plot(1:n-1,A1-aa,1:n-1,B1-bb);
xitongbianshi.rar_系统辨识_遗传算法 辨识_遗传算法辨识
版权申诉
5星 · 超过95%的资源 56 浏览量
2022-09-23
00:12:18
上传
评论
收藏 168KB RAR 举报
alvarocfc
- 粉丝: 105
- 资源: 1万+
最新资源
- Windows系统下安装与配置Neo4j的步骤
- 基于matlab实现潮流计算和最优潮流计算的程序1,对毕业设计有一定用处.rar
- 基于大数据学习资源推荐系统的设计与实现(部署视频)-kaic.mp4
- 哈工大形式语言和自动机2022期末含答案
- Windows系统下安装与配置Neo4j的步骤
- 哈希算法(Hash Algorithm)是一种将任意长度的二进制数据映射为较短的、固定长度的二进制值的函数.txt
- Windows系统下安装与配置Neo4j的步骤
- 在二叉树或更复杂的树形结构中,先序输出叶结点.txt
- 列出所有祖先结点的概念通常与树形结构或图论中的节点相关.txt
- 基于matlab实现潮流计算程序,MATLAB潮流计算程序.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论1