我是靠谱客的博主 天真皮卡丘,这篇文章主要介绍基于遗传算法的PID参数整定研究(十)——GA算法联合Simulink仿真下的参数整定,现在分享给大家,希望可以做个参考。

基于遗传算法的PID参数整定研究

基于遗传算法的PID参数整定研究(七-九)是基于精确的传递函数进行优化,其本质是将优化对象简化为一阶或者二阶的传递函数,在.m程序上进行编写其零极点模型,从而应用遗传算法对其进行参数整定。
然而,实际情况是大多数的被控对象往往其传递函数难以获得,无法运用经典控制理论进行合理化的模型建立。比如针对含有SVPWM的双闭环矢量控制系统,含离散元器件的系统,以及非线性的单元等等。因此,有必要建立一种直接联合Simulink仿真模型的在线参数整定。

1.3.4遗传算法联合Simulink仿真下的参数整定

当被控对象为双闭环矢量PI控制系统,采取实数编码优化的三个决策变量分别为kP,ki,Ba,使用的样本个数为5,交叉概率和变异概率分别为:Pc=0.9,Mu=0.033。设定优化区间分别为:参数kP的取值范围为[0,1],ki的取值范围为[0,7],Ba的取值范围为[0,0.02]。经过5代进化,获得的优化参数如下:
kP=0.1317,ki=1.4187,Ba=0.0035,性能指标J=0.0342,整定过程中代价函数J的变化如图15所示。优化后空载工况下的转速响应波形如图16所示。
在这里插入图片描述
图14 永磁同步电机的双闭环矢量PI控制系统

主函数 main.m

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
clc, clear all; %#ok<CLALL> tic %计时开始 global w1 w2 yout ycrtl simout1 %% 电机参数设定 Ts = 1e-5; Pn = 4; flux = 0.1827; R = 0.9585; Ld = 0.00525; Lq = 0.00525; J = 0.0006329; %0.221515 B = 0.0003035; Kt = 1.5*Pn*flux; %% 遗传算法优化参数 Size=5; % 种群大小30个 可行解 G=5; % 种群运行100次 CodeL=3; % 三个实数编码 三个决策变量 rin = 1000.0000; %控制输入 B=0; % rand('state',sum(clock)); MinX(1)=zeros(1); MaxX(1)=1*ones(1); MinX(2)=0*ones(1); MaxX(2)=7*ones(1); MinX(3)=0*ones(1); MaxX(3)=0.02*ones(1); Kpid(:,1)=MinX(1)+(MaxX(1)-MinX(1))*rand(Size,1); Kpid(:,2)=MinX(2)+(MaxX(2)-MinX(2))*rand(Size,1); Kpid(:,3)=MinX(3)+(MaxX(3)-MinX(3))*rand(Size,1); BsJ=0; %*************** Start Running *************** for kg=1:1:G time(kg)=kg; %****** Step 1 : Evaluate BestJ ****** for i=1:1:Size Kpidi=Kpid(i,:); %单个可行解 Kp = Kpidi(1); %反馈d-q轴电流 Ki = Kpidi(2); Ba = Kpidi(3); clc, simout1 = sim('PMSM_PI_decomposition'); % 时间输出 clc, %目标函数 P = length(simout1); yout = w1; %转速反馈值 ycrtl = w2; %转速控制输入 error = yout-rin; %转速偏差 A = roundn(yout,-4); %一维数组 num = round(P*0.618); ymax = max(A); %最大值 Value =roundn(mean(yout(num:P-1,1)),-4);%一个数值 %% 上升时间 [row1 col1]=find(ymax==A); tu1=simout1(row1); %% 调节时间,允许的误差范围内 % [row2 col2]=find(rin==A); % tu2=simout1(row2); %% 误差调节 % B=0.001*sum(abs(error(num))); % for i=1:1:P % if i>1 % erry(i)=w1(i)-w1(i-1); % if erry(i)<0 % B=B+100*(abs(erry(i))); % end % end % end BsJ=B+(tu1)*10; % [Kpidi,BsJ]=chap_f1(Kpidi,BsJ); BsJi(i)=BsJ; %%BsJi优化参数的数值矩阵 end [OderJi,IndexJi]=sort(BsJi); BestJ(kg)=OderJi(1); BJ=BestJ(kg); Ji=BsJi+1e-10; %Avoiding deviding zero fi=1./Ji; % Cm=max(Ji); % fi=Cm-Ji; [Oderfi,Indexfi]=sort(fi); %Arranging fi small to bigger Bestfi=Oderfi(Size); %Let Bestfi=max(fi) BestS=Kpid(Indexfi(Size),:); %Let BestS=E(m), m is the Indexfi belong to max(fi) kg BJ BestS %****** Step 2 : Select and Reproduct Operation****** fi_sum=sum(fi); fi_Size=(Oderfi/fi_sum)*Size; fi_S=floor(fi_Size); % Selecting Bigger fi value r=Size-sum(fi_S); Rest=fi_Size-fi_S; [RestValue,Index]=sort(Rest); for i=Size:-1:Size-r+1 fi_S(Index(i))=fi_S(Index(i))+1; % Adding rest to equal Size end k=1; for i=Size:-1:1 % Select the Sizeth and Reproduce firstly for j=1:1:fi_S(i) TempE(k,:)=Kpid(Indexfi(i),:); % Select and Reproduce k=k+1; % k is used to reproduce end end %************ Step 3 : Crossover Operation ************ Pc=0.90; for i=1:2:(Size-1) temp=rand; if Pc>temp %Crossover Condition alfa=rand; TempE(i,:)=alfa*Kpid(i+1,:)+(1-alfa)*Kpid(i,:); TempE(i+1,:)=alfa*Kpid(i,:)+(1-alfa)*Kpid(i+1,:); end end TempE(Size,:)=BestS; Kpid=TempE; %************ Step 4: Mutation Operation ************** Pm=0.10-[1:1:Size]*(0.01)/Size; %Bigger fi,smaller Pm Pm_rand=rand(Size,CodeL); Mean=(MaxX + MinX)/2; Dif=(MaxX-MinX); for i=1:1:Size for j=1:1:CodeL if Pm(i)>Pm_rand(i,j) %Mutation Condition TempE(i,j)=Mean(j)+Dif(j)*(rand-0.5); end end end %Guarantee TempE(Size,:) belong to the best individual TempE(Size,:)=BestS; Kpid=TempE; end Bestfi BestS Best_J=BestJ(G) figure(1); plot(time,BestJ); xlabel('Times');ylabel('Best J'); % figure(2); % plot(timef,rin,'r',timef,yout,'b'); % xlabel('Time(s)');ylabel('rin,yout'); toc %计时结束

在这里插入图片描述
图15 优化前空载工况下的转速响应波形

在这里插入图片描述
图16 优化后空载工况下的转速响应波形
在这里插入图片描述
图17 代价函数J的变化过程

由图15和图16可知,优化后的性能对比,超调明显减小,但是稳态性能却变差了,因此对于处于矛盾性质的性能指标无法做到二者兼得。因此,可以运用多目标优化算法对其进行改进并进行在线参数整定。

最后

以上就是天真皮卡丘最近收集整理的关于基于遗传算法的PID参数整定研究(十)——GA算法联合Simulink仿真下的参数整定的全部内容,更多相关基于遗传算法内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(86)

评论列表共有 0 条评论

立即
投稿
返回
顶部