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

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

遗传算法求复杂函数极值问题

中文摘要:

本文首先介绍遗传算法的历史背景,基本思想,对遗传算法的常见的编码解码方法进行了深入的阐述,并对算子选择方法进行深入分析和对比,在此基础上把遗传算法应用于求解复杂函数的极值计算。最后在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 MA TLAB 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 本文主要内容

本文主要讨论遗传算法在实际数值函数优化问题中的应用,即对实际问题建模后求函数最大值的问题。遗传算法通过对群体所施加的迭代进化过程,不断的将当前群体中具有较高适应度的个体遗传到下一代群体中,并且不断的淘汰掉适应度较低的个体,从而最终寻求出适应度最大的个体。这个适应度最大的个体经解码处理之后所对应的个体表现型即为实际问题最优解或是最近似最优解

函数的单调性、极值与最值问题

函数的单调性、极值与最值问题 典例9 (12分)已知函数f (x )=ln x +a (1-x ). (1)讨论f (x )的单调性; (2)当f (x )有最大值,且最大值大于2a -2时,求a 的取值范围. 审 题 路 线 图 求f ′(x ) ――――――→讨论f ′(x ) 的符号 f (x )单调性―→f (x )最大值―→解f (x )max >2a -2.

评分细则(1)函数求导正确给1分; (2)分类讨论,每种情况给2分,结论1分; (3)求出最大值给2分; (4)构造函数g(a)=ln a+a-1给2分; (5)通过分类讨论得出a的范围,给2分.

跟踪演练9(优质试题·天津)已知函数f(x)=a x,g(x)=log a x,其中a>1. (1)求函数h(x)=f(x)-x ln a的单调区间; (2)若曲线y=f(x)在点(x1,f(x1))处的切线与曲线y=g(x)在点(x2, g(x2))处的切线平行,证明x1+g(x2)=-2ln ln a ln a; (3)证明当a≥1e e时,存在直线l,使l是曲线y=f(x)的切线,也是曲线y=g(x)的切线. (1)解由已知得h(x)=a x-x ln a, 则h′(x)=a x ln a-ln a. 令h′(x)=0,解得x=0. 由a>1,可知当x变化时,h′(x),h(x)的变化情况如下表: 所以函数h(x)的单调递减区间为(-∞,0),单调递增区间为(0,+∞). (2)证明由f′(x)=a x ln a,可得曲线y=f(x)在点(x1,f(x1))处 的切线斜率为1x a ln a.由g′(x)= 1 x ln a,可得曲线y=g(x)在点

遗传算法用于函数优化

遗传算法用于函数优化求解 一、实验目的 本实验要求在掌握遗传算法的基本思想、原理和算法流程的基础上,能够针对指定的单变量优化目标函数,设计相应的遗传算法优化程序,并求得全局最优解。 二、实验要求 针对目标函数 2 1(1),[0,2]y x x =--∈,设计利用遗传算法进行优化求解的程序,绘制迭代过程中最优解的变化情况,并分别改变算法中的编码位数、种群规模、交叉和变异概率,分析这些变量对算法精度及收敛性的影响。 三、实验步骤 1、初始化种群,确定种群规模M=20,编码位数n=5 和编码机制(二进制编码); 初始化种群:E = round(rand(M,n)); 每个编码对应的二进制数值: (1) 2i i i y y -=?∑ i y 为第i 位二进制代码; 二进制数y 转换为十进制数x : max min min *21n x x x y x -= +-; 2、根据给定的目标函数,计算各个种群的适应度值; 3、采用轮盘选择法对种群进行选择复制; 4、设定交叉概率为0.9,进行遗传操作(交叉); 5、设定变异概率0.05,进行遗传操作(变异); 6、产生下一代种群,与终止条件比较,不满足返回到步骤2直到满足条件退出。 算法的流程如图7.1所示。

N Y 结束 输出结果 迭代次数达上限? 开始 初始化种群(编码) 计算适应度函数 交叉、变异 选择、复制 达到系统指标? 图7.1 算法流程图 四、实验结果及分析 我们采用遗传算法来寻求目标函数的最大值。初始化样本个数为20个,编码位数为5位,采用二进制编码,交叉概率为0.9,变异概率为0.05,最大迭代次数为1000次,初始样本随机选择,当父代与子代间适应度变化小于0.001时,达到系统指标。MATLAB 模拟运行输出迭代种群的平均适应度变化、种群的最优解与最差解,绘出图像(见图1),计算运行时间的平均值(见表1),由表可知,平均运行时间约为0.65秒左右,速度较快。由图可知,前期平均适应度是不断上升的,到达一定程度后即平均适应度在0.9以上后,就基本处于波动平衡状态。

用遗传算法求解Rosenbrock函数最优解实验报告

姓名学号 实验 成绩 华中师范大学计算机科学系 实验报告书 实验题目:用遗传算法求解Rosenbrock函数的最大值问题课程名称:智能计算 主讲教师:沈显君 辅导教师: 课程编号: 班级:2011级 实验时间:2011.11

用遗传算法求解Rosenbrock函数最大值问题 摘要: 本文利用遗传算法研究了求解Rosenbrock函数的最大值问题.在较多的计算机模拟实验结果中表明,用遗传算法可以有效地解决这一问题.文中分析了一种基于遗传算法对Rosenbrock函数最大值问题的求解,得到了适于解决此问题的合理的遗传操作,从而为有效地解决最速下降法所不能实现的某一类函数代化问题提供了一种新的途径.通过对基于遗传算法对Rosenbrock函数最大值问题的求解,进一步理解遗传算法对解决此类问题的思想。 关键词:遗传算法,Rosenbrock函数,函数优化,最速下降法。 Abstract: This paper deals with the maximum of Rosenbrock s function based ongenetic algorithms. The simulated results show that the problem can be solved effectivelyusing genetic algorithms. The influence of some rnodified genetic algorithms on searchspeed is also examined. Some genetic operations suitable to the optimization technique areobtained, therefore, a novel way of solving a class of optimizations of functions that cannot be realized using the method of steepest descent is proposed.Through dealing with the maximum of Rosenbrock s function based ongenetic algorithms,a better understanding of the genetic algorithm to solve such problems thinking. Keyword:ongenetic algorithms,Rosenbrock function,function optimization,Steepest descent method

求极值的若干方法

求极值的若干方法 1 序言 一般来说函数的极值可以分为无条件极值和条件极值两类.无条件极值问题即是函数中的自变 量只受定义域约束的极值问题;而条件极值问题即是函数中的自变量除受定义域约束外还受其它条件限制的极值问题.下面我们给出极值的定义 定义1) 136](1[P 设函数f 在点0P 的某邻域0()U P 内有定义,若对于任何点 0()P U P ∈,成立不等式 0()()f P f P ≤(或0()()f P f P ≥), 则称函数f 在点0P 取得极大(或极小)值,点0P 称为f 的极大(或极小)值点.极大值、极小值统称为极值.极大值点、极小值点统称为极值点. 2 求解一元函数无条件极值的常用方法 2.1 导数法 定理1 ) 142](2[P 设f 在点0x 连续,在某邻域0(;)o U x δ内可导. (i)若当00(,)x x x δ∈-时()0f x '≤,当00(,)x x x δ∈+时()0f x '≥,则f 在点0x 取得极小值. (ii)若当00(,)x x x δ∈-时()0f x '≥,当00(,)x x x δ∈+时()0f x '≤,则f 在点0x 取得极大值. 由此我们可以推出当0(;)o x U x δ∈时,若()f x '的符号保持不变,则()f x 在0x 不取极值. 定理2 ) 142](2[P 设f 在0x 的某邻域0(;)U x δ内一阶可导, 在0x x =处二阶可导,且()0f x '=,()0f x ''≠. (i)若0()0f x ''<,则f 在0x 取得极大值. (ii)若0()0f x ''>,则f 在0x 取得极小值. 对于一般的函数我们既可以利用定理1,也可以利用定理2,但对于有不可导点的函数只能用定理1. 例1 求函数2 ()(1)f x x x =-的极值.

4遗传算法与函数优化

第四章遗传算法与函数优化 4.1 研究函数优化的必要性: 首先,对很多实际问题进行数学建模后,可将其抽象为一个数值函数的优化问题。由于问题种类的繁多,影响因素的复杂,这些数学函数会呈现出不同的数学特征。除了在函数是连续、可求导、低阶的简单情况下可解析地求出其最优解外,大部分情况下需要通过数值计算的方法来进行近似优化计算。 其次,如何评价一个遗传算法的性能优劣程度一直是一个比较难的问题。这主要是因为现实问题种类繁多,影响因素复杂,若对各种情况都加以考虑进行试算,其计算工作量势必太大。由于纯数值函数优化问题不包含有某一具体应用领域中的专门知识,它们便于不同应用领域中的研究人员能够进行相互理解和相互交流,并且能够较好地反映算法本身所具有的本质特征和实际应用能力。所以人们专门设计了一些具有复杂数学特征的纯数学函数,通过遗传算法对这些函数的优化计算情况来测试各种遗传算法的性能。 4.2 评价遗传算法性能的常用测试函数 在设计用于评价遗传算法性能的测试函数时,必须考虑实际应用问题的数学模型中所可能呈现出的各种数学特性,以及可能遇到的各种情况和影响因素。这里所说的数学特性主要包括: ●连续函数或离散函数; ●凹函数或凸函数; ●二次函数或非二次函数; ●低维函数或高维函数; ●确定性函数或随机性函数; ●单峰值函数或多峰值函数,等等。 下面是一些在评价遗传算法性能时经常用到的测试函数: (1)De Jong函数F1: 这是一个简单的平方和函数,只有一个极小点f1(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 。

遗传算法求解函数最大值

人工智能 遗传算法函数优化

目录 1引言 (3) 1.1 摘要 (3) 1.2 背景 (3) 2 实验过程 (4) 2.1 程序目标 (4) 2.2 实验原理及步骤 (4) 2.3程序 (5) 2.3.1程序理解: (5) 2.3.3调试程序: (5) 2.4 实验总结 (18)

1引言 1.1 摘要 函数优化是遗传算法的经典应用领域,也是对遗传算法进行性能评价的常用算例。本文将用一个详细的例子来说明用遗传算法解一个简单参数优化问题的过程。这里求解的是一个函数的最大值的问题。 1.2 背景 遗传算法采纳自然进化模型。通过保持一个潜在解的群体执行了多方向的搜索并支持这些方向上的信息构成和交换。群体经过一个模拟进化的过程:在每一代,相对“好”的解产生,相对“差”的解死亡。为区别不同解,我们使用了一个目标(评价)函数,它起着一个环境的作用。 选择是用来确定管理费用或交叉个体,以及被选个体将产生多少个代个体。 杂交组合了两个亲代染色体的特征,并通过交换父代相应的片断形成了两个相似的后代。杂交算子的意图是在不同潜在解之间进行信息交换。 变异是通过用一个等于变异率的概率随机地改变被选择染色体上的一个或多个基因。变异算子的意图是向群体引入一些额外的变化性。 运用遗传算法解题必经的五个步骤: 1.对问题潜在解的遗传表达。 2.产生潜在解初始群体的方法。 3.起环境作用的用“适应值”评价解的适应程度的评价函数。 4.改变后代组成的各种遗传算子。 5.遗传算法所使用的各种参数:群体规模、应用遗传算子的概率等。

2 实验过程 2.1 程序目标 在实验过程中,我们应用遗传算法来模拟一个函数优化的问题。程序所要解决的问题是求f(x1,x2)=21.5+x1*sin(4pi*x1)+x2*sin(20pi*x2)的最大值,其中-3.0≤x1≤12.1及4.1≤x2≤5.8。 2.2 实验原理及步骤 1 )首先确立变量x1的定义域长度为15.1;所要求的小数点以后第四位精度意味着区间[-3.0, 12.1]应该至少被分成15.1*10000个等距区间,即染色体的第一部分需要18位;自变量x2域长度为 1.7,精度要求区间[4.1, 5.8]应该至少被分成1.7*10000个等距区间,即染色体的第二部分需要15位。所以染色体总长度为33位。用遗传算法的优化函数f,产生了一个有pop_size = 20个染色体的群体。所有染色体的33位都是随机初始化。对每个染色体进行解码并计算解码后的(x1,x2)的适应函数值,eval(vi) (i=1,..,pop_size) = f(x1,x2)。 2)为选择过程建立一个轮盘。计算群体的总适应值F,并计算每个染色体vi (i=1,..,pop_size)的选择概率pi:pi = eval(vi) / F 和累积概率qi: qi = p1 + .. + pi. 3)转动轮盘20次,每次为新群体选择一单个染色体。生成一个区间[0,1]里的20个数的一个随机序列。如果一个随机数位于qi于q(i+1)之间,则q(i+1)被选择。4)对新群体中的个体应用杂交算子。杂交概率pc = 0.25,所以预计染色体中平均有25%将经历杂交。杂交按照下面的方法进行:对新群体中的每个染色体,产生在区间[0,1]里的随机数r,并从随机序列中选出r<0.25的染色体进行杂交。 5)对被选择的染色体随机进行配对。并从区间[1,32]里产生一个随机整数pos。数字pos表示杂交点的位置。 6)算子变异。在一位一位基础上执行。变异概率pm = 0.01,所以我们预计平均将有1%的位经历变异。整个群体共有m*pop_size = 660位,可以预计平均每代有6.6次变异。因为每一位都有均等的机会被变异,所以对群体中的每一位可以产生区间

函数极值的几种求法

函数极值的几种求法 ──针对高中生所学知识 摘要:函数是数学教学中一个重要的组成部分,从小学六年级的一元一次方程继而延伸到初中的一次函数,二次函数的初步介绍,再到高中的函数的单调性、周期性、最值、极值,以及指数函数、对数函数、三角函数的学习,这些足以说明函数在数学教学中的地位。极值作为函数的一个重要性质,无论是在历年高考试题中,还是在实际生活运用中都占有不可或缺的地位。本文主要阐述了初高中常见的几种函数,通过函数极值的相关理论给出每种函数极值的求解方法。 关键词:函数;单调性;导数;图像;极值 Abstract: Function is an important part of mathematics teaching. First the learning of linear equation in six grade, secondly the preliminary introduction of linear functions and quadratic functions in junior high school, then the monotonicity, the periodicity, the most value and the extreme value of function, finally the learning of the logarithmic function, exponential function and trigonometric function in high school. These are enough to show the important statue of the function in mathematics teaching. As an important properties of function, extreme value has an indispensable status whether in the calendar year test, or in daily life. This article will mainly expound the methods of solving the extreme value of sever functions in middle school. Key words: function; monotonicity; derivative; image; extreme value “函数”一词最先是由德国的数学家莱布尼茨在17世纪采用的,当时莱布尼茨用“函数”这一词来表示变量x的幂,也就是x的平方x的立方。之后莱布尼茨又将“函数”这一词用来表示曲线上的横坐标、纵坐标、切线的长度、垂线的长度等与曲线上的点有关的变量[]1。就这样“函数”这词逐渐盛行。在中国,清代著名数学家、天文学家、翻译家和教育家,近代科学的先驱者善兰给出的定义是:

一种基于遗传算法的Kmeans聚类算法

一种基于遗传算法的K-means聚类算法 一种基于遗传算法的K-means聚类算法 摘要:传统K-means算法对初始聚类中心的选取和样本的输入顺序非常敏感,容易陷入局部最优。针对上述问题,提出了一种基于遗传算法的K-means聚类算法GKA,将K-means算法的局部寻优能力与遗传算法的全局寻优能力相结合,通过多次选择、交叉、变异的遗传操作,最终得到最优的聚类数和初始质心集,克服了传统K-means 算法的局部性和对初始聚类中心的敏感性。关键词:遗传算法;K-means;聚类 聚类分析是一个无监督的学习过程,是指按照事物的某些属性将其聚集成类,使得簇间相似性尽量小,簇内相似性尽量大,实现对数据的分类[1]。聚类分析是数据挖掘 技术的重要组成部分,它既可以作为独立的数据挖掘工具来获取数据库中数据的分布情况,也可以作为其他数据挖掘算法的预处理步骤。聚类分析已成为数据挖掘主要的研究领域,目前已被广泛应用于模式识别、图像处理、数据分析和客户关系管理等领域中。K-means算法是聚类分析中一种基本的划分方法,因其算法简单、理论可靠、收敛速 度快、能有效处理较大数据而被广泛应用,但传统的K-means算法对初始聚类中心敏 感,容易受初始选定的聚类中心的影响而过早地收敛于局部最优解,因此亟需一种能克服上述缺点的全局优化算法。遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化搜索算法。在进化过程中进行的遗传操作包括编码、选择、交叉、变异和适者生存选择。它以适应度函数为依据,通过对种群个体不断进行遗传操作实现种群个体一代代地优化并逐渐逼近最优解。鉴于遗传算法的全局优化性,本文针 对应用最为广泛的K-means方法的缺点,提出了一种基于遗传算法的K-means聚类算法GKA(Genetic K-means Algorithm),以克服传统K-means算法的局部性和对初始聚类中心的敏感性。用遗传算法求解聚类问题,首先要解决三个问题:(1)如何将聚类问题的解编码到个体中;(2)如何构造适应度函数来度量每个个体对聚 类问题的适应程度,即如果某个个体的编码代表良好的聚类结果,则其适应度就高;反之,其适应度就低。适应度函数类似于有机体进化过程中环境的作用,适应度高的个体 在一代又一代的繁殖过程中产生出较多的后代,而适应度低的个体则逐渐消亡;(3) 如何选择各个遗传操作以及如何确定各控制参数的取值。解决了这些问题就可以利

(完整版)导数与函数的极值、最值问题(解析版)

【高考地位】 导数在研究函数的极值与最值问题是高考的必考的重点内容,已由解决函数、数列、不等式问题的辅助工具上升为解决问题的必不可少的工具,特别是利用导数来解决函数的极值与最值、零点的个数等问题,在高考中以各种题型中均出现,对于导数问题中求参数的取值范围是近几年高考中出现频率较高的一类问题,其试题难度考查较大. 【方法点评】 类型一 利用导数研究函数的极值 使用情景:一般函数类型 解题模板:第一步 计算函数()f x 的定义域并求出函数()f x 的导函数'()f x ; 第二步 求方程'()0f x =的根; 第三步 判断'()f x 在方程的根的左、右两侧值的符号; 第四步 利用结论写出极值. 例1 已知函数x x x f ln 1 )(+= ,求函数()f x 的极值. 【答案】极小值为1,无极大值. 【点评】求函数的极值的一般步骤如下:首先令'()0f x =,可解出其极值点,然后根据导函数大于0、小于0即可判断函数()f x 的增减性,进而求出函数()f x 的极大值和极小值. 【变式演练1】已知函数322()f x x ax bx a =+++在1x =处有极值10,则(2)f 等于( ) A .11或18 B .11 C .18 D .17或18 【答案】C 【解析】

试题分析:b ax x x f ++='23)(2,???=+++=++∴1010232 a b a b a ???-==????=----=?114012232b a a a a b 或???=-=33 b a .当???=-=3 3 b a 时,∴≥-=',0)1(3)(2x x f 在1=x 处不存在极值. 当???-==11 4b a 时, )1)(113(1183)(2-+=-+='x x x x x f ,0)(),1,3 11 (<'- ∈∴x f x ;0)(),,1(>'+∞∈x f x ,符合题意. 所以???-==114b a .181622168)2(=+-+=∴f .故选C . 考点:函数的单调性与极值. 【变式演练2】设函数()21 ln 2 f x x ax bx =--,若1x =是()f x 的极大值点,则a 的取值范围为 ( ) A .()1,0- B .()1,-+∞ C .()0,+∞ D .()(),10,-∞-+∞U 【答案】B 【解析】 考点:函数的极值. 【变式演练3】函数x m x m x x f )1(2)1(2 1 31)(23-++-=在)4,0(上无极值,则=m _____. 【答案】3 【解析】 试题分析:因为x m x m x x f )1(2)1(2 1 31)(23-++-= , 所以()()2'()(1)2(1)21f x x m x m x x m =-++-=--+,由()'0f x =得2x =或1x m =-,又因为

遗 传 算 法 详 解 ( 含 M A T L A B 代 码 )

GATBX遗传算法工具箱函数及实例讲解 基本原理: 遗传算法是一种典型的启发式算法,属于非数值算法范畴。它是模拟达尔文的自然选择学说和自然界的生物进化过程的一种计算模型。它是采用简单的编码技术来表示各种复杂的结构,并通过对一组编码表示进行简单的遗传操作和优胜劣汰的自然选择来指导学习和确定搜索的方向。遗传算法的操作对象是一群二进制串(称为染色体、个体),即种群,每一个染色体都对应问题的一个解。从初始种群出发,采用基于适应度函数的选择策略在当前种群中选择个体,使用杂交和变异来产生下一代种群。如此模仿生命的进化进行不断演化,直到满足期望的终止条件。 运算流程: Step 1:对遗传算法的运行参数进行赋值。参数包括种群规模、变量个数、交叉概率、变异概 率以及遗传运算的终止进化代数。 Step 2:建立区域描述器。根据轨道交通与常规公交运营协调模型的求解变量的约束条件,设置变量的取值范围。 Step 3:在Step 2的变量取值范围内,随机产生初始群体,代入适应度函数计算其适应度值。 Step 4:执行比例选择算子进行选择操作。 Step 5:按交叉概率对交叉算子执行交叉操作。

Step 6:按变异概率执行离散变异操作。 Step 7:计算Step 6得到局部最优解中每个个体的适应值,并执行最优个体保存策略。 Step 8:判断是否满足遗传运算的终止进化代数,不满足则返回Step 4,满足则输出运算结果。 运用遗传算法工具箱: 运用基于Matlab的遗传算法工具箱非常方便,遗传算法工具箱里包括了我们需要的各种函数库。目前,基于Matlab的遗传算法工具箱也很多,比较流行的有英国设菲尔德大学开发的遗传算法工具箱GATBX、GAOT以及Math Works公司推出的GADS。实际上,GADS就是大家所看到的Matlab中自带的工具箱。我在网上看到有问为什么遗传算法函数不能调用的问题,其实,主要就是因为用的工具箱不同。因为,有些人用的是GATBX带有的函数,但MATLAB自带的遗传算法工具箱是GADS,GADS当然没有GATBX里的函数,因此运行程序时会报错,当你用MATLAB来编写遗传算法代码时,要根据你所安装的工具箱来编写代码。 以GATBX为例,运用GATBX时,要将GATBX解压到Matlab下的toolbox文件夹里,同时,set path将GATBX文件夹加入到路径当中。 这块内容主要包括两方面工作:1、将模型用程序写出来(.M文件),即目标函数,若目标函数非负,即可直接将目标函数作为适应度函数。2、设置遗传算法的运行参数。包括:种群规模、变量个数、区域描述器、交叉概率、变异概率以及遗传运算的终止进化代数等等。

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

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

求极值与最值的方法

求极值与最值的方法 1 引言 在当前的数学教育中,求初等函数的极值与最值占有比较重要的位置,由于其解法灵活,综合性强,能力要求高,故而解决这类问题,要掌握各数学分支知识,能综合运用各种数学技能,灵活选择合理的解题方法。下面我们将要介绍多种求初等函数的极值和最值的方法。 2 求函数极值的方法 极值定义:设函数()f x 在0x 的某邻域内有定义,且对此邻域内任一点 x 0()x x ≠,均有0()()f x f x <,则称0()f x 是函数错误!未找到引用源。的一个极大值;同样如果对此邻域内任一点x 0()x x ≠,均有错误!未找到引用源。,则称0()f x 是函数错误!未找到引用源。的一个极小值。函数的极大值与极小值统称为函数的极值。使函数取得极值的点0x ,称为极值点。 2.1 求导法 判别方法一: 设()f x 在点0x 连续,在点错误!未找到引用源。的某一空心邻域内可导。当 x 由小增大经过错误!未找到引用源。时,如果: (1)'()f x 由正变负,那么0x 是极大值点; (2)错误!未找到引用源。由负变正,那么0x 是极小值点; (3)错误!未找到引用源。不变号,那么0x 不是极值点。 判别方法二: 设()f x 在点0x 处具有二阶导数,且'()0f x =,''()0f x =。 (1)如果''()0f x <,则()f x 在点0x 取得极大值; (2)如果''()0f x >,则()f x 在点0x 取得极小值。

判别方法三: 设()f x 在点0x 有n 阶导数,且0)()()(0)1(00===''='-x f x f x f n 0)(0)(≠x f n ,则: (1)当为偶数时,)(x f 在0x 取极值,有0)(0)(x f n 时,)(x f 在0x 取极小值。 (2)当为奇数时,)(x f 在0x 不取极值。 求极值方法: (1)求一阶导数,找出导数值为0的点(驻点),导数值不存在的点,及端点; (2)判断上述各点是否极值点 例 1 求函数32()69f x x x x =-+的极值。 解法一 : 因为32()69f x x x x =-+的定义域为错误!未找到引用源。, 且'2()31293(1)(3)f x x x x x =-+=--, 令'()0f x =,得驻点11x =, 23x =; 在错误!未找到引用源。内,错误!未找到引用源。,在错误!未找到引用源。内,'()0f x <,(1)4f =为函数()f x 的极大值。 解法二: 因为错误!未找到引用源。的定义域为错误!未找到引用源。, 且错误!未找到引用源。,错误!未找到引用源。。 令错误!未找到引用源。,得驻点错误!未找到引用源。,错误!未找到引用源。。又因为错误!未找到引用源。,所以,错误!未找到引用源。为)(x f 极大值。 错误!未找到引用源。,所以错误!未找到引用源。为)(x f 极小值.

二次函数最值问题与解题技巧(个人整理)

一、二次函数线段最值问题 1、平行于x轴的线段最值问题 1)首先表示出线段两个端点的坐标 2)用右侧端点的横坐标减去左侧端点的横坐标 3)得到一个线段长关于自变量的二次函数 4)将其化为顶点式,并根据a的正负及自变量的取值范围判断最值 2、平行于y轴的线段最值问题 1)首先表示出线段两个端点的坐标 2)用上面端点的纵坐标减去下面端点的纵坐标 3)得到一个线段长关于自变量的二次函数解析式 4)将其化为顶点式,并根据a的正负及自变量的取值范围判断最值 3、既不平行于x轴,又不平行于y轴的线段最值问题 1)以此线段为斜边构造一个直角三角形,并使此直角三角形的两条直角边分别平行于 x轴、y轴 2)根据线段两个端点的坐标表示出直角顶点坐标 3)根据“上减下,右减左”分别表示出两直角边长 4)根据勾股定理表示出斜边的平方(即两直角边的平方和) 5)得到一个斜边的平方关于自变量的二次函数 6)将其化为顶点式,并根据a的正负及自变量的取值范围判断最值 7)根据所求得的斜边平方的最值求出斜边的最值即可 二、二次函数周长最值问题 1、矩形周长最值问题 1)一般会给出一点落在抛物线上,从这点向两坐标轴引垂线构成一个矩形,求其周长 最值 2)可先设此点坐标,点p到x轴、y轴的距离和再乘以2,即为周长 3)将其化为顶点式,并根据a的正负及自变量的取值范围判断最值 2、利用两点之间线段最短求三角形周长最值 1)首先判断图形中那些边是定值,哪些边是变量 2)利用二次函数轴对称性及两点之间线段最短找到两条变化的边,并求其和的最小值 3)周长最小值即为两条变化的边的和最小值加上不变的边长 三、二次函数面积最值问题 1、规则图形面积最值问题(这里规则图形指三角形必有一边平行于坐标轴,四边形必有一组对边平行于坐标轴) 1)首先表示出所需的边长及高 2)利用求面积公式表示出面积 3)得到一个面积关于自变量的二次函数 4)将其化为顶点式,并根据a的正负及自变量的取值范围判断最值 2、不规则图形面积最值问题 1)分割。将已有的不规则图形经过分割后得到几个规则图形 2)再分别表示出分割后的几个规则图形面积,求和 3)得到一个面积关于自变量的二次函数 4)将其化为顶点式,并根据a的正负及自变量的取值范围判断最值 或1)利用大减小,不规则图形的面积可由规则的图形面积减去一个或几个规则小图形的 面积来得到

(实例)matlab遗传算法工具箱函数及实例讲解

matlab遗传算法工具箱函数及实例讲解 核心函数: (1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成函数 【输出参数】 pop--生成的初始种群 【输入参数】 num--种群中的个体数目 bounds--代表变量的上下界的矩阵 eevalFN--适应度函数 eevalOps--传递给适应度函数的参数 options--选择编码形式(浮点编码或是二进制编码)[precision F_or_B], 如 precision--变量进行二进制编码时指定的精度 F_or_B--为1时选择浮点编码,否则为二进制编码,由precision指定精度) (2)function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,... termFN,termOps,selectFN,selectOps,xOverFNs,xOverO ps,mutFNs,mutOps)--遗传算法函数 【输出参数】 x--求得的最优解 endPop--最终得到的种群 bPop--最优种群的一个搜索轨迹 【输入参数】 bounds--代表变量上下界的矩阵 evalFN--适应度函数 evalOps--传递给适应度函数的参数 startPop-初始种群 opts[epsilon prob_ops display]--opts(1:2)等同于initializega 的options参数,第三个参数控制是否输出,一般为0。如[1e-6 1 0] termFN--终止函数的名称,如['maxGenTerm'] termOps--传递个终止函数的参数,如[100] selectFN--选择函数的名称,如['normGeomSelect'] selectOps--传递个选择函数的参数,如[0.08] xOverFNs--交叉函数名称表,以空格分开,如['arithXover heuristicXover simpleXover'] xOverOps--传递给交叉函数的参数表,如[2 0;2 3;2 0] mutFNs--变异函数表,如['boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation'] mutOps--传递给交叉函数的参数表,如[4 0 0;6 100 3;4 100 3;4 0 0]

二元函数的极值与最值

二元函数的极值与最值 二元函数的极值与最值问题已成为近年考研的重点,现对二元函数的极值与最值的求法总结如下: 1.二元函数的无条件极值 (1) 二元函数的极值一定在驻点和不可导点取得。对于不可导点,难以判断是否是极值点;对于驻点可用极值的充分条件判定。 (2)二元函数取得极值的必要条件: 设),(y x f z =在点),(00y x 处可微分且在点),(00y x 处有极值,则0),('00=y x f x ,0),('00=y x f y ,即),(00y x 是驻点。 (3) 二元函数取得极值的充分条件:设),(y x f z =在),(00y x 的某个领域内有连续上二阶偏导数,且=),('00y x f x 0),('00=y x f y ,令A y x f xx =),('00, B y x f xy =),('00,C y x f yy =),('00,则 当02<-AC B 且 A<0时,f ),(00y x 为极大值; 当02<-AC B 且A>0,f ),(00y x 为极小值; 02 >-AC B 时,),(00y x 不是极值点。 注意: 当B 2-AC = 0时,函数z = f (x , y )在点),(00y x 可能有极值,也可能没有极值,需另行讨论 例1 求函数z = x 3 + y 2 -2xy 的极值. 【分析】可能极值点是两个一阶偏导数为零的点,先求出一阶偏导,再令其为零确定极值点即可,然后用二阶偏导确定是极大值还是极小值,并求出相应的极值. 【解】先求函数的一、二阶偏导数: y x x z 232 -=??, x y y z 22-=??. x x z 62 2 =??, 22 -=???y x z , 2 2 2 =??y z . 再求函数的驻点.令x z ??= 0,y z ??= 0,得方程组???=-=-. 022,0232x y y x 求得驻点(0,0)、),(3 2 32. 利用定理2对驻点进行讨论:

第五章-遗传算法工具箱函数

第五章遗传算法工具箱函数 本章介绍英国设菲尔德大学开发的遗传算法工具箱函数。 由于MATLAB高级语言的通用性,对问题用M文件编码,与此配对的是MA TLAB先进的数据分析、可视化工具、特殊目的的应用领域工具箱和展现给使用者具有研究遗传算法可能性的一致环境。MATLAB遗传算法工具箱为遗传算法从业者和第一次实验遗传算法的人提供了广泛多样的有用函数。 遗传算法工具箱使用MA TLAB矩阵函数为实现广泛领域的遗传算法建立一套通用工具,这个遗传算法工具是用M文件写成的,是命令行形式的函数,能完成遗传算法大部分重要功能的程序的集合。用户可通过这些命令行函数,根据实际分析的需要,编写出功能强大的MATLAB程序。 5.1 工具箱结构 本节给出GA工具箱的主要程序。表5.1为遗传算法工具箱中的各种函数分类表。 表5.1 遗传算法工具箱中函数分类表

5.1.1 种群表示和初始化 种群表示和初始化函数有:crtbase,crtbp,crtrp。 GA工具箱支持二进制、整数和浮点数的基因表示。二进制和整数种群可以使用工具箱中的crtbp建立二进制种群。crtbase是附加的功能,它提供向量描述整数表示。种群的实值可用crtrp进行初始化。在二进制代码和实值之间的变换可使用函数bs2rv,它支持格雷码和对数编码。 5.1.2 适应度计算 适应度函数有:ranking,scaling。 适应度函数用于转换目标函数值,给每一个个体一个非负的价值数。这个工具箱支持Goldberg的偏移法(offsetting)和比率法以及贝克的线性评估算法。另外,ranking函数支持非线性评估。 5.1.3 选择函数 选择函数有:reins,rws,select,sus。 这些函数根据个体的适应度大小在已知种群中选择一定数量的个体,对它的索引返回一个列向量。现在最合适的是轮盘赌选择(即rws函数)和随机遍历抽样(即sus函数)。高级入口函数select为选择程序,特别为多种群的使用提供了一个方便的接口界面。在这种情况下,代沟是必须的,这就是整个种群在每一代中没有被完全复制,reins能使用均匀的随机数或基于适应度的重新插入。 5.1.4 交叉算子 交叉算子函数有:recdis,recint,reclin,recmut,recombin,xovdp,xovdprs,xovmp,xovsh,xovshrs,xovsp,xovsprs。 交叉是通过给定的概率重组一对个体产生后代。单点交叉、两点交叉和洗牌交叉是由xovsp、xovdp、xovsh函数分别完成的。缩小代理交叉函数分别是:xovdprs、xovshrs和xovsprs。通用的多点交叉函数是xovmp,它提供均匀交换的支持。为支持染色体实值表示,离散的、中间的和线性重组分别由函数recdis、recint、reclin完成。函数recmut提供具有突变特征的线性重组。函数recombin是一高级入口函数,对所有交叉操作提供多子群支持入口。 5.1.5 变异算子 变异算子函数有:mut,mutate,mutbga。

遗传算法求解函数极值C语言代码

#include "stdio.h" #include "stdlib.h" #include "conio.h" #include "math.h" #include "time.h" #define num_C 12 //个体的个数,前6位表示x1,后6位表示x2 #define N 100 //群体规模为100 #define pc 0.9 //交叉概率为0.9 #define pm 0.1 //变异概率为10% #define ps 0.6 //进行选择时保留的比例 #define genmax 2000 //最大代数200 int RandomInteger(int low,int high); void Initial_gen(struct unit group[N]); void Sort(struct unit group[N]); void Copy_unit(struct unit *p1,struct unit *p2); void Cross(struct unit *p3,struct unit *p4); void Varation(struct unit group[N],int i); void Evolution(struct unit group[N]); float Calculate_cost(struct unit *p); void Print_optimum(struct unit group[N],int k); /* 定义个体信息*/ typedef struct unit { int path[num_C]; //每个个体的信息 double cost; //个体代价值 }; struct unit group[N]; //种群变量group int num_gen=0; //记录当前达到第几代 int main() { int i,j; srand((int)time(NULL)); //初始化随机数发生器 Initial_gen(group); //初始化种群 Evolution(group); //进化:选择、交叉、变异 getch(); return 0; } /* 初始化种群*/ void Initial_gen(struct unit group[N]) { int i,j; struct unit *p; for(i=0;i<=N-1;i++) //初始化种群里的100个个体 {

相关文档
最新文档