文档详情

基于粒子群算法的PID控制器优化设计.doc

发布:2018-12-11约3.21千字共5页下载文档
文本预览下载声明
基于粒子群算法的PID控制器优化设计 1、案例背景 PID控制器的性能取决于Kp、Ki、Kd这3个参数是否合理,因此,优化PID控制器参数具有重要意义。目前,PID控制器参数主要是人工调整,这种方法不仅费时,而且不能保证获得最佳的性能。PSO已经广泛应用于函数优化、神经网络训练、模式分类、模糊系统控制以及其它应用领域,本案例将使用PSO进行PID控制器参数的优化设计。 2、案例目录: 第14章??基于粒子群算法的PID控制器优化设计 14.1案例背景 ??14.1.1 粒子群算法原理 ??14.1.2 PID控制器优化设计 14.2 模型建立 ??14.2.1 PID控制器模型 ??14.2.2 算法流程 ? ? 14.2.2.1 优化过程 ? ? 14.2.2.2 粒子群算法实现 14.3 编程实现 ??14.3.1?Simulink部分的程序实现 ??14.3.2 PSO部分的程序实现 ??14.3.3 结果分析 14.4 案例扩展 14.5 参考文献 3、案例实例及结果: PID 控制器的系统结构图如图14-1所示。 ? 选取的被控对象为以下不稳定系统: ? 运行代码,得到优化过程如图14-4和图14-5所示,前者为PID控制器3个参数Kp、Ki、Kd的变化曲线,后者为性能指标ITAE的变化曲线。得到的最优控制器参数及性能指标为 Kp= 33.6469,Ki= 0.1662,Kd= 38.8063, ITAE= 1.0580, 将以上参数代回如图14-2所示的模型,得到的单位阶跃响应曲线如图14-6所示。 ? ? ? 本案例使用粒子群算法优化PID控制器参数,事实上,其它的优化算法,比如遗传算法、模拟退火算法等,也可以用于PID控制器的参数优化,这里将使用遗传算法(Genetic Algorithm, GA)对PID控制器进行参数优化。 得到的进化过程曲线、最优参数对应的单位阶跃响应曲线分别如图14-7、图14-8所示。 ? ? 4、主程序:? %% 清空环境 clear clc %% 参数设置 w = 0.6; % 惯性因子 c1 = 2; % 加速常数 c2 = 2; % 加速常数 Dim = 3; % 维数 SwarmSize = 100; % 粒子群规模 ObjFun = @PSO_PID; % 待优化函数句柄 MaxIter = 100; % 最大迭代次数 MinFit = 0.1; % 最小适应值 Vmax = 1; Vmin = -1; Ub = [300 300 300]; Lb = [0 0 0]; %% 粒子群初始化 Range = ones(SwarmSize,1)*(Ub-Lb); Swarm = rand(SwarmSize,Dim).*Range + ones(SwarmSize,1)*Lb % 初始化粒子群 VStep = rand(SwarmSize,Dim)*(Vmax-Vmin) + Vmin % 初始化速度 fSwarm = zeros(SwarmSize,1); for i=1:SwarmSize fSwarm(i,:) = feval(ObjFun,Swarm(i,:)); % 粒子群的适应值 end %% 个体极值和群体极值 [bestf bestindex]=min(fSwarm); zbest=Swarm(bestindex,:); % 全局最佳 gbest=Swarm; % 个体最佳 fgbest=fSwarm; % 个体最佳适应值 fzbest=bestf; % 全局最佳适应值 %% 迭代寻优 iter = 0; y_fitness = zeros(1,MaxIter); % 预先产生4个空矩阵 K_p = zeros(1,MaxIter); K_i = zeros(1,MaxIter); K_d = zeros(1,MaxIter); while( (iter MaxIter) (fzbest MinFit) ) for j=1:SwarmSize % 速度更新 VStep(j,:) = w*VStep(j,:) + c1*rand*(gbest(j,:) - Swarm(j,:)) + c2*rand*(zbest - Swarm(j,:)); if VStep(j,:)Vma
显示全部
相似文档