pg下载赏金下载 仿生智能算法系列之四---遗传算法

频道:生活应用 日期: 浏览:38

遗传算法的概念,最早是被Bagley J.D在1967年提出来的,而开始对遗传算法理论和方法进行系统性研究的时间是1975年,这一开创性工作是由Michigan大学的J.H.Holland所实施的,当时,其主要目的是对自然和人工系统的自适应过程加以说明。

遗传算法优缺点分析_遗传算法原理与应用_遗传算法应用生活实例

遗传算法,简称为GA,也就是Genetic Algorithm,其从本质上来看,是一种并不依靠具体问题的直接搜索方法。遗传算法在模式识别方面得到了应用,在神经网络方面也得到了应用,在图像处理方面同样得到了应用,在机器学习方面也有应用,在工业优化控制方面有使用,在自适应控制方面有运用,在生物科学方面有应用,在社会科学方面也有应用。在人工智能研究里,如今人们觉得,遗传算法、自适应系统、细胞自动机、混沌理论,和人工智能是一样的,都是对今后十年的计算技术有着重大影响的关键技术。

遗传算法的原理是基于自然选择学说,主要包括以下三个方面:

遗产,这成了生物的普遍特性,亲代把生物方面的信息传递给子代,子代始终会和亲代表现出相同或者相似的性状。生物具备了这样的特征,物种才能够达成稳定的存在局面。

亲代与子代当中,以及子代范围里不同个体相互之间会存在差异,这种差异被称作变异,变异是随机出现的,变异的选择以及积累乃是生命多样性的根源。

(3)生存出现斗争跟适者能够生存:存有适应性变异的个体被留存下来,不具备适应性变异的个体被淘汰掉,借由一代又一代对于生存环境的选择产生的作用,性状慢慢且逐步地同其祖先变得有所不同,进而演变为新型的物种。

遗传算法把“优胜劣汰,适者生存”这种生物进化原理引入到因优化参数而形成的编码串联群体里,依据所选定的适应度函数,借助遗传中的复制、交叉以及变异来对个体展开筛选,让适应度高的个体得以被保留下来,进而组成新的群体,这个新群体不但继承了上一代的信息,而且还比上一代更具优势。如此循环往复,群体中个体的适应度持续提升,直至满足一定的条件。遗传算法的算法较为简单,能够并行处理,并且可以找到全局最优解。

现今,遗传算法于诸多生产领域有着使用,像:(1)函数的优化。(2)组合的优化。(3)生产调度方面的问题。(4)自动的控制。(5)机器人。(6)图像的处理。

给定的这张图中的函数,存在着一个全部范围内最优的点,以及多个局部区域内最优的点,这种情况下,便能够采用遗传算法来开展寻找解决方案的操作。

遗传算法应用生活实例_遗传算法优缺点分析_遗传算法原理与应用

遗传算法的操作过程相对简单,具体的实施流程如下:

遗传算法应用生活实例_遗传算法优缺点分析_遗传算法原理与应用

遗传算法的优点:

(1)群体搜索,易于并行化处理;

(2)不是盲目穷举,而是启发式搜索;

(3)适应度函数不受连续、可微等条件的约束,适用范围很广。

(4)易于达成。一旦存有一个遗传算法的程序,要是想要解决一个全新的问题,仅仅只需针对全新的问题再度开展基因编码便可;要是编码方式也是一样的,那么仅仅只要变动一下适应度函数即可。

遗传算法的缺点:

全局搜索的那些能力并不强大,极易陷入局部最优解的状况之中,长久无法脱离出来;可以结合SA去实施改进,这是由于SA在理论层面上能够百分百地获取到全局最优,然而其搜索所需要付出的代价较为高昂。

下文为此处是遗传算法致使 PID控制所呈现的matlab最顶层最为精优化、求解的应用程序,与此同时呢向外披露了迭代以后的最终结果,而千差万别的迭代回路很有可能产出截然不同路径之下的寻优办法。

遗传算法应用生活实例_遗传算法优缺点分析_遗传算法原理与应用

clc

clear

close all

%global sys_controlled

%global time

global Ball_Hoop_d

rand('state',0);

你提供的内容似乎并不是一个完整的可供改写句子pg下载网站麻将胡了,只有一个占位符,如果这不是你想要的pg下载通道,请补充正确内容以便改写。

建立对球与篮筐系统的定义,对其进行界定,明确该球与篮筐系统。

hoop=tf(,);

H=tf(,);

sys_ball=tf(

.42 1.873 0

1.42 1.873 112.11

);

sys_hoop=series(hoop,H);

球篮等于,一系列的的系统篮圈,可以配合使用系统球。

球状篮筐的相关数据等于,基于球状篮筐,以零点零一为参数,采用零阶保持器方式,所得到的某种运算结果。

%____________________________________________________________________

初始那遗传算法,进行初始化操作,针对遗传算法展开初始化行为。

populationSize=3000;

variableBounds=

evalFN等于 'Ultimate_PID_objfun_mse',将这个改成相关的目标函数。

evalOps=;

options=;

初始化种群等于,初始化基因种群,依据种群大小,变量边界范围,求每个个体适应度函数,评估操作,以及选项参数来进行。

%____________________________________________________________________

对遗传算法的参数进行设置,设置这些相关的参数呢,是关于遗传算法的操作行为呀,通过这样的操作来设定参数,是针对遗传算法这个特定性质的。

bounds=

-10000 10000;-10000 10000;-10000 10000

evalFN 被设定为 'Ultimate_PID_objfun_mse',要把这个改成相关的目标函数。

evalOps=;

startPop=initPop;

opts=;

termFN='maxGenTerm';

termOps=300;

selectFN='normGeomSelect';

selectOps=0.08;

xOverFNs='arithXover';

xOverOps=4;

mutFNs='unifMutation';

mutOps=500;

%____________________________________________________________________

让遗传算法进行迭代,重复这样的操作,持续进行这样的过程,不断开展这样的行为。

x,endPop,bPop,traceInfo

等于ga,其参数有界限,有求值函数,有求值操作,有起始种群,有选项等。

包含术语功能名称,术语操作,选择功能名称(选择操作),交叉变异功能名称列表,交叉变异操作列表,变异功能名称列表,变异操作。

%____________________________________________________________________

生成,那个具有连贯性状态的比例积分微分控制器,没错的%。

den_pid=;

num_pid=

x(1) x(2) x(3)

; %Kd Kp Ki

sys_pid=tf(num_pid,den_pid);

使连续的比例积分微分控制器离散化,对其进行离散处理,将这个连续的比例积分微分控制器予以离散化。

disp('PID controller')

sysd_pid等于,c2d作用于,sys_pid以及,.01并且,使用'tustin'这种方式。

%____________________________________________________________________

构成系统控制的部分,等于反馈,该反馈为串联系统d_pid与篮球 hoop_d形成的系统,其反馈系数为1。

figure(1)

time =0:0.01:10;

u=.4*ones(size(time));

lsim(sys_controlled,u,time);

%____________________________________________________________________

正在朝着屏幕打印,这关乎PID数值,是这么个情况 ,有此行为。

%x

显示标点,表示的pg下载,长长的横线,多条横线,组合而成,连续排列,形成的这样一个图案,图案。最后。

disp('| PID GAIN VALUES |')

显示,'|________________________________|'。

disp('| Kd Kp Ki |');

disp(

x(1) x(2) x(3)

);

disp('|________________________________|')

%____________________________________________________________________

%Printing to screen the PID values

%x

%disp(' Kd Kp Ki');

%disp('ZN: 4.74 6 1.91');

%disp( x );

%____________________________________________________________________

画出最佳总体进展,进行绘图,展现最佳总体进展情况,针对最佳总体进展来绘图,是关于绘制最佳总体进展。

figure(2)

细分绘图区域为三行一列中的第一块,绘制变量bPop的第一列数据与第三列数据所构成的图形。

给它设置标题为“Kp Value”,并且,给它设置纵坐标标签为“增益”。

在子图(3,1,2)中,绘制(bPop的第一列,bPop的第四列)。

把标题设置为('Ki值'),,将纵坐标标签设置为('增益')。

布置子图为三行一列中的第三个,绘制点 bPop 中第一列元素对应的第二列元素所构成的线条。

给它设置标题为“Kd Value”,给横坐标设置标签为“Generations”,给纵坐标设置标签为“Gain”。

%____________________________________________________________________

poles=pole(sys_controlled);

if abs(real(poles(1)))>1

显式输出,‘%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%’。

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('REAL POLE VALUE')

disp(poles(1))

elseif abs(imag(poles(1)))>1

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('%THIS SYSTEM IS UNSTABLE DUE TO POLE 1%')

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('IMAGINARY POLE VALUE')

disp(poles(1))

elseif abs(real(poles(2)))>1

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('REAL POLE VALUE')

disp(poles(2))

elseif abs(imag(poles(2)))>1

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('%THIS SYSTEM IS UNSTABLE DUE TO POLE 2%')

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('IMAGINARY POLE VALUE')

disp(poles(2))

elseif abs(real(poles(3)))>1

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

这个系统不稳定,是因为极点3,显示百分之,这个系统不稳定,是因为极点3,显示百分之,这个系统不稳定,是因为极点3%。

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('REAL POLE VALUE')

disp(poles(3))

elseif abs(imag(poles(3)))>1

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('%THIS SYSTEM IS UNSTABLE DUE TO POLE 3%')

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('IMAGINARY POLE VALUE')

disp(poles(3))

elseif abs(real(poles(4)))>1

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('REAL POLE VALUE')

disp(poles(4))

elseif abs(imag(poles(4)))>1

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('%THIS SYSTEM IS UNSTABLE DUE TO POLE 4%')

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('IMAGINARY POLE VALUE')

disp(poles(4))

elseif abs(real(poles(5)))>1

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('REAL POLE VALUE')

disp(poles(5))

elseif abs(imag(poles(5)))>1

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('%THIS SYSTEM IS UNSTABLE DUE TO POLE 5%')

disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')

disp('IMAGINARY POLE VALUE')

disp(poles(5))

elseif abs(imag(poles))

把显示命令,应用于,输出这条内容,即“这个系统是稳定的”。

elseif abs(real(poles))

disp('This system is stable');

网友留言(0)

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。