遗传算法的参数整定报告

合集下载

遗传算法实验报告

遗传算法实验报告

人工智能实验报告遗传算法实验报告一、问题描述对遗传算法的选择操作,设种群规模为4,个体用二进制编码,适应度函数,x的取值区间为[0,30]。

若遗传操作规定如下:(1)选择概率为100%,选择算法为轮盘赌算法;(2)交叉概率为1,交叉算法为单点交叉,交叉顺序按个体在种群中的顺序;(3)变异几率为0请编写程序,求取函数在区间[0,30]的最大值。

二、方法原理遗传算法:遗传算法是借鉴生物界自然选择和群体进化机制形成的一种全局寻优算法。

与传统的优化算法相比,遗传算法具有如下优点:不是从单个点,而是从多个点构成的群体开始搜索;在搜索最优解过程中,只需要由目标函数值转换得来的适应值信息,而不需要导数等其它辅助信息;搜索过程不易陷入局部最优点。

目前,该算法已渗透到许多领域,并成为解决各领域复杂问题的有力工具。

在遗传算法中,将问题空间中的决策变量通过一定编码方法表示成遗传空间的一个个体,它是一个基因型串结构数据;同时,将目标函数值转换成适应值,它用来评价个体的优劣,并作为遗传操作的依据。

遗传操作包括三个算子:选择、交叉和变异。

选择用来实施适者生存的原则,即把当前群体中的个体按与适应值成比例的概率复制到新的群体中,构成交配池(当前代与下一代之间的中间群体)。

选择算子的作用效果是提高了群体的平均适应值。

由于选择算子没有产生新个体,所以群体中最好个体的适应值不会因选择操作而有所改进。

交叉算子可以产生新的个体,它首先使从交配池中的个体随机配对,然后将两两配对的个体按某种方式相互交换部分基因。

变异是对个体的某一个或某一些基因值按某一较小概率进行改变。

从产生新个体的能力方面来说,交叉算子是产生新个体的主要方法,它决定了遗传算法的全局搜索能力;而变异算子只是产生新个体的辅助方法,但也必不可少,因为它决定了遗传算法的局部搜索能力。

交叉和变异相配合,共同完成对搜索空间的全局和局部搜索。

三、实现过程(1)编码:使用二进制编码,随机产生一个初始种群。

用遗传算法实现PID参数整定

用遗传算法实现PID参数整定

控制理论与应用Control Theory and Applications《自动化技术与应用》2004年第23卷第7期用遗传算法实现PID 参数整定万佑红1,李新华2(1.南京邮电学院电子工程系,江苏 南京 210003; 2.安徽大学电子工程系,安徽 合肥 230001)摘要:PI D 参数整定一直是控制领域中的重要研究问题。

本文在M AT LAB 平台上将遗传算法应用于PI D 参数的自动整定,算法实例仿真取得了良好的效果,为PI D 参数整定方法提供了一种新的尝试。

关键词:PI D 参数;遗传算法中图分类号:TP27312 文献标识码:A 文章编号:100327241(2004)0720007202PID Tu nin g Bas e d O n Ge netic Alg orit h m sWAN You -hong 1,LI Xin -hua 2(1.E lectronics Department of Nanjing University of P osting T echnology ,Nanjing 210003,China ;2.E lectronics Department of AnHui University ,Hefei 230001,China )Abstract :A new method to s olve the tuning of PI D paramrters is proposed in this paper.I t is showed that g ood control effect can be obtained by usingG enetic Alg orithms (G A ).K ey w ords :PI D paramrters ;G A1 引言PI D 控制无需知道被控对象的数学模型,算法简单,鲁棒性好且可靠性高,因此成为一种获得广泛应用的控制策略。

遗传算法实验报告

遗传算法实验报告

桂林理工大学实验报告班级计算机11-1班学号姓名同组实验者无实验名称日期2014年 5 月30日一、实验目的:用遗传算法求f(x)=x*sin(10*pi*x)+1.0的最大值,其中x区间为 [-1 2] 。

二、实验内容:初始化(编码);实现目标函数的计算:将pop每行转化成十进制数,将二值域中的数转化为变量域的数,计算目标函数值;随机产生初始群体;计算目标函数值;计算群体中每个个体的适应度;保存每次迭代最大适应值对应的x,y,用于绘图演示;计算最大值及其位置;计算最大值对应的x值。

三、程序清单:%遗传算法主程序clearclcpopsize=20; %群体大小chromlength=10; %字符串长度(个体长度)pc=0.6; %交叉概率pm=0.001; %变异概率pop=initpop(popsize,chromlength); %随机产生初始群体for i=1:200 %20为迭代次数[objvalue]=calobjvalue(pop); %计算目标函数值fitvalue=objvalue; %计算群体中每个个体的适应度% fitvalue=calfitvalue(objvalue);%依概率选择遗传操作之一r1=ceil(3*rand);switch r1case 1newpop=selection(pop,fitvalue); %复制case 2newpop=crossover(pop,pc); %交叉case 3newpop=mutation(pop,pc); %变异end[bestindividual,bestfit]=best(pop,fitvalue); % 群体中最大的适应值及其个体y(i)=bestfit; %保存每次迭代最大适应值对应的x,y,用于绘图演示x(i)=-1+decodebinary(bestindividual)*3/1023;pop=newpop;endfplot('x.*sin(10*pi*x)+1.0',[-1 2])hold onplot(x,y,'r*')hold off[ymax index]=max(y); %计算最大值及其位置xmax=x(index)%计算最大值对应的x值ymax四、运行结果:五、心得体会:本次试验着重针对代码的改写,通过改写代码以及思考对遗传算法有了一定的了解,跟同学讨论学会了二值域转换为变量域的方法。

遗传算法的参数整定报告

遗传算法的参数整定报告

基于遗传算法的PID 控制器参数整定报告一、 遗传算法。

遗传算法(GAs )是基于自然界生物进化机制的搜索寻优技术。

用遗传算法来整定PID 参数,可以提高优化性能,对控制系统有良好的控制精度、动态性能和鲁棒性。

一般的,Gas 包括三个基本要素:复制、交叉和突变。

二、PID Optimal-TuningPID 控制:对偏差信号e(t)进行比例、积分和微分运算变换后形成的一种控制规律。

(1)可调参数:比例度δ(P )、 积分时间Ti (I )、微分时间Td (D )。

通常,PID 控制准则可以写成下面传递函数的形式: )1()(s T T s K s G d ip ++= (2) Kp 、Ti 和Td 分别是比例放大率、积分时间常量和微分时间常量。

1) 比例控制(P ):是一种最简单的控制方式。

其控制器的输出与输入误差信号成比例关系。

当仅有比例控制时系统输出存在稳态误差(Steady state error ),比例度减小,稳态误差减小;2) 积分(I )控制:在积分控制中,控制器的输出与输入误差信号的积分成正比关系。

3) 微分(D )控制:在微分控制中,控制器的输出与输入误差信号()()()()⎥⎦⎤⎢⎣⎡++=⎰t e dt d T d e T t e K t u d t i p 01ττ的微分(即误差的变化率)成正比关系。

文中,性能指标是误差平方的时间加权积分,表示为:),,1,0(,02n k dt e t J it k ==⎰ (3)其中n 是非负整数,i t 是积分周期。

此外,其他标准项如超调量、上升时间和稳定时间也被一个合成性能指标选择:))(1(s s r r c t c t c os J ++= (4)s r os t t 、、分别代表超调量、上升时间和稳定时间。

s r c 、c 两个系数有用户定义或决定。

预期的性能指标的最下化可以认为是小的超调量、短的上升时间和稳定时间。

三个PID 参数的编码方式如下:10101011:S 1010100011100111p K i K d Kp K 、i K 和d K 都是八位二进制字符格式。

基于遗传算法的pid参数整定 (2)

基于遗传算法的pid参数整定 (2)

反馈是一个非常有用的概念。

反馈控制的使用常常带来革命性的结品控制器采用的是引入微分增益的实际PID 控制算法,其传递函数形式果,极大地改善了控制性能。

PID 控制是到目前为止实际使用中最主要的反馈控制形式。

PID 控制是比例积分微分控制的简称。

积分、比例和微分反馈分别基于过去(I )、现在(P )和将来(D )的控制偏差。

在生产过程自动控制的发展历程中,PID 控制是历史最久、生命力最强的基本控制方式。

PID 控制器的传统整定方法,如Ziegler-Nichols (Z-N )法、响应曲线法、临界比例法、继电型自整定法、单纯形法等,或是依赖于对象模型,或是易于陷入局部极小,均存在一定的应用局限性,且难以实现高性能的整定效果,常常超调较大、调整时间较长、误差指标过大等。

近年来,遗传算法作为一种新兴的优化和自学习算法在控制工程中逐渐受到重简单来说,PID 控制器各校正环节的作用是:视,它是一种基于生物进化论的并行搜索算法,搜索空间大,通过设计合1)比例环节:成比例地反映控制系统的偏差信号,偏差一旦产生,适的算法参数和策略能够避免陷入局部最小。

由于其独到的解决问题的能控制器立即产生控制作用,以减小偏差;力,其应用已渗透到控制领域诸多方面(系统辨识和模型降阶、最优控2)积分环节:主要用于消除静差。

积分作用的强弱取决于积分时间制、线性和非线性控制、滑模控制、鲁棒控制、模糊逻辑控制、神经网络控制和自适应控制等)。

3)微分环节:反映偏差信号的变化趋势(变化速率),并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系1 PID控制器原理统的动作速度,减少调节时间。

PID 控制是一种负反馈控制。

其反馈控制原理图如图1所示。

2 基于遗传算法的PID参数整定遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法。

随着火电机组单机容量和参数的不断提高,系统变得日趋复杂,热工过程越来越表现出非线性、慢时变、大迟滞、强耦合性和不确定性,这对热工过程自动控制系统则提出了更高的要求,传统的PID 控制已经无法满足这种要求,必须采用先进的控制策略进行优化控制。

遗传算法实验报告

遗传算法实验报告

实验一 二进制编码函数优化一、实验目的利用一种基于二进制编码的优化方法的基本原理和操作步骤求解最优化问题,了解整个利用二进制编码的过程,选择,交叉,变异等等。

使适应性函数值逐步逼近最优解,并进行在Visual C++ 6.0进行仿真,编译。

二、实验仪器机械楼计算机中心计算机三、实验内容及步骤采用二进制编码方式优化如下测试函数: (1) De Jong 函数F1:极小点f 1(0, 0, 0)=0。

(2) De Jong 函数F2:极小点f 2(1,1) = 0。

(3) De Jong 函数F3:对于]0.5,12.5[--∈i x 区域内的每一个点,它都取全局极小值30),,,,(543213-=x x x x x f 。

要求:对每一个测试函数,分析不同的种群规模(20~100)、交叉概率(0.4~0.99)和变异概率(0.0001~0.1)对优化结果的影响,试确定最佳参数组合。

四、实验报告(1)De Jong函数F1采用二进制编码方式优化结果的折线图如图1所示:其中迭代数为100代,结果基本逼近最真实值。

图1 De Jong函数F1二进制编码优化结果折线图(2)De Jong函数F2采用二进制编码方式优化结果的折线图如图2所示:其中迭代数为100代。

图2 De Jong函数F2二进制编码优化结果折线图(3)De Jong函数F3采用二进制编码方式优化结果的折线图如图3所示:其中迭代数为200代。

图3 De Jong函数F3二进制编码优化结果折线图实验二 实数编码函数优化一、实验目的利用一种基于实数编码的优化方法的基本原理和操作步骤求解最优化问题,并分析不同的变异方式(均匀变异、非均匀变异、自适应变异)的优化结果有什么区别。

并进行在Visual C++ 6.0进行仿真,编译。

二、实验仪器机械楼计算机中心计算机三、实验内容及步骤采用实数编码方式优化如下测试函数: ⑴De Jong 函数F1:极小点f 1(0, 0, 0)=0。

遗传算法实验报告

遗传算法实验报告

遗传算法实验报告遗传算法实验报告引言:遗传算法是一种模拟生物进化过程的优化算法,通过模拟自然选择、遗传变异和交叉等操作,逐步优化问题的解。

本实验旨在探究遗传算法在解决优化问题中的应用,并通过实验验证其效果。

一、实验背景遗传算法最早由美国科学家约翰·霍兰德于20世纪60年代提出,其灵感来源于达尔文的进化论。

遗传算法通过基因编码、适应度评估、选择、交叉和变异等操作,模拟了进化过程中的遗传和变异,从而找到问题的最优解。

二、实验目的本实验旨在通过遗传算法解决一个经典的优化问题,验证其在解决实际问题中的有效性。

同时,对遗传算法的参数设置和操作过程进行调整和优化,以提高算法的性能。

三、实验步骤1. 问题定义:选择一个经典的优化问题,例如旅行商问题(TSP)或背包问题。

2. 解空间建模:将问题的解表示为染色体,设计基因编码方式。

3. 适应度函数定义:根据问题的特点,设计一个能够评估染色体解的适应度函数。

4. 初始化种群:随机生成一组初始染色体,作为种群。

5. 选择操作:根据适应度函数,选择一部分较优秀的染色体作为父代。

6. 交叉操作:通过交叉操作,生成新的子代染色体。

7. 变异操作:对子代染色体进行变异操作,引入新的基因变异。

8. 适应度评估:计算新的子代染色体的适应度。

9. 父代替换:根据适应度函数,选择一部分较优秀的子代染色体替换掉父代染色体。

10. 终止条件判断:判断是否满足终止条件,若满足则结束算法,否则返回步骤5。

11. 输出结果:输出最优解及其适应度值。

四、实验结果与分析通过实验,我们得到了一组优化问题的最优解,并计算出其适应度值。

通过观察实验结果,我们可以发现遗传算法在解决优化问题中的有效性。

同时,我们还可以通过调整遗传算法的参数和操作过程,进一步提高算法的性能。

五、实验总结通过本次实验,我们深入了解了遗传算法的原理和应用。

遗传算法作为一种优化算法,具有较强的适应性和鲁棒性,在解决实际问题中具有广泛的应用前景。

遗传算法对数字PID参数整定

遗传算法对数字PID参数整定

摘要本文使用的是遗传算法对PID控制器参数的整定,PID控制器是过程控制中应用最为广泛的控制方法,PID控制理论成熟、算法简单、鲁棒性好、可靠性高。

控制器参数的选择决定了控制的稳定性和快速性,关乎系统的可靠性。

因此,PID 控制器参数整定问题是自动控制领域研究的一个重要内容。

实际工业生产过程往往具有非线性、时变性,人工试凑的参数整定方法往往整定不良、性能不佳,对运行工况的适应性很差。

本文基于遗传算法对数字PID控制器进行参数整定,可以提高优化性能,缩短整定时间。

关键词:数字PID控制器;参数整定;遗传算法;二次性能指标1引言PID控制作为比较成熟的控制技术广泛应用于工业生产过程,目前绝大多数底层控制都采用PID控制器。

实际应用中控制器的参数往往采用实验试凑的方法人工整定,该方法往往整定不良、性能不佳,而且对运行工况的适应性很差。

近年来随着计算机技术的广泛应用,人工智能算法PID整定策略发展迅速,如模糊PID、专家PID、神经元网络PID以及遗传算法等。

这些算法能够实现提高优化性能,缩短整定时间,实际应用方便的控制目标。

2PID控制器PID控制器是将偏差的比例(P)、积分(I)、微分(D)通过线性组合构成控制量,对被控对象进行控制的。

模拟PID控制的系统原理图如图1所示。

图1. 模拟PID 控制的系统原理图模拟PID 控制规律为位置式:()()()()01=++tp DI de t u t k e t e t dt T T dt ⎡⎤⎢⎥⎣⎦⎰(1) 当系统采样周期为T 时,对上式离散化处理,可得到离散位置式PID 控制表达式:()()()()()=1--1=++kp i dj e k e k u k k e k k e j T k T ∑(2) 式中=/i p I k k T ,=d p D k k T 。

增量式PID 控制表达式可以表示为:()()()=-1+u k u k u k ∆(3)()()()()()()()()()=--1++-2-1+-2p i d u k k e k e k k e k k e k e k e k ∆(4)3 遗传算法遗传算法(Genetic Algorithm )是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,将达尔文生物进化理论引入参数寻优之中,适应度高的个体越容易被保留,经过若干代数遗传操作,种群各个体的适应度不断提高,直至满足一定的极限条件,获得优化问题最优解。

遗传算法实验报告

遗传算法实验报告

遗传算法实验报告遗传算法实验报告引言:遗传算法是一种模拟自然选择和遗传机制的优化算法,它通过模拟基因的变异和交叉来寻找问题的最优解。

本实验旨在通过编写遗传算法程序,探索其在求解优化问题中的应用。

一、实验背景遗传算法最初是为了模拟达尔文的进化论而提出的。

通过模拟自然界中的进化过程,遗传算法可以逐步优化解空间,找到问题的最优解。

遗传算法适用于各种优化问题,如旅行商问题、背包问题等。

二、实验目的本实验旨在通过编写遗传算法程序,研究其在求解优化问题中的效果。

具体目标如下:1. 熟悉遗传算法的基本原理和流程;2. 实现一个简单的遗传算法程序;3. 运用该程序求解一个具体的优化问题。

三、实验步骤1. 确定问题:选择一个具体的优化问题,如旅行商问题;2. 设计编码方式:将问题转化为遗传算法可以处理的编码形式,如二进制编码;3. 初始化种群:随机生成一定数量的个体作为初始种群;4. 评估适应度:根据问题的目标函数,计算每个个体的适应度;5. 选择操作:根据适应度选择优秀的个体作为父代,采用轮盘赌等方法进行选6. 交叉操作:对选出的父代进行交叉操作,生成新的个体;7. 变异操作:对新个体进行变异操作,引入随机性;8. 更新种群:将原种群和新生成的个体合并,更新种群;9. 判断终止条件:判断是否满足终止条件,如达到最大迭代次数或找到最优解;10. 输出结果:输出找到的最优解。

四、实验结果本实验选择旅行商问题作为优化问题进行求解。

旅行商问题是一个经典的组合优化问题,目标是找到一条最短路径,使得旅行商可以依次访问一系列城市并回到起点。

经过多次实验,得到了如下结果:- 初始种群大小为100个个体;- 迭代次数为1000次;- 交叉概率为0.8,变异概率为0.01;- 最优解为路径长度为1000的路径。

五、实验分析通过对遗传算法的实验结果进行分析,可以得出以下结论:1. 遗传算法能够在一定程度上寻找到问题的最优解,但并不能保证一定找到全局最优解;2. 实验中的参数设置对算法的性能有很大影响,不同的参数设置可能导致不同的结果;3. 遗传算法适用于解决各种优化问题,但对于复杂问题可能需要更多的优化和六、实验总结通过本次实验,我们深入了解了遗传算法的原理和应用。

遗传算法实验报告

遗传算法实验报告

1.定义种群和个体定义种群为S , 种群数N=50, 其中x,y 是染色体中的两个基因组。

2. 算法设计(1)确定编码设计由于原函数的变量取值包含负数,不方便进行编码,所以将原函数的变量进行转换,从[-10 10]转换成[0 20],相应的,函数也要进行变换。

根据要求分辨率为0.0001,即编码范围至少为[0 200000],设编码位数为n+1,则20/(2^(n+1)-1)<=0.0001,所以求得n=18。

因此将变量域[0 20]离散化为二值域[0 2^18-1]即[0 262143],若由a, b 代表随机二值数,则x=20*a/262143, y=20*b/262143。

(2)确定目标函数和适应度函数由于所求目标函数值包含负数,若直接当做适应度函数值,负数无法被选择,会产生一定的不公平现象,故采用下界构造法,将函数值整体上移,使得被选择的机会相对公平。

而且由于变量域进行了变化,故目标函数为sin(10)sin(10)(,)*11010x y f x y x y --=+-- 而适应度函数,还要将负值转化为零(一般采用下界构造法后没有负值)。

(3)产生种群Init 函数实现种群的初始化,函数变量为种群规模N 以及染色体位数length 。

采用随机函数rand 生成随机矩阵,并使用round 函数对产生的随机数进行四舍五入,即进行二值化操作,每一行代表一个个体。

(4)选择复制选择和复制操作是可以决定哪些个体可以进入下一代。

选择的方法通常有轮盘赌选择法、锦标赛选择法、随机遍历选择法等。

由于相对来说轮盘赌选择法编程简单,故本次采用轮盘赌选择法,但是这里采用连续均匀分布的随机函数unifrnd ,可以提高公平性。

根据方程i f i i i sumf f P f ==∑ 1)计算fsum 和Pi2)产生{0,1}的随机数,求s=unifrnd(0,1,1,36)*fsum3) 求fi 和>=s 中最小的个体并选择复制。

基于遗传算法的PID整定

基于遗传算法的PID整定

% 基于遗传算法的PID整定% 被控对象为二阶函数: 400% G(s) = ---------% S^2+50S% 采样时间为1ms,输入信号为阶跃信号% 采用二进制编码方式,种群个体(kp,ki,kd)长度为10close all;clc;clear;global rin yout timef %定义全局变量G=100; %迭代次数Size=30; %种群大小CodeL=10; %种群个体长度(二进制编码)MinX=zeros(1,3); %约束条件,即kp,kd,ki 的取值范围MaxX(1)=20*ones(1); % kp in [0 20]MaxX(2)=1.0*ones(1); % kd,ki in [0 1]MaxX(3)=1.0*ones(1);E=round(rand(Size,3*CodeL)); %初始化种群,编码Bsj=0;for k=1:G %迭代次数time(k)=k;for s=1:Sizem=E(s,:);y1=0;y2=0;y3=0; %输出量初始化(十进制)m1=m(1:CodeL);for i=1:CodeLy1=y1+m1(i)*2^(i-1); %计算输出量endK(s,1)=(MaxX(1)-MinX(1))*y1/1024+MinX(1); %解码,计算Kp的取值m2=m(CodeL+1:2*CodeL);for i=1:CodeLy2=y2+m2(i)*2^(i-1); %计算输出量endK(s,2)=(MaxX(2)-MinX(2))*y2/1024+MinX(2); %解码,计算Kd的取值m3=m(2*CodeL+1:3*CodeL);for i=1:CodeLy3=y3+m1(i)*2^(i-1); %计算输出量endK(s,3)=(MaxX(3)-MinX(3))*y1/1024+MinX(3); %解码,计算Ki的取值% **********适应度函数***********KK=K(s,:);[KK,Bsj]=pid_ga(KK,Bsj); % 调用pid_ga.mBsji(s)=Bsj; % 最优代价值end[O,D]=sort(Bsji); %最优代价值排序Bestj(k)=O(1) %取最小值BJ=Bestj(k);Ji=Bsji+1e-10;fi=1./Ji; %适应函数值[O2,D2]=sort(fi); %适应函数值排序Bestfi=O2(Size); %取最大值Bests=E(D2(Size),:);% *********** 选择算子************fi_sum=sum(fi);fi_size=(O2/fi_sum)*Size;fi_s=floor(fi_size); %取较大的适应值,确定其位置kk=1;for i=1:Sizefor j=1:fi_s(i) %选择,复制tempE(kk,:)=E(D2(j),:);kk=kk+1;endend% ********** 交叉算子************pc=0.6; %交叉概率n=30*pc;for i=1:2:(Size-1)temp=rand;if pc>temp %交叉条件for j=n:-1:1tempE(i,j)=E(i+1,j); %新、旧种群个体交叉互换tempE(i+1,j)=E(i,j);endendendtempE(Size,:)=Bests;E=tempE;% ********** 变异算子************pm=0.001-[1:1:Size]*(0.001)/Size; %变异算子,从大到小for i=1:Sizefor j=1:2*CodeLtemp=rand;if pm>temp %变异条件if tempE(i,j)==0tempE(i,j)=1;elsetempE(i,j)=0;endendendendtempE(Size,:)=Bests;E=tempE;endBJ,Bestfi,KKfigure(1),plot(time,Bestj);xlabel('Times');ylabel('Best J');figure(2),plot(timef,rin,'r',timef,yout,'b');xlabel('Times');ylabel('rin,yout');function [KK,Bsj]=pid_ga(KK,Bsj)global rin yout timefts=0.001;sys=tf(400,[1,50,0]); % 被控对象为二阶传递函数dsys=c2d(sys,ts,'z'); %做Z变换[num,den]=tfdata(dsys,'v');rin=1.0; % 输入信号为阶跃信号u_1=0.0;u_2=0.0;y_1=0.0;y_2=0.0;x=[0 0 0];B=0;err_1=0;tu=1;s=0;P=100;for k=1:Ptimef(k)=k*ts;r(k)=rin;u(k)=sum(KK.*x); %控制器输出if u(k)>=10 % 约束条件u(k)=10;endif u(k)<=-10u(k)=-10;end%跟踪输入信号yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;err(k)=r(k)-yout(k);% ****** 返回PID 参数*****u_2=u_1;u_1=u(k);y_2=y_1;y_1=yout(k);x(1)=err(k); %计算Px(2)=(err(k)-err_1)/ts; %计算Dx(3)=x(3)+err(k)*ts; %计算Ierr(2)=err_1;err_1=err(k);if s==0if yout(k)>0.95&yout(k)<1.05tu=timef(k); % tu为上升时间s=1; % 进入稳态区域endendendfor i=1:P% 求代价函数值Ji(i)=0.999*abs(err(i))+0.01*u(i)^2*0.1;B=B+Ji(i);if i>1erry(i)=yout(i)-yout(i-1); % 系统误差if erry(i)<0 % 若产生超调,采取惩罚措施B=B+100*abs(erry(i));endendendBsj=B+0.2*tu*10; % 最优代价值最优代价值:BJ = 24.4892;最优适应度值:Bestfi = 0.0408 KK = 16.5039 0.2422 0.8252BJ =24.4892Bestfi =0.0408KK =16.5039 0.2422 0.8252。

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

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

摘要:研究自动控制器参数整定问题,PID参数整定是自动控制领域研究的重要内容,系统参数选择决定控制的稳定性和快速性,也可保证系统的可靠性。

传统的PID参数多采用试验加试凑的方式由人工进行优化,往往费时而且难以满足控制的实时要求。

为了解决控制参数优化,改善系统性能,提出一种遗传算法的PID 参数整定策略。

在本文里,通过介绍了遗传算法的基本原理,并针对简单遗传算法在PID控制中存在的问题进行了分析,提出在不同情况下采用不同的变异概率的方法,并对其进行了实验仿真。

结果表明,用遗传算法来整定PID参数,可以提高优化性能,对控制系统具有良好的控制精度、动态性能和鲁棒性。

关键词:PID控制器;遗传算法;整定PID1 引言传统的比例、积分、微分控制,即PID控制具有算法简单、鲁棒性好和可靠性高等优点,已经被广泛用于工业生产过程。

但工程实际中,PID控制器的比例、积分和微分调节参数往往采用实验加试凑的方法由人工整定。

这不仅需要熟练的技巧,往往还相当费时。

更为重要的是,当被控对象特性发生变化,需要控制器参数作相应调整时,PID控制器没有自适应能力,只能依靠人工重新整定参数,由于经验缺乏,整定结果往往达不到最优值,难以满足实际控制的要求。

考虑生产过程的连续性以及参数整定费事费力,这种整定实际很难进行。

所以,人们从工业生产实际需要出发,基于常规PID控制器的基本原理,对其进行了各种各样的改进。

近年来许多学者提出了基于各种智能算法的PID整定策略,如模糊PID,神经元网络PID等…,但这些先进算法都要求对被控对象有很多的先验知识,在实际应用中往往难于做到。

随着计算技术的发展,遗传算法有了很大的发展。

将遗传算法用于控制器参数整定,已成为遗传算法的重要应用之一。

本文介绍基于遗传算法的PID参数整定设计方法。

这是一种寻求全局最优的控制器优化方法,且无需对目标函数微分,可提高参数优化效果,简化计算过程。

仿真实例表明该方法与其他传统寻优方法相比,在优化效果上具有一定的优势。

遗传算法实验报告

遗传算法实验报告

遗传算法实验报告一、实验目的遗传算法是一种基于自然选择和遗传机制的优化算法,本次实验的主要目的是深入理解遗传算法的原理和工作机制,并通过实际编程实现来解决特定的优化问题,观察其性能和效果。

二、实验原理遗传算法模拟了生物进化的过程,通过对一组潜在的解决方案(称为个体或染色体)进行选择、交叉和变异操作,逐步迭代优化,以找到最优或近似最优的解。

在遗传算法中,每个个体都由一组基因表示,这些基因对应于问题的参数。

适应度函数用于评估每个个体的优劣程度,适应度高的个体更有可能被选择进行繁殖,产生下一代个体。

选择操作通常基于个体的适应度比例,适应度高的个体有更高的概率被选中。

交叉操作将两个父代个体的基因部分组合,生成新的子代个体。

变异操作则以一定的概率随机改变个体的某些基因,以增加种群的多样性。

三、实验环境本次实验使用 Python 编程语言,主要依赖的库有 numpy 用于数组操作,matplotlib 用于结果可视化。

四、实验步骤1、问题定义确定要优化的问题,例如求解函数的最大值或最小值,或者在给定约束条件下寻找最优的参数组合。

定义适应度函数,用于衡量每个个体的优劣。

2、编码方案确定如何将问题的解编码为染色体的形式。

常见的编码方式有二进制编码、实数编码等。

3、初始化种群随机生成一定数量的初始个体,组成初始种群。

4、选择操作根据个体的适应度计算选择概率,使用轮盘赌选择或其他选择方法选择父代个体。

5、交叉操作对选中的父代个体进行交叉,生成子代个体。

6、变异操作以一定的概率对个体的基因进行变异。

7、迭代更新重复进行选择、交叉和变异操作,生成新的种群,直到满足终止条件(如达到最大迭代次数或找到满意的解)。

8、结果分析对最终得到的最优个体进行解码,得到问题的解。

分析遗传算法的性能,如收敛速度、解的质量等。

五、实验结果与分析以求解函数 f(x) = x^2 在区间 0, 10 上的最大值为例,进行了遗传算法的实验。

1、适应度函数定义适应度函数直接采用目标函数 f(x) = x^2 ,即适应度越高,函数值越大。

对于遗传算法实验报告

对于遗传算法实验报告
;)loob(noitarepO_naPnuL diovﻩ double Function(double);
void Extreme_Value(bool);
;)tni,loob(yalpsiD diovﻩ
;)(M_yalpsiD diovﻩ}; // Find the max and min value void GA::Extreme_Value(bool flag){
;))LLUN(emit(dnarsﻩ
;)(raelc、poPﻩ
;)(tinI_AGﻩ
;)galf(eulaV_emertxEﻩ
;)0,galf(yalpsiDﻩ*/
/*;))LLUN(emit(dnarsﻩ for(int i=1;i<=Num_Iteration;++i){
;)galf(noitarepO_naPnuLﻩ ﻩ //for(vector<double>::iterator iter=LunPan、begin();iter!=LunPan、end();++iter){
;0=1muNceD elbuodﻩ
ﻩ /*string p=*iter;*/
{)i--;0=>i;1-)(htgnel、)reti*(=i tni(rofﻩ
t=t*2;
ﻩ ;t*)84-]i[)reti*((=+1muNceDﻩ

ﻩ DecNum1=DecNum1*((2*PI)/ValueOfString);
ﻩ Optimal_Min_Function_Value=Temp;
ﻩ ﻩ ﻩ
;1muNceD=noituloS_X_niM_lamitpOﻩ
ﻩ Optimal_Individual=*iter;

基于多宇宙并行遗传算法PID参数整定

基于多宇宙并行遗传算法PID参数整定
第2 9卷第 5期
、o .9 ,1 2 No 5 .
辽宁工程技术大学学报 ( 自然科学版 )
J un l f a n n e h ia iest ( t rl ce c o r a o igT c n c l o Li Un v ri y Nau a in e) S
21 0 0年 1 0月
Abtat o o l n u ta po es cnrlrq i me t o iesy i cl t du tte c nrl sr c:F rc mpe id s il r cs o t eur ns fdv ri ,df ut o aj s h o t x r o e t i o
SHUN a hua , XU Xi ng Bo
( . l g f a h m a isa dCo p trS in e Y n teNo m a n v riy Ch n qn 1Co l eo t e tc n m u e ce c , a g z r l ie st , o g i g e M u
l c lo i z to o a ptmi ai n.e c .S mu a i n r s t ho t tt e i n ba e n t e m e o ft ni D r mee s t . i l to e ul s w ha he d sg s d o t d o ng PI pa a t r s h h u o t i dgo d r s ls c n s l ec mplx i d ti l oc s o rol a a trt i g p o l m . b ane o e u t, a o v o e n usra pr e sc nt r me e p un n r b e Ke r : I u tilCo to ; Ge tcag rt m ; PI P r me e ; M u t— ni e s a a llg n tcago i y wo ds nd sra n r l nei lo h i D a a tr liu v r e p le e e i l rt r hm

基于遗传算法的闭环控制参数整定

基于遗传算法的闭环控制参数整定

基于遗传算法的闭环控制参数整定一、遗传算法概述遗传算法是一种模拟生物进化过程的搜索算法,它通过模拟自然选择和遗传机制来解决优化问题。

遗传算法的核心思想是“适者生存”,通过迭代过程中的选择、交叉和变异操作,不断优化问题的解。

1.1 遗传算法的基本原理遗传算法的基本原理包括个体编码、初始种群生成、适应度函数评价、选择操作、交叉操作和变异操作。

个体编码是将问题的解用一种形式化的符号串表示;初始种群生成是随机生成一组解的集合;适应度函数评价是评价每个解的优劣;选择操作是按照适应度从当前种群中选择个体,为后续的交叉和变异提供素材;交叉操作是模拟生物的交配过程,通过组合两个个体的部分基因生成新的个体;变异操作是模拟生物基因突变的过程,对个体的部分基因进行随机改变。

1.2 遗传算法的特点遗传算法具有全局搜索能力、鲁棒性强、易于并行计算等特点。

全局搜索能力使得遗传算法能够避免陷入局部最优解;鲁棒性强意味着遗传算法对问题的初值和参数设置不敏感;易于并行计算则使得遗传算法可以利用现代计算机的并行处理能力,提高算法的效率。

二、闭环控制系统介绍闭环控制系统是一种反馈控制系统,它通过比较系统的输出与期望值之间的差异,调整控制输入,以达到控制目标。

闭环控制系统广泛应用于工业、航空航天、机器人等领域。

2.1 闭环控制系统的组成闭环控制系统主要由控制器、被控对象、传感器和反馈回路组成。

控制器根据反馈信号和控制目标计算控制输入;被控对象是控制系统作用的对象;传感器用于检测被控对象的状态;反馈回路将被控对象的状态信息反馈给控制器。

2.2 闭环控制系统的设计要求闭环控制系统的设计要求包括稳定性、快速性、准确性和鲁棒性。

稳定性要求系统在受到扰动后能够恢复到稳定状态;快速性要求系统能够快速响应控制输入的变化;准确性要求系统能够精确跟踪控制目标;鲁棒性要求系统在面对参数变化和外部扰动时仍能保持性能。

三、基于遗传算法的闭环控制参数整定基于遗传算法的闭环控制参数整定是指利用遗传算法优化闭环控制系统的参数,以达到更好的控制效果。

利用遗传算法进行H∞-PID控制器参数整定

利用遗传算法进行H∞-PID控制器参数整定
pl鲫t墨’isdf枷vely c堪帅lIed by粕smcll娴硒dh酗goodeff醯ts.
c佣呐fhvi.和种断柚蚪黼瞄·证确柚∞击孤廖—融’!-
1蚵words:PlD∞nⅡ口I,H.c∞nDl.∞糟fn嘲缸啦in岛g胁硎c al刚t}哪

瑚鼗润斓嘲硐.翻。国攀
利用遗传算法进行H。-PID控制器参数整定
zf=‘%+(1一∞M
‘I势
其中,口为【O.1】上的随机数:变异策略采用均匀变异
策略,即设x-(x。,b错0为父体向量,则分量鼍以概搴 l瓜被选择作为变异,设对知进行变异,则其后代为
x’坼I’’)【2’,错;’,错k’),’其中墨’以等概率取(1.f)】‘i尊t再
+(1.x加,r为【0,11上的随机鼓.魇始种群经过若干代的
O.87。
系统输入为阶跃形式,即日(O=1(f).控制结果 如图2.所示。通过比较可知相对一般方法整定的PID 控制算法来讲,基于本文方法整定PID控捌算法具有
更强的鲁棒性.并且可使系统的性能指标更加忧化.
,&蠡未叠
k。I』山㈨^.。jL.LmL。1▲I.^h“
乏1 -…’’’
’1
’’


05


号向量。

定义2 (日。次优设计问基)cz】:对乎绔定雠
广被控对象G∞和Y,求反馈控制器x国使謦角罐系

统稳定且L山)满足:

.1
ho)|I。<1。
≮,摹

?镉
’j
口.7蚴.j9"J,∞,s,n∞o删髓:EE
586
。。遁
围1.H’标准设计同意
许多控制问题,如鲁棒控制问题、模型匹配问题 等,都可以通过一定的转化称为H。标准控制问题州 并且通过H。设计方法得至0解决。但是,由H.设计方 法得到控制器一般结构比较复杂,不利用工程实现。 考虑到PlD控制器在各种现场的应用情况,本文提出 了基于H.设计的PD控制器参数整定问题。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于遗传算法的PID 控制器参数整定报告一、 遗传算法。

遗传算法(GAs )是基于自然界生物进化机制的搜索寻优技术。

用遗传算法来整定PID 参数,可以提高优化性能,对控制系统有良好的控制精度、动态性能和鲁棒性。

一般的,Gas 包括三个基本要素:复制、交叉和突变。

二、PID Optimal-TuningPID 控制:对偏差信号e(t)进行比例、积分和微分运算变换后形成的一种控制规律。

(1)可调参数:比例度δ(P )、 积分时间Ti (I )、微分时间Td (D )。

通常,PID 控制准则可以写成下面传递函数的形式: )1()(s T T s K s G d ip ++= (2) Kp 、Ti 和Td 分别是比例放大率、积分时间常量和微分时间常量。

1) 比例控制(P ):是一种最简单的控制方式。

其控制器的输出与输入误差信号成比例关系。

当仅有比例控制时系统输出存在稳态误差(Steady state error ),比例度减小,稳态误差减小;2) 积分(I )控制:在积分控制中,控制器的输出与输入误差信号的积分成正比关系。

3) 微分(D )控制:在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。

文中,性能指标是误差平方的时间加权积分,表示为:),,1,0(,02n k dt e t J it k Λ==⎰ (3)其中n 是非负整数,i t 是积分周期。

此外,其他标准项如超调量、上升时间和稳定时间()()()()⎥⎦⎤⎢⎣⎡++=⎰t e dt d T d e T t e K t u d t i p 01ττ也被一个合成性能指标选择:))(1(s s r r c t c t c os J ++= (4)s r os t t 、、分别代表超调量、上升时间和稳定时间。

s r c 、c 两个系数有用户定义或决定。

预期的性能指标的最下化可以认为是小的超调量、短的上升时间和稳定时间。

三个PID 参数的编码方式如下:10101011:S 10101000 11100111p K i K d Kp K 、i K 和d K 都是八位二进制字符格式。

自适应函数的选择关系到性能指标,如:101)(J J F F == (5) 实际上,)(J F 可以是任何一个能切实表达F 和J 关系的非线性函数。

遗传操作是模拟生物基因遗传的操作,从优化搜索的角度而言,遗传操作可使问题的解一代一代地优化,并逼近最优解,主要包括三个遗传算子:选择、交叉和变异。

关于他们的具体方法这里不在赘述。

三、 计算机实现作者编程使用的事TURBO C 。

程序包括两个部分:一个是仿真PID 控制系统的闭环阶跃响应;另一个是实施对一代所有成员的遗传算法的仿真,这里遗传算法将一代作为一个整体。

在第一代生物的二进制代码随机产生之后,这个过程重复直至迭代次数达到预选的次数。

步长、PID 参数范围、性能指标、自适应函数和方法得时间延迟都是从一个文件中读取。

而遗传算法的的参数,诸如世代数、交叉概率、变异概率、选择概率等通过菜单选择。

整个闭环系统仿真的完成可以用四阶龙格库塔法或直接时域计算。

在程序中,复制的实现是通过轮盘赌博法的线性搜索,面积加权于上一代成员的适应值。

交叉发生在每一对复制产生的成员。

交叉操作是将一个随机产生的一个在0到1之间数与交叉概率比较决定是否需要交叉。

如果需要交叉,则在1到47之间随机产生一个交叉位置代码。

变异,对新一代所有成员都随机产生一个0到1之间的数与变异概率比较,然后再决定是否改变代码的一位。

同理,反转也是这样判定和操作的。

另一需要说明的事,两个反转位置代码是在1~48之间随机选择的。

同样,依据随机的预选概率,预选操作是用好的后代取代不好父代。

除了这些基本操作,另一个过程叫做存储也在程序中进行,它是存储老一代适应值高的成为新一代。

程序实现过程列出如下:(1) 将d P K K K 和、i 三个参数编码成二进制字符串;(2) 生成第一代成员编码成字符串;(3) 将字符串解码成三个参数:d P K K K 和、i ;(4) 计算所有的传递函数;(5) 使用四阶龙格库塔仿真闭环系统的阶跃响应;(6) 计算自适应函数;(7) 用轮盘赌博法复制(繁殖)新一代的48位二进制字符串;(8) 交叉,对新一代中每对进行交叉操作,交叉位置随机产生;(9) 变异,依据变异概率对新一代所以成员进行变异操作;(10) 反转,依据反转概率对新一代所以成员进行反转操作;(11) 预选,依据预选概率对新一代所以成员进行反转操作;(12) 存储老一代中自适应值高的使之成为新一代;(13) 重复(3)~(12),迭代直至结果被接受。

在程序中,不同的性能指标可以选择,如误差的平方时间加权的积分。

通过改变性能指标组合或增加一些系数来改变那些不完全满足要求的成员的适应值。

四、数值例子在这里研究者共做了四个数值例子。

使用了ZN 和遗传两种算法,对于遗传算法每个例子分别又使用了三个性能指标函数:)0.1c -where ))(r c 40==s c J ITSE J ISE J (和(、。

(注:由于论文中只是指出了c J 的表达式,其他数据都是取自于其他论文。

所以在后面的数值仿真中,本文只使用自适应函数为c J 来进行实现PID 参数整定。

)Example 2 )]44.01)(3.01/[()(33.02S S e S P S ++=-;研究者的数值结果详见附录参考文献。

本人对文中第二个例子进行了仿真:样本个数为30,采用二进制编码方式,交叉概率:Pc=0.6,变异概率:Pm=0.001,种群大小M=30,终止迭代进化次数G=100。

得到最佳样本Bests=[10111001];最终PID 参数整定为Ki=15.5816;Ki=0.9912;Kd=0.7136。

图1为系统阶跃响应,图2为目标函数J 的优化过程。

五、结论通过对仿真结果的对比,发现GA 得到的结果总是好于ZN 。

GA 成功的降低了不希望的超调量并且达到较少的上升和稳定时间。

可以有效的解释作者提出的工作指标效果更好,在例1和例2中得到了充分的体现。

图1 带延迟的二阶系统的阶跃响应图2 目标函数J的优化过程MATLAB主程序:%基于GA(Generic Algorithm)算法的PID参数整定clear all;close all;global rin yout timefG=100;%迭代次数Size=30;%种群大小CodeL=10;%编码长度/3MinX(1)=zeros(1);MaxX(1)=20*ones(1);MinX(2)=zeros(1);MaxX(2)=1.0*ones(1);MinX(3)=zeros(1);MaxX(3)=1.0*ones(1);E=round(rand(Size,3*CodeL)); %初始化编码BsJ=0;for kg=1:1:Gtime(kg)=kg;for s=1:1:Size %译码m=E(s,:);y1=0;y2=0;y3=0;m1=m(1:1:CodeL);for i=1:1:CodeLy1=y1+m1(i)*2^(i-1);endKpid(s,1)=(MaxX(1)-MinX(1))*y1/1023+MinX(1);m2=m(CodeL+1:1:2*CodeL);for i=1:1:CodeLy2=y2+m2(i)*2^(i-1);endKpid(s,2)=(MaxX(2)-MinX(2))*y2/1023+MinX(2);m3=m(2*CodeL+1:1:3*CodeL);for i=1:1:CodeLy3=y3+m3(i)*2^(i-1);endKpid(s,3)=(MaxX(3)-MinX(3))*y3/1023+MinX(3);%****** 第一步1 : 评估个体BestJ(个体编码)****** Kpidi=Kpid(s,:);[Kpidi,BsJ]=pidzd(Kpidi,BsJ); %调用M文件BsJi(s)=BsJ;end[OderJi,IndexJi]=sort(BsJi);BestJ(kg)=OderJi(1);BJ=BestJ(kg);Ji=BsJi+1e-10;fi=1./Ji;[Oderfi,Indexfi]=sort(fi);Bestfi=Oderfi(Size);BestS=Kpid(Indexfi(Size),:);Bestfi=Oderfi(Size);BestS=E(Indexfi(Size),:);kgBJBestS;%****** 第二步: 选择和复制操作n****** fi_sum=sum(fi);fi_Size=(Oderfi/fi_sum)*Size;fi_S=floor(fi_Size);kk=1;for i=1:1:Sizefor j=1:1:fi_S(i)TempE(kk,:)=E(Indexfi(i),:);kk=kk+1;endend%************ 第三步:交叉操作************ pc=0.60;n=ceil(20*rand);for i=1:2:(Size-1)temp=rand;if pc>temp %交叉条件for j=n:1:20TempE(i,j)=E(i+1,j);TempE(i+1,j)=E(i,j);endendendTempE(Size,:)=BestS;E=TempE;%************ 第四步: 变异操作************** pm=0.001-[1:1:Size]*(0.001)/Size;for i=1:1:Sizefor j=1:1:3*CodeLtemp=rand;if pm>temp %变异条件if TempE(i,j)==0TempE(i,j)=1;elseTempE(i,j)=0;endendendendTempE(Size,:)=BestS;E=TempE;%******************************************************* endBestfi %最大适应值BestS %最佳个体编码Kpidi %参数整定结果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');%单位阶跃响应子程序:function [Kpidi,BsJ]=pidzd (Kpidi,BsJ)global rin yout timefts=0.001;%采样时间sys=tf(12.5,[1,2.58,12.5]);dsys=c2d(sys,ts,'z');[num,den]=tfdata(dsys,'v');rin=1.0; %输入的信号u_1=0.0;u_2=0.0;y_1=0.0;y_2=0.0;x=[0,0,0]';B=0;error_1=0;tu=1;s=0;P=1000;for k=1:1:Ptimef(k)=k*ts;r(k)=rin;u(k)=Kpidi(1)*x(1)+Kpidi(2)*x(2)+Kpidi(3)*x(3); %控制规律if u(k)>=10u(k)=10;endif u(k)<=-10u(k)=-10;endyout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; %差分方程形式error(k)=r(k)-yout(k); %控制方案%------------ 返回PID参数-------------u_2=u_1;u_1=u(k);y_2=y_1;y_1=yout(k);x(1)=error(k); % 计算Px(2)=(error(k)-error_1)/ts; % 计算D 微分x(3)=x(3)+error(k)*ts; % 计算I 积分error_2=error_1;error_1=error(k);if s==0if yout(k)>0.95&yout(k)<1.05tu=timef(k);s=1;endendendfor i=1:1:PJi(i)=0.999*abs(error(i))+0.01*u(i)^2*0.1;B=B+Ji(i);if i>1erry(i)=yout(i)-yout(i-1);if erry(i)<0B=B+100*abs(erry(i));endendendBsJ=B+0.2*tu*10;plot(time,BestJ);%种群规模随时间的变化xlabel('Times');ylabel('Best_J');figure(2);plot(timef,rin,'r',timef,yout,'b');xlabel('Time(s)');ylabel('rin,yout');%单位阶跃响应。

相关文档
最新文档