遗传算法求复杂函数极值问题【精品毕业设计】(完整版)

合集下载

遗传算法在求解复杂函数给定区间上最值中的应用

遗传算法在求解复杂函数给定区间上最值中的应用

计算智能导论大作业---遗传算法在求解复杂函数给定区间上最值中的应用一、遗传算法简介遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。

遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个(individual)组成。

每个个体实际上是染色体(chromosome)带有特征的实体。

染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。

因此,在一开始需要实现从表现型到基因型的映射即编码工作。

由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。

这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解,对于各种通用问题都可以使用1.1术语说明由于遗传算法是由进化论和遗传学机理而产生的搜索算法,所以在这个算法中会用到很多生物遗传学知识,下面是一些常用术语的说明:染色体染色体又可以叫做基因型个体(individuals),一定数量的个体组成了群体(population),群体中个体的数量叫做群体大小。

基因基因是串中的元素,基因用于表示个体的特征。

例如有一个串S=1011,则其中的1,0,1,1这4个元素分别称为基因。

利用遗传算法求函数的极大值

利用遗传算法求函数的极大值

利用遗传算法求函数的极大值遗传算法是一种通过模拟生物进化的方式来解决优化问题的算法。

它基于达尔文的演化论思想,通过不断演化和交叉变异,逐步优化解空间中的解向最优解靠拢。

在求解函数的极大值问题中,遗传算法可以通过优化染色体的基因序列来寻找最大值点。

遗传算法的基本流程如下:1.初始化种群:随机生成初始种群,每个个体都对应问题的一个可能解。

2.适应度评估:根据问题的具体要求,计算每个个体的适应度值,即目标函数值。

3.选择操作:根据适应度值选择一定数量的个体作为父代,用于进行交叉和变异操作。

4.交叉操作:从父代中选择两个个体,按照一定的交叉规则对其基因序列进行交叉生成子代。

5.变异操作:对子代的基因序列进行一定概率的变异操作,引入新的基因。

6.新一代种群形成:将父代和子代合并形成新一代种群。

7.终止条件判断:根据设定的终止条件判断是否停止算法。

8.若满足终止条件,输出结果;否则,转至步骤2在求解函数的极大值问题中,适应度评估的目标函数可以直接使用待求解函数的值。

下面以一个简单的函数f(x)=x^2为例,说明如何利用遗传算法求函数的极大值。

1.初始化种群:随机生成一定数量的个体,每个个体的基因序列代表一个可能的解,在本例中基因序列即为x的取值。

2.适应度评估:计算每个个体的适应度,即将基因序列代入目标函数得到函数值。

3.选择操作:根据适应度值选择一定数量的个体作为父代。

4.交叉操作:从父代中选择两个个体,按照一定的交叉规则对其基因序列进行交叉生成子代。

5.变异操作:对子代的基因序列进行一定概率的变异操作,引入新的基因。

6.新一代种群形成:将父代和子代合并形成新一代种群。

7.终止条件判断:根据设定的终止条件判断是否停止算法。

例如,可以设定迭代次数达到一定阈值或者适应度值足够接近最大值。

8.若满足终止条件,输出最优解的基因序列;否则,转至步骤2通过不断迭代上述步骤,遗传算法可以逐步逼近函数的极大值点。

在实际应用中,可以根据问题的具体特性和要求对交叉、变异概率等参数进行调整,以达到更好的求解效果。

最新遗传算法解决最大值问题_免费下载-药学医学精品资料

最新遗传算法解决最大值问题_免费下载-药学医学精品资料

• 可见,经交叉后得到的新的种群为: • S01=10001,S02=11010,S03=01101,S04=11001
• ⑹变异 • 变异概率一般都很小,假设本次循环中没有发生变异,则变异 前的种群即为进化后所得到的第1代种群。即: • S11=10001,S12=11010,S13=01101,S14=11001 • 然后,对第1代种群重复上述(4)——(6)的操作。 • 对第1代种群,同样重复上述(4)——(6)的操作。其选择情况如 图所示: • 第1代种群的选择情况表 • 编号 染色体 x 适应值 百分比% 累计百分比% 选中次数 • S11 10001 27 289 16.43 16.437 1 • S12 11010 26 676 38.43 54.86 2 • S13 01101 13 169 9.61 64.47 0 • S14 11001 25 625 35.53 100 1
• • • • • • • • •
初始种群情况表
编号 染色体 x 适应值 百分比% 累计百分比% 选中次数 S01 01101 13 169 14.44 14.44 1 S02 11001 25 625 52.88 67.18 2 S03 01000 8 64 5.41 72.59 0 S04 10010 18 324 27.41 100 1 ⑷选择操作 假设采用轮盘赌方式选择个体,且依次生成的4个随机数(相 当于轮盘上指针所指的数)为0.85、0.32、0.12和0.46,经选择后得到 的新的种群为: • S01=10010,S02=11001,S03=01101,S04=11001 • 其中,染色体11001在种群中出现了2次,而原染色体01000则 因适应值太小而被淘汰。
• • •
• • • • • •

实验五:遗传算法求解函数最值问题实验

实验五:遗传算法求解函数最值问题实验

实验五:遗传算法求解函数最值问题实验一、实验目的使用遗传算法求解函数在及y的最大值。

二、实验容使用遗传算法进行求解,篇末所附源代码中带有算法的详细注释。

算法中涉及不同的参数,参数的取值需要根据实际情况进行设定,下面运行时将给出不同参数的结果对比。

定义整体算法的结束条件为,当种群进化次数达到maxGeneration时停止,此时种群中的最优解即作为算法的最终输出。

设种群规模为N,首先是随机产生N个个体,实验中定义了类型Chromosome表示一个个体,并且在默认构造函数中即进行了随机的操作。

然后程序进行若干次的迭代,在每次迭代过程中,进行选择、交叉及变异三个操作。

1.选择操作首先计算当前每个个体的适应度函数值,这里的适应度函数即为所要求的优化函数,然后归一化求得每个个体选中的概率,然后用轮盘赌的方法以允许重复的方式选择选择N个个体,即为选择之后的群体。

但实验时发现结果不好,经过仔细研究之后发现,这里在x、y 取某些值的时候,目标函数计算出来的适应值可能会出现负值,这时如果按照把每个个体的适应值除以适应值的总和的进行归一化的话会出现问题,因为个体可能出现负值,总和也可能出现负值,如果归一化的时候除以了一个负值,选择时就会选择一些不良的个体,对实验结果造成影响。

对于这个问题,我把适应度函数定为目标函数的函数值加一个正数,保证得到的适应值为正数,然后再进行一般的归一化和选择的操作。

实验结果表明,之前的实验结果很不稳定,修正后的结果比较稳定,趋于最大值。

2.交叉操作首先是根据交叉概率probCross选择要交叉的个体进行交叉。

这里根据交叉参数crossnum进行多点交叉,首先随机生成交叉点位置,允许交叉点重合,两个重合的交叉点效果互相抵消,相当于没有交叉点,然后根据交叉点进行交叉操作,得到新的个体。

3.变异操作首先是根据变异概率probMutation选择要变异的个体。

变异时先随机生成变异的位置,然后把改位的01值翻转。

利用遗传算法求函数的极大值

利用遗传算法求函数的极大值

利用遗传算法求函数的极大值function[BestSfi,BestS,x1,x2]=GenericAlgorithm(Size,G,Codel,umax,umin,pc,pm)----------------------------------------------------------------------------------------------------------------------%主要符号说明% Size 种群大小,选为60% G 终止进化代数,选为100% Codel 用二进制编码串表示决策变量x1,x2,选为10位% umax 决策变量上限2.048% umin 决策变量下限2.048% pc 交叉概率,选为0.8% pm 变异概率,选为0.01----------------------------------------------------------------------------------------------------------------------E=round(rand(Size,2*Codel)); %随机生成二十位的编码,前十位为x1,后十位为x2for k=1:1:Gtime(k)=k;for s=1:1:Sizem=E(s,:);y1=0;y2=0; %初始化m1=m(1:1:Codel);for i=1:1:Codely1=y1+m1(i)*2^(i-1); %二进制转化为十进制endx1=(umax-umin)*y1/1023+umin; %解码后x1的实际值m2=m(11:1:2*Codel);for i=1:1:Codely2=y2+m2(i)*2^(i-1);endx2=(umax-umin)*y2/1023+umin; %解码后x2的实际值F(s)=100*(x1^2-x2)^2+(1-x1)^2; %所求函数endJi=1./F; %目标函数,此处取适应度的倒数%第一步,算出最优染色体BestJ(k)=min(Ji);fi=F;[Oderfi,Indexfi]=sort(fi);Bestfi=Oderfi(Size);BestS=E(Indexfi(Size),:);bfi(k)=Bestfi;%第二步,选择和复制过程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%第三步,交叉过程n=ceil(20*rand);for i=1:2:(Size-1)temp=rand;if pc>tempfor i=n:1:20TempE(i,j)=E(i+1,j);TempE(i+1,j)=E(i,j);endendendTempE(Size,:)=BestS;E=TempE;%第四步,变异过程for i=1:1:Sizefor j=1:1:Codeltemp=rand;if pc>tempif TempE(i,j)==0TempE(i,j)=1;elseTempE(i,j)=0;endendendend%保证TempPop(30,:)是最大适应度的代码TempE(Size,:)=BestS;E=TempE;end%输出结果Max_Value=Bestfi;Bestfi %显示最大适应度值BestS %显示对应的染色体x1x2subplot(1,2,1);plot(time,BestJ); %目标函数title('目标函数J的优化过程')xlabel('Times');ylabel('Best J');subplot(1,2,2);plot(time,bfi); %适应度函数title('适应度F的优化过程')xlabel('times');ylabel('Best F');在Matlab下运行的结果为:GenericAlgorithm(60,100,10,2.048,-2.048,0.80,0.01),回车Bestfi = 3.9059e+003。

遗传算法用matlab求函数极大值

遗传算法用matlab求函数极大值

遗传算法用matlab求函数极大值一、题目:寻找f(x)=x2,,当x在0~31区间的最大值。

二、源程序:%遗传算法求解函数最大值%本程序用到了英国谢菲尔德大学(Sheffield)开发的工具箱GATBX,该工具箱比matlab自带的GATOOL使用更加灵活,但在编写程序方面稍微复杂一些Close all;Clear all;figure(1);fplot('variable*variable',[0,31]); %画出函数曲线%以下定义遗传算法参数GTSM=40; %定义个体数目ZDYCDS=20; %定义最大遗传代数EJZWS=5; %定义变量的二进制位数DG=0.9; %定义代沟trace=zeros(2, ZDYCDS); %最优结果的初始值FieldD=[5;-1;2;1;0;1;1]; %定义区域描述器的各个参数%以下为遗传算法基本操作部分,包括创建初始种群、复制、交叉和变异Chrom=crtbp(GTSM, EJZWS); %创建初始种群,即生成给定规模的二进制种群和结构gen=0; %定义代数计数器初始值variable=bs2rv(Chrom, FieldD); %对生成的初始种群进行十进制转换ObjV=variable*variable; %计算目标函数值f(x)=x2 while gen<ZDYCDS %进行循环控制,当当前代数小于定义的最大遗传代数时,继续循环,直至代数等于最大遗传代数FitnV=ranking(-ObjV); %分配适应度值SelCh=select('sus', Chrom, FitnV, DG); %选择,即对个体按照他们的适配值进行复制SelCh=recombin('xovsp', SelCh, 0.7); %交叉,即首先将复制产生的匹配池中的成员随机两两匹配,再进行交叉繁殖SelCh=mut(SelCh); %变异,以一个很小的概率随机地改变一个个体串位的值variable=bs2rv(SelCh, FieldD); %子代个体的十进制转换ObjVSel=variable*variable; %计算子代的目标函数值[Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel);%再插入子代的新种群,其中Chrom为包含当前种群个体的矩阵,SelCh为包好当前种群后代的矩阵variable=bs2rv(Chrom, FieldD); %十进制转换gen=gen+1; %代数计数器增加%输出最优解及其序号,并在目标函数图像中标出,Y为最优解, I为种群的%序号[Y, I]=max(ObjV);hold on; %求出其最大目标函数值plot(variable(I), Y, 'bo');trace(1, gen)=max(ObjV); %遗传算法性能跟踪trace(2, gen)=sum(ObjV)/length(ObjV);end%以下为结果显示部分,通过上面计算出的数值进行绘图variable=bs2rv(Chrom, FieldD); %最优个体进行十进制转换hold on, grid;plot(variable,ObjV,'b*'); %将结果画出三、运行结果:由图可见该函数为单调递增函数,即当X=31时,该取得最大值f(x)max =961。

基本遗传算法【精品毕业设计】(完整版)

基本遗传算法【精品毕业设计】(完整版)

基本遗传算法【精品毕业设计】(完整版)遗传算法1、遗传算法⽣物学基础和基本理论达尔⽂⾃然选择学说认为,⽣物要⽣存下去,就必须进⾏⽣存⽃争。

⽣存⽃争包括种内⽃争、种间⽃争以及⽣物跟⽆机环境之间的⽃争三个⽅⾯。

在⽣存⽃争中,具有有利变异(mutation)的个体容易存活下来,并且有更多的机会将有利变异传给后代;具有不利变异的个体就容易被淘汰,产⽣后代的机会也少得多。

因此,凡是在⽣存⽃争中获胜的个体都是对环境适应性⽐较强的。

达尔⽂把这种在⽣存⽃争中适者⽣存,不适者淘汰的过程叫做⾃然选择。

达尔⽂的⾃然选择学说表明,遗传和变异是决定⽣物进化的内在因素。

遗传是指⽗代与⼦代之间,在性状上存在的相似现象。

变异是指⽗代与⼦代之间,以及⼦代的个体之间,在性状上或多或少地存在的差异现象。

在⽣物体内,遗传和变异的关系⼗分密切。

⼀个⽣物体的遗传性状往往会发⽣变异,⽽变异的性状有的可以遗传。

遗传能使⽣物的性状不断地传送给后代,因此保持了物种的特性,变异能够使⽣物的性状发⽣改变,从⽽适应新的环境⽽不断地向前发展。

⽣物的各项⽣命活动都有它的物质基础,⽣物的遗传与变异也是这样。

根据现代细胞学和遗传学的研究得知,遗传物质的主要载体是染⾊体(chromsome),染⾊体主要是由DNA(脱氧核糖核酸)和蛋⽩质组成,其中DNA⼜是最主要的遗传物质。

现代分⼦⽔平的遗传学的研究⼜进⼀步证明,基因(gene)是有遗传效应的⽚段,它储存着遗传信息,可以准确地复制,也能够发⽣突变,并可通过控制蛋⽩质的合成⽽控制⽣物的性状。

⽣物体⾃⾝通过对基因的复制(reproduction)和交叉(crossover),即基因分离、基因⾃由组合和基因连锁互换)的操作使其性状的遗传得到选择和控制。

同时,通过基因重组、基因变异和染⾊体在结构和数⽬上的变异产⽣丰富多采的变异现象。

需要指出的是,根据达尔⽂进化论,多种多样的⽣物之所以能够适应环境⽽得以⽣存进化,是和上述的遗传和变异⽣命现象分不开的。

使用遗传算法求解函数最大值【精品毕业设计】(完整版)

使用遗传算法求解函数最大值【精品毕业设计】(完整版)

使用遗传算法求解函数最大值题目使用遗传算法求解函数f(x,y)=x∗sin(6∗y)+y∗cos⁡(8∗x)在x∈[1,2]及y∈[1,2]的最大值。

解答算法使用遗传算法进行求解,篇末所附源代码中带有算法的详细注释。

算法中涉及不同的参数,参数的取值需要根据实际情况进行设定,下面运行时将给出不同参数的结果对比。

定义整体算法的结束条件为,当种群进化次数达到maxGeneration时停止,此时种群中的最优解即作为算法的最终输出。

设种群规模为N,首先是随机产生N个个体,实验中定义了类型Chromosome表示一个个体,并且在默认构造函数中即进行了随机的操作。

然后程序进行若干次的迭代,在每次迭代过程中,进行选择、交叉及变异三个操作。

一选择操作首先计算当前每个个体的适应度函数值,这里的适应度函数即为所要求的优化函数,然后归一化求得每个个体选中的概率,然后用轮盘赌的方法以允许重复的方式选择选择N个个体,即为选择之后的群体。

但实验时发现结果不好,经过仔细研究之后发现,这里在x、y取某些值的时候,目标函数计算出来的适应值可能会出现负值,这时如果按照把每个个体的适应值除以适应值的总和的进行归一化的话会出现问题,因为个体可能出现负值,总和也可能出现负值,如果归一化的时候除以了一个负值,选择时就会选择一些不良的个体,对实验结果造成影响。

对于这个问题,我把适应度函数定为目标函数的函数值加一个正数,保证得到的适应值为正数,然后再进行一般的归一化和选择的操作。

实验结果表明,之前的实验结果很不稳定,修正后的结果比较稳定,趋于最大值。

二交叉操作首先是根据交叉概率probCross选择要交叉的个体进行交叉。

这里根据交叉参数crossnum进行多点交叉,首先随机生成交叉点位置,允许交叉点重合,两个重合的交叉点效果互相抵消,相当于没有交叉点,然后根据交叉点进行交叉操作,得到新的个体。

三变异操作首先是根据变异概率probMutation选择要变异的个体。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

遗传算法求复杂函数极值问题
中文摘要:
本文首先介绍遗传算法的历史背景,基本思想,对遗传算法的常见的编码解码方法进行了深入的阐述,并对算子选择方法进行深入分析和对比,在此基础上把遗传算法应用于求解复杂函数的极值计算。

最后在MATLAB语言环境下编写程序,对求解函数的最大值进行了仿真,并对调试的结果进行了分析,得出了部分结论。

关键词:遗传算法最优解算子选择复杂函数
作者:xx xx
指导老师:xxxx xx
Using Genetic Algorithm to Solve Extreme Problem
of Complex Function
Abstract
Firstly,the historical background and basic idea of genetic algorithm are introduced in this paper. The common coding and decoding method of genetic algorithm are discussed too.
Secondly, the selection method of genetic operator is analyzed and compared deeply, based on which genetic algorithm is used to solve extreme problem of complex function.
Finally, with MATLAB software, the program is compiled and the maximum is sought out. At the end of the paper, the debugging result is analyzed and the conclusion is given.
Keywords: Genetic Algorithm Optimal Solution Operator Selection Complex Function
Written by : xx xx
Supervised by: xxxx xx
目录
第一章绪论 (5)
1.1 遗传算法生物学背景 (5)
1.1.1 遗传与变异 (5)
1.1.2 进化 (5)
1.2 本文主要内容 (5)
第二章遗传算法简介 (6)
2.1 遗传算法历史和发展 (6)
2.2 遗传算法的基本原理 (6)
2.3 遗传算法的特点 (7)
2.4 遗传算法的目的 (7)
2.5 遗传算法应用 (8)
第三章遗传算法的参数和算子选择 (10)
3.1 遗传算法的数学理论 (10)
3.2 编码 (11)
3.2.1 编码方法 (11)
3.2.2 编码原则 (13)
3.3 个体适应度函数 (13)
3.3.1 评价个体适应 (13)
3.2.2 适应度尺度变换 (14)
3.3 算子选择 (14)
3.3.1 选择运算 (14)
3.3.2 交叉运算 (16)
3.3.3 变异运算 (18)
3.4 其他运行参数 (18)
第四章遗传算法求解复杂函数极值问题 (20)
4.1 遗传算法的求解步骤 (20)
4.2 算例验证 (24)
第五章结论 (28)
参考文献 (28)
附录(程序) (29)
第一章绪论
1.1遗传算法生物学背景
生物的进化是一个奇妙的优化过程,它通过选择淘汰,突然变异,基因遗传等规律产生适应环境变化的优良物种。

遗传算法是根据生物进化思想而启发得出的一种全局优化算法。

1.1.1 遗传与变异
1、遗传
世间的生物从其亲代继承特性或性状,这种生命现象叫遗传,研究这种生命现象的科学叫做遗传学。

遗传信息是由基因组成的,生物的各种性状由其相应基因来控制,基因是遗传的基本单位。

细胞分裂具有自我复制的能力,在细胞分裂的过程中,其遗传基因也同时被复制到下一代,从而其性状也被下一代所继承。

2、变异
细胞在分裂时,遗传物质DNA通过复制而转移到新产生的细胞中,新细胞就继承了旧细胞的基因,在进行细胞复制时,虽然概率很小,但也有可能产生某些复制差错,从而使DNA发生某种变异产生出新的染色体,从而表现出新的性状。

1.1.2进化
生物在其延续生存的过程中,逐渐适应于其生存环境,使得其品质不断得到改良,这种现象叫做进化。

新的基因依据其与环境的适应程度决定其增殖能力,有利于生存环境的基因逐渐增加,而不利于生存环境的基因逐渐减少,通过这种自然的选择,物种渐渐的向适应于生存环境的方向进化,从而产生优良的物种。

1.2 本文主要内容
本文主要讨论遗传算法在实际数值函数优化问题中的应用,即对实际问题建模后求函数最大值的问题。

遗传算法通过对群体所施加的迭代进化过程,不断的将当前群体中具有较高适应度的个体遗传到下一代群体中,并且不断的淘汰掉适应度较低的个体,从而最终寻求出适应度最大的个体。

这个适应度最大的个体经解码处理之后所对应的个体表现型即为实际问题最优解或是最近似最优解。

相关文档
最新文档