当前位置:文档之家› 求解非线性规划问题的遗传算法设计与实现

求解非线性规划问题的遗传算法设计与实现

求解非线性规划问题的遗传算法设计与实现
求解非线性规划问题的遗传算法设计与实现

摘要

非线性规划在工程、管理、经济、科研、军事等方面都有广泛的应用。传统的解决非线性规划问题的方法,如梯度法、罚函数法、拉格朗日乘子法等,稳定性差,对函数初值和函数性态要求较高,且容易陷入局部最优解。

遗传算法是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型。遗传算法是一种全局搜索算法,简单、通用、鲁棒性强,对目标函数既不要求连续,也不要求可导,适用于并行分布处理,应用范围广。

本文在分析传统的非线性规划算法的不足和遗传算法的优越性的基础上,将遗传算法应用于非线性规划。算法引进惩罚函数的概念,构造带有惩罚项的适应度函数;通过实数编码,转轮法选择,双点交叉,均匀变异,形成了求解非线性规划问题的遗传算法。与传统的非线性规划算法——外点罚函数法的比较结果表明该算法在一定程度上有效地克服了传统的非线性规划算法稳定性差,对函数初值和函数性态要求较高,且容易陷入局部最优解的缺陷,收敛更合理,性能更稳定。

关键词:非线性规划;遗传算法;罚函数法

ABSTRACT

Non-linear programming has a wide range of applications in engineering, management, economic, scientific, and military aspects. Traditional methods to solve the non-linear programming problem, such as the gradient method, penalty method, Lagrange multiplier method, have poor stability. They are sensitive to the function initial value and request the objective function to be continuous and differential. The results are also easily trapped into local optimal solution.

Genetic algorithm is a kind of calculate model which simulates Darwin's genetic selection and biological evolution of natural selection. Genetic algorithm is a global search algorithm. It has simple, universal, robust features,and does not request the objective function to be continuous and differential, and is suitable in parallel distribution processing. Genetic algorithm is widely applied in many areas.

Based on the analysis of the disadvantage of traditional non-linear programming algorithm and the advantage of genetic algorithm, genetic algorithm is applied to non-linear programming in this paper. The introduction of the concept of penalty function is used to construct the fitness function with punishment. By using real-coded, Roulette Wheel selection method, two-point crossover, uniform mutation, we formed a genetic algorithm to solve the non-linear programming problem. Compared with the most classical and widely used traditional non-linear programming problem algorithm –SUMT algorithm, the results show that the new algorithm could effectively overcome the defect of the traditional algorithm in a certain extent. The new algorithm is more stable, less sensitive to the function initial value and conditions, and always could receive the optimal solution or approximate optimal solution. Its convergence results are more reasonable, the performance is more stable.

Key Words: Non-linear Programming; Genetic Algorithm; SUMT Algorithm

目录

1 概论 (1)

1.1 背景介绍 (1)

1.1.1 非线性规划简介 (1)

1.1.2 遗传算法简介 (1)

1.2 研究内容 (2)

2 非线性规划 (3)

2.1 非线性规划的概念 (3)

2.2 非线性规划的数学模型 (3)

2.3 非线性规划的求解方法 (4)

2.3.1 一维最优化方法 (4)

2.3.2 无约束最优化方法 (4)

2.3.3 约束最优化方法 (5)

2.4 非线性规划的应用 (5)

3 传统非线性规划算法——外点罚函数法 (6)

3.1 算法概述 (6)

3.2 算法描述 (6)

3.3 算法性能分析 (7)

3.4 外点罚函数法的程序设计 (8)

3.4.1程序步骤 (8)

3.4.2程序流程图 (8)

4 遗传算法 (10)

4.1 遗传算法概述 (10)

4.1.1 遗传算法的生物学基础 (10)

4.1.2 遗传算法的一般结构 (10)

4.1.3 遗传算法的特点 (12)

4.1.4 遗传算法的应用 (12)

4.2 遗传算法实现的关键技术 (13)

5 求解非线性规划问题的遗传算法设计 (16)

5.1 实用遗传算法设计 (16)

5.2 求解非线性规划问题的遗传算法程序设计 (21)

5.2.1 算法过程描述 (21)

5.2.2 遗传算法程序流程图 (22)

5.2.3 遗传算法中所设计的辅助算法的设计 (23)

6 算法的结果分析 (24)

6.1 概述 (24)

6.2 结果比较 (24)

7 总结 (28)

致谢 (29)

参考文献 (30)

1 概论

1.1 背景介绍

1.1.1 非线性规划简介

具有非线性约束条件或目标函数的数学规划,称为非线性规划。非线性规划是20世纪50年代才开始形成的一门新兴学科。1951年H.W.库恩和A.W.塔克发表的关于最优性条件(后来称为库恩-塔克条件)的论文是非线性规划正式诞生的一个重要标志。在50年代还得出了可分离规划和二次规划的n种解法,它们大都是以G.B.丹齐克提出的解线性规划的单纯形法为基础的。50年代末到60年代末出现了许多解非线性规划问题的有效的算法,70年代又得到进一步的发展。非线性规划在工程、管理、经济、科研、军事等方面都有广泛的应用,为最优化设计提供了有力的工具。

随着计算机的产生与发展,非线性规划作为一门独立的学科越来越受到人们的重视。在非线性规划理论研究的基础上,人们日益重视非线性规划问题求解方法的研究。传统的解决非线性规划问题的方法有多种,如搜索法、梯度法、变尺度法、罚函数法、拉格朗日乘子法、可行方向法等,虽然解法很多,非线性规划目前还没有能适用于各种问题的算法,各个方法都有自己特定的适用范围。

1.1.2 遗传算法简介

遗传算法(Genetic Algorithm),是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它是由美国Michigan 大学J.Holland教授于1975年首先提出来的,并出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》,GA这个名称才逐渐为人所知,J.Holland教授所提出的GA通常为简单遗传算法(SGA)。

遗传算法是一种特别有效的算法,它能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程,从而得到最优解或准最优解。它的主要特点是简单、通用、鲁棒性强,对目标函数既不要求连续,也不要求可导,适用于并行分布处理,应用范围广。

遗传算法提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于很多领域,如函数优化、组合优化、生产调度问题、自动控制、机器人智能控制、图像处理,人工生命、遗传编程、机器学习等。并且取得了令人瞩目的成果。

1.2 研究内容

传统的非线性规划算法的缺陷是计算烦琐且精度不高,稳定性差,对函数初值和函数性态要求较高,且容易陷入局部最优解。而遗传算法是一种鲁棒性很强的种全局搜索算法,理论上可以克服传统非线性规划算法的缺陷。本文的主要内容就是应用遗传算法的基本思想,结合本次实验的实际情况,对基本遗传算法加以改进,将遗传算法应用于求解非线性规划问题,形成求解非线性规划问题的遗传算法。具体内容包括编码方法设计,适应度函数设计,选择算子、交叉算子、变异算子等遗传算子设计,算法流程设计,并在设计的基础上用MATLAB语言实现该算法的程序,运行并调试程序,直至得到正确的结果。并对实验所得结果进行分析,比较求解非线性规划问题的遗传算法与传统的非线性规划算法的优缺点。

2 非线性规划

2.1 非线性规划的概念

具有非线性约束条件或目标函数的数学规划,称为非线性规划。非线性规划研究一个n 元实函数在一组等式或不等式的约束条件下的极值问题,且目标函数和约束条件至少有一个是未知量的非线性函数。目标函数和约束条件都是线性函数的情形则属于线性规划。

2.2 非线性规划的数学模型

对实际规划问题作定量分析,必须建立数学模型。建立数学模型首先要选定适当的目标变量和决策变量,并建立起目标变量与决策变量之间的函数关系,称之为目标函数。然后将各种限制条件加以抽象,得出决策变量应满足的一些等式或不等式,称之为约束条件[4]。

非线性规划问题的一般数学模型可表述为求未知量n x x x ,...,,21,使满足约束条件:

()()???===≥p j x x h m i x x g n j n i ,...,1,0,...,,...,1,0,...,1

1 (2.1) 并使目标函数()n x x f ,...,1达到最小值(或最大值)。其中f ,诸i g 和诸i h 都是定义在n 维向量空间n R 的某子集D (定义域)上的实值函数,且至少有一个是非线性函数。

上述模型可简记为:

()x f m in (2.2)

()()?

??===≥p j x h m i x g t s ,...,1,0,...,1,0.. (2.3) 其中()n x x ,...,x 1=属于定义域D ,符号min 表示“求最小值”,符号s.t.表示“受约束于”。

定义域D 中满足约束条件的点称为问题的可行解。全体可行解所成的集合称为问题的可行集。对于一个可行解*x ,如果存在*x 的一个邻域,使目标函数在*x 处的值()*x f 优于(指不大于或不小于)该邻域中任何其他可行解处的函数值,则称*x 为问题的局部最优解(简称局部解)。如果()*x f 优于一切可行解处的目标函数值,则称x *为问题的整体最优解(简称整体解)。实用非线性规划问题要求整体解,而现有解法大多只是求出局部解。

2.3 非线性规划的求解方法

2.3.1 一维最优化方法

指寻求一元函数在某区间上的最优值点的方法。这类方法不仅有实用价值,而且大量多维最优化方法都依赖于一系列的一维最优化。常用的一维最优化方法有黄金分割法、切线法和插值法[1]。

①黄金分割法,又称0.618法。它适用于单峰函数。其基本思想是:在初始寻查区间中设计一列点,通过逐次比较其函数值,逐步缩小寻查区间,以得出近似最优值点。

②切线法,又称牛顿法。它也是针对单峰函数的。其基本思想是:在一个猜测点附近将目标函数的导函数线性化,用此线性函数的零点作为新的猜测点,逐步迭代去逼近最优点。

③插值法,又称多项式逼近法。其基本思想是用多项式(通常用二次或三次多项式)去拟合目标函数。

此外,还有斐波那契法、割线法、有理插值法、分批搜索法等。

2.3.2 无约束最优化方法

R上的最优值点的方法。这类方法的意义指寻求n元实函数f在整个n维向量空间

n

在于:虽然实用规划问题大多是有约束的,但许多约束最优化方法可将有约束问题转化为若干无约束问题来求解[1]。

无约束最优化方法大多是逐次一维搜索的迭代算法。这类迭代算法可分为两类。一类需要用目标函数的导函数,称为解析法。另一类不涉及导数,只用到函数值,称为直接法。这些迭代算法的基本思想是:在一个近似点处选定一个有利搜索方向,沿这个方向进行一维寻查,得出新的近似点。然后对新点施行同样手续,如此反复迭代,直到满足预定的精度要求为止。根据搜索方向的取法不同,可以有各种算法。

属于解析型的算法有:

①梯度法:又称最速下降法。这是早期的解析法,收敛速度较慢。

②牛顿法:收敛速度快,但不稳定,计算也较困难。

③共轭梯度法:收敛较快,效果较好。

④变尺度法:这是一类效率较高的方法。其中达维登-弗莱彻-鲍威尔变尺度法,简称DFP法,是最常用的方法。

属于直接型的算法有交替方向法(又称坐标轮换法)、模式搜索法、旋转方向法、鲍威尔共轭方向法和单纯形加速法等。

2.3.3 约束最优化方法

指前述一般非线性规划模型的求解方法。常用的约束最优化方法有4种[1]:

①拉格朗日乘子法:它是将原问题转化为求拉格朗日函数的驻点。

②制约函数法:又称系列无约束最小化方法,简称SUMT法。它又分两类,一类叫惩罚函数法,或称外点法;另一类叫障碍函数法,或称内点法。它们都是将原问题转化为一系列无约束问题来求解。

③可行方向法:这是一类通过逐次选取可行下降方向去逼近最优点的迭代算法。如佐坦迪克法、弗兰克-沃尔夫法、投影梯度法和简约梯度法都属于此类算法。

④近似型算法:这类算法包括序贯线性规划法和序贯二次规划法。前者将原问题化为一系列线性规划问题求解,后者将原问题化为一系列二次规划问题求解。

2.4 非线性规划的应用

在经营管理、工程设计、科学研究、军事指挥等方面普遍地存在着最优化问题。例如:如何在现有人力、物力、财力条件下合理安排产品生产,以取得最高的利润;如何设计某种产品,在满足规格、性能要求的前提下,达到最低的成本;如何确定一个自动控制系统的某些参数,使系统的工作状态最佳;如何分配一个动力系统中各电站的负荷,在保证一定指标要求的前提下,使总耗费最小;如何安排库存储量,既能保证供应,又使储存费用最低;如何组织货源,既能满足顾客需要,又使资金周转最快等。对于静态的最优化问题,当目标函数或约束条件出现未知量的非线性函数,且不便于线性化,或勉强线性化后会招致较大误差时,就可应用非线性规划的方法去处理。

3 传统非线性规划算法——外点罚函数法

3.1 算法概述

罚函数法求解非线性规划问题的思想是,利用问题中的约束函数做出适当的罚函数,由此构造出带参数的增广目标函数,把问题转化为无约束非线性规划问题。利用罚函数法,可将非线性规划问题的求解,转化为求解一系列无约束极值问题,因而也称这种方法为序列无约束最小化技术,简记为SUMT(Sequential Unconstrained Minimization Technique)。主要有两种形式,一种叫外点罚函数法,另一种叫内点罚函数法。

外点罚函数法是从非可行解出发逐渐移动到可行区域的方法。内点罚函数法也称为障碍罚函数法,这种方法是在可行域内部进行搜索,约束边界起到类似围墙的作用,如果当前解远离约束边界时,则罚函数值是非常小的,否则罚函数值接近无穷大的方法。

3.2 算法描述

对于问题(2.2),本文所述的基本策略是,根据约束特点(等式或不等式)构造某种“罚函数”,然后把它加到目标函数中去,使得对约束最优化问题的求解转化为一系列无约束问题。极小点或者无限地向可行域靠近,或者一直保持在可行集内移动,直到收敛于原来约束最优化问题极小点。

对于问题(2.2),构造一函数为

)()(),(X M X f M X F k k α+= (3.1)

其中,

[][]))(()()()(2

121X g u X g X h X i l i i m j j ∑∑==+=α (3.2)

在(3.2)中,)(X α又称为惩罚函数,

?

???>∈==.,0,0)(时当时,当D X D X X α (3.3) .,2,10)(,10)(,0))((l i X g X g X g u i i i =???<≥=时,

当时,当 (3.4)

0>k M 是一个逐渐增大的参数,称为惩罚因子。),(k M X F 又称为问题(2.2)的增广目标函数。

显然,增广目标函数),(k M X F 是定义在n R 上的一个无约束函数。由增广目标函数),(k M X F 的构造知当D X ∈时

)(),(X f M X F k = (3.5)

此时),(k M X F 的最优解就是问题(2.2)的最优解;而当D X ?时,),(k M X F 的最优解就不一定是问题(2.2)的最优解。但是研究D X ?时,),(k M X F 的最优解不是我们所需要的。为此规定,当D X ?时,),(k M X F 在X 点处的函数值迅速变大,换而言之,可行域外的任一点X 处的函数值),(k M X F 都相当大。此时要求),(k M X F 在n R 中的最优解,只能让点X 回到D 内才有可能,然而一旦点X 回到D 内,即D X ∈,此时),(k M X F 就与问题(2.2)有相同的最优解。

当D X ?时,),(k M X F 迅速变大的原因是通过惩罚因子k M 来实现。简言之,外点罚函数法的思想是:当点D X ?时,设法加大不可行点处的函数值,使不可行点不能成为),(k M X F 在n R 中的最优解。

在用外点罚函数法求解问题(2.2)时,首先构造增广目标函数),(k M X F ,然后按照无约束优化方法求解。如果求出),(k M X F 的最优解为M X ,则判断M X 是否属于D 。如果D X M ∈,则M X 是问题(2.2)的最优解;如果D X M ?,则M X 不是问题(2.2)的最优解,此时说明原来的惩罚因子给的太小了,需要加大惩罚因子,使得k k M M >+1,然后再重新计算),(1+k M X F 的最优值。

3.3 算法性能分析

通过长期的理论研究和实验结果,人们总结出惩罚函数的优点有:

(1)罚函数法是解决非线性规划问题的一种经典算法,这种算法简单易行、熟练数度快,在很多实际问题的求解中得到了应用。

(2)计算效率高,稳定性较好。

缺点有:

(1)罚函数法对于有些问题只能求出局部最优解,而不能求出全局最优。

(2)对函数初值和函数性态要求较高。

(3)罚函数法在实际计算中的缺点是罚因子M 的取值难于把握,太小起不到惩罚作用;太大则由于误差的影响会导致错误。在搜索过程开始的时候,一个较大的罚因子将会阻碍非可行域的搜索。另一方面,如果罚因子太小,这样相对于目标函数罚函数项是可以忽略的,则大量的搜索时间将花费在非可行域。这对于进化算法来说非常致命的。

3.4 外点罚函数法的程序设计

为了能和求解非线性规划问题的遗传算法进行比较,我们同时实现最经典的,也是得到最广泛应用的传统的非线性规划算法——外点罚函数法,通过对二者的结果,比较二者性能的差别。

3.4.1程序步骤

对于问题(2.2),构造一函数为

)()(),(X M X f M X F k k α+= (3.6)

其中,惩罚函数)(X α按照式(3.2)构造,给定终止限ε(可取610-=ε)。具体过程描述如下:

(1)选定初始点0X ,初始惩罚因子01>M (可取11=M )。惩罚因子放大系数10=C ,置1=k 。

(2)假设已获得迭代点1-k X ,以1-k X 为初始点,求解无约束问题

),(min k M X F (3.7)

设其最优点为k X 。

(3)若εα≤)(X M k ,则k X 就是所要求问题的最优解,打印())(,k k X f X ,结束;否则转(4)。

(4)置k k CM M =+1,1+=k k ,转(2)。

3.4.2程序流程图

外点罚函数法程序流程图如图3-1所示。

图3-1外点罚函数法程序流程图

4 遗传算法

4.1 遗传算法概述

4.1.1 遗传算法的生物学基础

遗传算法的生物学基础是达尔文的自然选择学说。自然选择学说认为,生物要生存下去,就必须进行生存斗争。在生存斗争中,具有有利变异(mutation)的个体容易存活下来,并且有更多的机会将有利的变异传给后代;具有不利变异的个体就容易被淘汰,产生后代的机会也少得多。达尔文把这种在生存斗争中适者生存,不适者淘汰的过程叫做自然选择。达尔文的自然选择学说表明,遗传和变异是决定生物进化的内在因素。遗传能使生物的性状不断地传递给后代,因而保持了物种的特性,变异能够使生物的性状发生改变,从而适应新的环境而不断地向前发展[2]。

4.1.2 遗传算法的一般结构

遗传算法是一种基于生物自然选择与遗传机理的随机搜索算法。和传统算法不同,遗传算法从一组随机产生的初始解,称为“种群”,开始搜索过程。种群中的每个个体是问题的一个解,称为“染色体”。染色体是一串符号,比如一个二进制字符串。这些染色体在后续迭代中不断进化,称为遗传。在每一代中用“适值”来测量染色体的好坏。生成的下一代染色体称为后代。后代是由前一代染色体通过交叉或变异运算形成的。新一代形成中,根据适值的大小选择部分后代,淘汰部分之后,从而保持种群大小是常数。适值高的染色体被选中的概率较高。这样,经过若干代之后,算法收敛于最好的染色体,它很可能就是问题的最优解或者次优解。

设()t P和()t C分别表示第t代的双亲和后代,遗传算法的一般结构可描述如下[3]:遗传算法过程:

begin

t;

初始化()t P;

评估()t P;

while不满足终止条件do

begin

重组()t p获得()t C;

评估()t C;

从()t P 和()t C 中选择()1+t P ;

1+←t t ;

end end

图4-1 遗传算法的一般结构

通常初始化是随机产生的。重组包括交叉和变异来获得后代。实际上,遗传算法中有两类运算:

(1)遗传运算:交叉和变异;

(2)进化运算:选择。

遗传运算模拟了基因在每一代中创造新后代的繁殖过程,进化运算则是种群逐代更新的过程。

4.1.3 遗传算法的特点

遗传算法是一类可用于复杂系统优化的具有鲁棒性的搜索算法,与传统的优化算法相比,主要有以下特点[3]:

(1)遗传算法以决策变量的编码作为运算对象。传统的优化算法往往直接决策变量的实际植本身,而遗传算法处理决策变量的某种编码形式,使得我们可以借鉴生物学中的染色体和基因的概念,可以模仿自然界生物的遗传和进化机理,也使得我们能够方便的应用遗传操作算子。

(2)遗传算法直接以适应度作为搜索信息,无需导数等其它辅助信息。

(3)遗传算法使用多个点的搜索信息,具有隐含并行性。

(4)遗传算法使用概率搜索技术,而非确定性规则。

4.1.4 遗传算法的应用

遗传算法提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于很多学科。下面是遗传算法的一些主要应用领域[2][5]:

(1)函数优化。函数优化是遗传算法的经典应用领域,也是对遗传算法进行性能评价的常用算例。

(2)组合优化。随着问题规模的增大,组合优化问题的搜索空间也急剧扩大,有时在目前的计算机上用枚举法很难或甚至不可能求出其精确最优解。遗传算法是解决这类问题的最佳工具之一。实践证明,遗传算法对于组合优化中的NP完全问题非常有效。

(3)生产调度问题。生产调度问题在许多情况下所建立起来的数学模型难以精确求解,即使经过一些简化之后可以进行求解,也会因简化得太多而使得求解结果与实际相差甚远。现在遗传算法已成为解决复杂调度问题的有效工具,在单件生产车间调度、流水线生产车间调度、生产规划、任务分配等方面遗传算法都得到了有效的应用。

(4)自动控制。在自动控制领域中有许多与优化相关的问题需要求解,遗传算法已在其中得到了初步的应用,并显示出了良好的效果。

(5)机器人智能控制。机器人是一类复杂的难以精确建模的人工系统,而遗传算法的起源就来自于对人工自适应系统的研究,所以机器人智能控制理所当然地成为遗传算法的一个重要应用领域。

(6)图像处理。在图像处理过程中,不可避免地会产生一些误差,这些误差会影响图像处理的效果。如何使这些误差最小是使计算机视觉达到实用化的重要要求。目前遗传算法已在模式识别、图像恢复、图像边缘特征提取等方面得到了应用。

(7)人工生命。人工生命与遗传算法有着密切的关系,基于遗传算法的进化模型是研究人工生命现象的重要基础理论。遗传算法已在进化模型、学习模型、行为模型、自组织模型等方面显示出了初步的应用能力,并且必将得到更为深入的应用和发展。

(8)遗传编程。Koza发展了遗传编程的概念,他使用了以LISP语言所表示的编码方法,基于对一种树型结构所进行的遗传操作来自动生成计算机程序。

(9)机器学习。基于遗传算法的机器学习,在很多领域中都得到了应用。

4.2 遗传算法实现的关键技术

1、编码方法

在遗传算法的运行过程中,它不对所求解问题的实际决策变量直接进行操作,而是对表示可行解的个体编码施加选择、交叉、变异等遗传运算,通过这种遗传操作来达到优化的目的,这是遗传算法的特点之一。在遗传算法中把一个问题的可行解从其解空间转换到遗传算法所能处理的搜索空间的转换方法称为编码。

常用的编码方法有:

(1)二进制编码:使用由二进制符号0和1所组成的二值符号集{0,1}进行编码,它所构成的个体基因型是一个二进制编码符号串。它是将可行解用固定长度的二进制串表示,串的长度与问题所要求的求解精度有关。

(2)浮点数编码:个体的每个基因值用某一范围内的一个浮点数来表示,个体的编码长度等于其决策变量的个数。它所使用的是决策变量的真实值。

(3)符号编码:个体染色体编码串中的基因值取自一个无数值含义、而只有代码含义的符号集。这个符号集可以是一个字母表,如{A,B,C,D,…};也可以是一个数字序号表,如{1,2,3,4,5,…};还可以是一个代码表,如{A1,A2,A3,A4,…}等等。

2、适应度函数

适应度是度量群体中各个个体在优化计算中有可能达到或接近于或有助于找到最优解的优良程度[2]。遗传算法的一个特点是它仅使用所求问题的目标函数值就可得到下一步的有关搜索信息。而对目标函数值的使用是通过评价个体的适应度来体现的。评价个体适应度的一般过程是:

(1)对个体编码串进行解码处理后,可得到个体的表现型。

(2)由个体的表现型可计算出对应个体的目标函数值。

(3)根据最优化问题的类型,由目标函数值按一定的转换规则求出个体的适应度。

3、选择算子

遗传算法使用遗传算子(或称为复制算子,Reproduction Operator)来对群体中的个

体进行优胜劣汰操作:适应度较高的个体被遗传到下一代群体中的概率较大;适应度较低的个体被遗传到下一代群体中的概率较小。遗传算法中的选择操作就是确定如何从父代群体中按某种方法选取哪些个体遗传到下一代群体中的一种遗传运算。遗传操作建立在对个体的适应度进行评价的基础之上。选择操作的主要目的是为了避免基因缺失、提高全局收敛性和计算效率。

常见选择算子:

(1)比例选择:各个个体被选中的概率与其适应度大小成正比。

设群体大小为pop_size ,个体k v 的适应度为()k v eval ,则个体k v 被选中的概率k p 为:

()F

v eval p k k = (k=1,2,…,pop_size ) (4.1) (2)随机联赛选择:每次选取几个个体之中适应度最高的一个个体遗传到下一代群体中。在联赛选择操作中,只有个体适应度之间的大小比较运算,而无个体适应度之间的算术运算,故它对个体适应度是取正值还是负值无特别要求。

(3)排序选择:对群体中的所有个体按其适应度大小进行排序,基于这个排序来分配各个个体被选中的概率。

4、交叉算子

遗传算法中的交叉运算是指对两个相互配对的染色体按某种方式相互交换其部分基因,从而形成两个新的个体。它是产生新个体的主要方法。

遗传算法中,在交叉运算之前必须对群体中的个体进行配对。常用的配对策略是随机配对,即将群体中的M 个个体以随机的方式组成??2/M 对配对个体组,交叉操作是在这些配对个体组中的两个个体之间进行的。

常见交叉算子:

(1)单点交叉(One-point Crossover ):在个体编码串中只随机设置一个交叉点,实行交叉时,该点前或后的两个个体的部分结构进行互换,并生成两个新个体。

(2)双点交叉(Two-point Crossover ):在个体编码串中随机设置了二个交叉点,进行交叉时,将两个交叉点之间的部分基因进行互换。

(3)均匀交叉(Uniform Crossover ):两个配对个体的每一个基因座上的基因以相同的交叉概率进行交换,从而形成两个新的个体。

5、变异算子

遗传算法中的变异运算是指将个体染色体编码串中的某些基因座上的基因值用该基因座的其他等位基因来替换,从而形成一个新的个体。遗传算法导入变异的目的有两个:一是使遗传算法具有局部的随机搜索能力。二是使遗传算法可维持群体多样性,以防止出现未成熟收敛现象。

变异算子的操作步骤:

在群体中所有个体的码串范围内随机地确定基因座。

以事先设定的变异概率Pm来对这些基因座的基因值进行变异。

常见变异算子:

(1)基本位变异(Simple Mutation)是指对个体编码串中以变异概率Pm随机指定的某一位基因座上的基因值作变异运算。

(2)均匀变异(Uniform Mutation)是指分别用符合某一范围内均匀分布的随机数,以某一较小的概率来替换个体编码串中各个基因座上的原有基因值。

(3)逆转算子(Inversion Operator)在个体码串中随机挑选二个逆转点,然后将两个逆转点间的基因值以逆转概率Pi逆向排序。

6、遗传算法的运行参数

(1)编码串长度L。使用二进制编码时,L与问题所要求的求解精度有关;使用浮点数编码时,L与决策变量的个数n相等;使用符号编码是,L由问题的编码方式确定。

(2)群体大小pop_size。pop_size表示群体中所含个体的数量。当pop_size取值较小时,可提高遗传算法的运算速度,却降低了群体的多样性,有可能会引起遗传算法的早熟现象;当pop_size取值较大时,又会使遗传算法的运行效率降低。

(3)交叉概率Pc。交叉操作是遗传算法中产生新个体的主要方法,所以Pc取值较大。但若过大的话,又会破坏群体中的优良模式,对进化运算产生不利影响;若过小的话,产生新个体的速度又较慢。建议取值范围是0.4~0.99。

(4)变异概率Pm。Pm取值过大,虽然能够产生较多的新个体,但也可能破坏掉很多较好的模式,使得遗传算法的性能近似于随机搜索算法的性能;若Pm过小,则变异操作产生新个体的能力和抑制早熟现象的能力就会较差。一般建议取值范围是0.0001~0.2。

(5)终止代数T。T表示遗传算法运行到指定的进化代数之后就停止运行,并将当前群体中的最佳个体作为所求问题的最优解输出。一般建议取值范围是100~1000。

5 求解非线性规划问题的遗传算法设计

传统的非线性规划算法的缺陷是计算烦琐且精度不高,稳定性差,对函数初值和函数性态要求较高,且容易陷入局部最优解。而遗传算法是一种全局搜索算法,可以克服传统的非线性规划算法容易陷入局部最优解的缺陷。因此,将遗传算法应用于非线性规划,是改善收敛效果,提高最优化质量的有效途径。本章就是介绍遗传算法在非线性规划中的具体应用,设计并实现求解非线性规划问题的遗传算法。

5.1 实用遗传算法设计

1、编码方法设计

非线性规划属于最优化设计的一种,属于约束优化问题,其最终目的是选择一种方法,使目标函数在满足约束的条件下达到最优。从非线性规划的数学模型可知,我们最终要求解的是一组解n x x x ,...,,21,其满足约束条件,并使目标函数()n x x f ,...,1达到最小值(或最大值)。我们将这组解作为染色体,其中每个i x 相当于染色体上的基因,这也就是编码对象。之后的选择,交叉,变异就是对编码后的染色体基因进行运算。

我们最终所求的解是n 维向量空间n R 的某子集D (定义域)上的一个实数,若采用传统的二进制编码,则编码串长度不固定。如果采用固定长度的二进制编码,不仅会造成存储空间的极大浪费,而且在进行交叉和变异等遗传操作时,由于实际值不等长而很难确定交叉点和变异点,而且很容易产生无效解,降低了算法的效率;如果采用不定长二进制编码,则在进行交叉和变异等遗传操作时很难确定交叉点和变异点,而且容易产生无效解。而且采用二进制编码,又要牵涉到十进制与二进制的转换,在实际操作过程中要频繁进行编码和解码操作,费时费力。所以我们直接采用实数编码,即染色体基因串中基因座的值直接是每组解中各分量i x 的实数值,不再对其进行其他任何形式的编码。每个染色体编码为一个和解向量维数相同的实向量[2]。

2、适应度函数设计

1)满足约束

由于对染色体作遗传运算时通常获得不可行的后代,因此运用遗传算法解非线性规划问题的核心问题是如何满足约束的问题。今年来,已经提出了几种运用遗传算法满足约束的技术,这些技术大致可以分为以下几类[3][16]:

(1)拒绝策略

拒绝策略抛弃所有进化过程中产生的不可行的染色体。这是遗传算法中普遍的作法。

遗传算法的C#实现及应用

,………………………………………………“………“ 实用第一/智慧密集。.....。。。。。。。。,。.。.。。。。.。。。。。.。。。。。。。。。。。.。。。..。。。。。。。。。。。。..。。。。。,。√, ≯||j—A疆蕊嗡嗡镧鹣潲瞒虢滁酗确斓蛹鹳曩jii11||||璐彀豫澡毽畿瓷罐甍谶羲|遵麓囊鬻谶赢薏篱瀑每||?i。|?≯,鬣壤鋈国潆巢镶倦奄誊缝绥舔蔑善嚣≤譬I jl。j0j。j瓷蚤尊嶙≮啪獬i毽赫馘每蛹戳j蠢。‰酶鸯峨誓曩薯|≥il ji j j。一iI|薯0I奄§畦姻镦添。每孳舔溺警jlj;|0一『j_lt-?甍遴!l邀纛纛瓣|鬣瓣◇|lii|Il||I弩酶冁醚嗡婚穆穗姆t◇9鬟湖瀵哮咚◇i谚峰岭譬ij¨¨|:鬻攀谶一≥。|?|“ji?l疆黼誊眷懿t诵蕊囊酿褥酶姆螭t豳j酶I≮媾龋穗电鹱穰誊j|。。j|。。麓国隧嫱毒撼媳誊『:i-jl||i溪誉攀lj豢篱鬣蔷淄鬻|l|一ij鼍≥l篱鬻il豢 ≤奠do≯Z处理其余的基因l城市点卜 ?j。一鼍_i『瓢j树蛹嗽N哟hbor={G_e制ea淑Nejghbor誊l|ll}ig髓瞄蝴a}弼鼯礁u确瞅e脚S攀j。 一毫?。/|l,,熊到与翦学纂蜀溉避的一个基因,并加入新染色体曩o、。潮黼溉憾rf_{la鳓m鸯,A酬Gene椭ewGAGene j删删N磅i鳓£躜r|I;¨警自赋£lI:_l§¨'|): 、。-。:,薯£酒ftP舀黼黯一一:。i j-j?i。昭铀柏舔嚣i蜩酚鳓N∞rs悄ejghboB +寥 __l蝴Ⅺ蠢lm白赠鳓f¥缓警iO戳『;j i毒j碜净磅囊i÷i;i喹哆?簿簪两ohr9哆j舀锣me{n。wchr|。而osome}:j雾雾鬻雾耩韵秘穆然取代原染色体i. 准备好以上的方法后,还要注意四个参数的设定。交叉率一般为O.8左右,变异率一般为O.05左右,群体大小、繁殖次数要根据城市数目有所变化。调试程序时,可以修改这些参数来观察优化过程的收敛快慢、最优解的跳变等。 三、程序调试 在Vs2005中建立windows组件解决方案,添加现有项:基因类(GAGene)、染色体类(GAChfomosome)、染色体比较类(chromosomecomparer.cs)、遗传算法类(GA),调试生成(ga.衄)组件。 建立gaTsP解决方案,添加现有项tspFORM.cs窗体,添加引用ga.dll。运行程序如下图所示。工具栏第一个按钮的作用是设置一个文本文件,以记录每一代群体的染色体组成及其适应度的值。红色曲线为每一群体中最优染色体的适应度的变化,从中可以看到优化过程的收敛情况。读者可以模仿本文的第二部分,利用ga.dU解决其他问题。 旅行商问题运行图 参考文献 1.陈国良、王煦法、庄镇.遗传算法及其应用.人民邮电出版社 2.李敏强.遗传算法的基本理论与应用.科学出版社 (收稿日期:2007年1月26日)

MATLAB实验遗传算法和优化设计

实验六 遗传算法与优化设计 一、实验目的 1. 了解遗传算法的基本原理和基本操作(选择、交叉、变异); 2. 学习使用Matlab 中的遗传算法工具箱(gatool)来解决优化设计问题; 二、实验原理及遗传算法工具箱介绍 1. 一个优化设计例子 图1所示是用于传输微波信号的微带线(电极)的横截面结构示意图,上下两根黑条分别代表上电极和下电极,一般下电极接地,上电极接输入信号,电极之间是介质(如空气,陶瓷等)。微带电极的结构参数如图所示,W 、t 分别是上电极的宽度和厚度,D 是上下电极间距。当微波信号在微带线中传输时,由于趋肤效应,微带线中的电流集中在电极的表面,会产生较大的欧姆损耗。根据微带传输线理论,高频工作状态下(假定信号频率1GHz ),电极的欧姆损耗可以写成(简单起见,不考虑电极厚度造成电极宽度的增加): 图1 微带线横截面结构以及场分布示意图 {} 28.6821ln 5020.942ln 20.942S W R W D D D t D W D D W W t D W W D e D D παπππ=+++-+++?????? ? ??? ??????????? ??????? (1) 其中πρμ0=S R 为金属的表面电阻率, ρ为电阻率。可见电极的结构参数影响着电极损耗,通过合理设计这些参数可以使电极的欧姆损耗做到最小,这就是所谓的最优化问题或者称为规划设计问题。此处设计变量有3个:W 、D 、t ,它们组成决策向量[W, D ,t ] T ,待优化函数(,,)W D t α称为目标函数。 上述优化设计问题可以抽象为数学描述: ()()min .. 0,1,2,...,j f X s t g X j p ????≤=? (2)

遗传算法求解VRP问题的技术报告

遗传算法求解VRP 问题的技术报告 摘要:本文通过遗传算法解决基本的无时限车辆调度问题。采用车辆和客户对应排列编码的遗传算法,通过种群初始化,选择,交叉,变异等操作最终得到车辆配送的最短路径。通过MA TLAB 仿真结果可知,通过遗传算法配送的路径为61.5000km,比随机配送路径67km 缩短了5.5km 。此结果表明遗传算法可以有效的求解VRP 问题。 一、 问题描述 1.问题描述 车辆调度问题(Vehicle Scheduling/Routing Problem,VSP/VRP )的一般定义为[1]:对一系列送货点和/或收货点,组织适当的行车路线,使车辆有序地通过它们,在满足一定的约束条件(如货物需求量、发送量,送发货时间、车辆容量限制、行驶里程限制、时间限制等)下,达到一定的目标(如路程最短、费用极小、时间尽量少、使用车辆数尽量少等)。问题描述如下[2]:有一个或几个配送中心),...,1(n i D i =,每个配送中心有K 种不同类型的车型,每种车型有n 辆车。有一批配送业务),...,1(n i R i =,已知每个配送业务需求量),...,1(n i q i =和位置或要求在一定的时间范围内完成,求在满足不超过配送车辆载重等的约束条件下,安排配送车辆在合适的时间、最优路线使用成本最小。 2.数学模型 设配送中心有K 台车,每台车的载重量为),...,2,1(K k Q k =,其一次配送的最大行驶距离为k D ,需要向L 个客户送货,每个客户的货物需求量为),...,2,1(L i q i =,客户i 到j 的运距为ij d ,配送中心到各个客户的距离为),...,2,1,(0L j i d j =,再设k n 为第K 台车配送的客户数(k n =0表示未使用第K 台车),用集合k R 表示第k 条路径,其中ki r 表示客户ki r 在路径 k 中的顺序为 (不包括配送中心),令 0k r 表示配送中心,若以配送总里程最短为目标函数,则可建立如下数学模型: ∑∑==?+=-K k k rk r n i r r n sign d d Z k kn k ki i k 1 1 )] ([min )1( (1) k n i ki Q qr k ≤∑=1 (2) k k rk r n i r r D n sign d d k kn k ki i k ≤?+∑=-)(0 1 )1( (3) L n k ≤≤0 (4)

遗传算法——耐心看完-你就掌握了遗传算法【精品毕业设计】(完整版)

遗传算法入门到掌握 读完这个讲义,你将基本掌握遗传算法,要有耐心看完。 想了很久,应该用一个怎么样的例子带领大家走进遗传算法的神奇世界呢?遗传算法的有趣应用很多,诸如寻路问题,8数码问题,囚犯困境,动作控制,找圆心问题(这是一个国外网友的建议:在一个不规则的多边形中,寻找一个包含在该多边形内的最大圆圈的圆心。),TSP问题(在以后的章节里面将做详细介绍。),生产调度问题,人工生命模拟等。直到最后看到一个非常有趣的比喻,觉得由此引出的袋鼠跳问题(暂且这么叫它吧),既有趣直观又直达遗传算法的本质,确实非常适合作为初学者入门的例子。这一章将告诉读者,我们怎么让袋鼠跳到珠穆朗玛峰上去(如果它没有过早被冻坏的话)。 问题的提出与解决方案 让我们先来考虑考虑下面这个问题的解决办法。 已知一元函数: 图2-1 现在要求在既定的区间内找出函数的最大值。函数图像如图2-1所示。 极大值、最大值、局部最优解、全局最优解

在解决上面提出的问题之前我们有必要先澄清几个以后将常常会碰到的概念:极大值、最大值、局部最优解、全局最优解。学过高中数学的人都知道极大值在一个小邻域里面左边的函数值递增,右边的函数值递减,在图2.1里面的表现就是一个“山峰”。当然,在图上有很多个“山峰”,所以这个函数有很多个极大值。而对于一个函数来说,最大值就是在所有极大值当中,最大的那个。所以极大值具有局部性,而最大值则具有全局性。 因为遗传算法中每一条染色体,对应着遗传算法的一个解决方案,一般我们用适应性函数(fitness function)来衡量这个解决方案的优劣。所以从一个基因组到其解的适应度形成一个映射。所以也可以把遗传算法的过程看作是一个在多元函数里面求最优解的过程。在这个多维曲面里面也有数不清的“山峰”,而这些最优解所对应的就是局部最优解。而其中也会有一个“山峰”的海拔最高的,那么这个就是全局最优解。而遗传算法的任务就是尽量爬到最高峰,而不是陷落在一些小山峰。(另外,值得注意的是遗传算法不一定要找“最高的山峰”,如果问题的适应度评价越小越好的话,那么全局最优解就是函数的最小值,对应的,遗传算法所要找的就是“最深的谷底”)如果至今你还不太理解的话,那么你先往下看。本章的示例程序将会非常形象的表现出这个情景。 “袋鼠跳”问题 既然我们把函数曲线理解成一个一个山峰和山谷组成的山脉。那么我们可以设想所得到的每一个解就是一只袋鼠,我们希望它们不断的向着更高处跳去,直到跳到最高的山峰(尽管袋鼠本身不见得愿意那么做)。所以求最大值的过程就转化成一个“袋鼠跳”的过程。下面介绍介绍“袋鼠跳”的几种方式。 爬山法、模拟退火和遗传算法 解决寻找最大值问题的几种常见的算法: 1. 爬山法(最速上升爬山法): 从搜索空间中随机产生邻近的点,从中选择对应解最优的个体,替换原来的个体,不断重复上述过程。因为只对“邻近”的点作比较,所以目光比较“短浅”,常常只能收敛到离开初始位置比较近的局部最优解上面。对于存在很多局部最优点的问题,通过一个简单的迭代找出全局最优解的机会非常渺茫。(在爬山法中,袋鼠最有希望到达最靠近它出发点的山顶,但不能保证该山顶是珠穆朗玛峰,或者是一个非常高的山峰。因为一路上它只顾上坡,没有下坡。) 2. 模拟退火: 这个方法来自金属热加工过程的启发。在金属热加工过程中,当金属的温度超过它的熔点(Melting Point)时,原子就会激烈地随机运动。与所有的其它的物理系统相类似,原子的这种运动趋向于寻找其能量的极小状态。在这个能量的变

遗传算法解非线性方程

遗传算法解非线性方程组的Matlab程序 程序用MATLAB语言编写。之所以选择MATLB,是因为它简单,但又功能强大。写1行MATLAB程序,相当于写10行C++程序。在编写算法阶段,最好用MATLAB语言,算法验证以后,要进入工程阶段,再把它翻译成C++语言。 本程序的算法很简单,只具有示意性,不能用于实战。 非线性方程组的实例在函数(2)nonLinearSumError1(x)中,你可以用这个实例做样子构造你自己待解的非线性方程组。 %注意:标准遗传算法的一个重要概念是,染色体是可能解的2进制顺序号,由这个序号在可能解的集合(解空间)中找到可能解 %程序的流程如下: %程序初始化,随机生成一组可能解(第一批染色体) %1: 由可能解的序号寻找解本身(关键步骤) %2:把解代入非线性方程计算误差,如果误差符合要求,停止计算 %3:选择最好解对应的最优染色体 %4:保留每次迭代产生的最好的染色体,以防最好染色体丢失 %5: 把保留的最好的染色体holdBestChromosome加入到染色体群中 %6: 为每一条染色体(即可能解的序号)定义一个概率(关键步骤) %7:按照概率筛选染色体(关键步骤) %8:染色体杂交(关键步骤) %9:变异 %10:到1 %这是遗传算法的主程序,它需要调用的函数如下。 %由染色体(可能解的2进制)顺序号找到可能解: %(1)x=chromosome_x(fatherChromosomeGroup,oneDimensionSet,solutionS um); %把解代入非线性方程组计算误差函数:(2)functionError=nonLinearSumError1(x); %判定程是否得解函数:(3)[solution,isTrue]=isSolution(x,funtionError,solutionSumError); %选择最优染色体函数: %(4)[bestChromosome,leastFunctionError]=best_worstChromosome(fatherC hromosomeGroup,functionError); %误差比较函数:从两个染色体中,选出误差较小的染色体 %(5)[holdBestChromosome,holdLeastFunctionError]... % =compareBestChromosome(holdBestChromosome,holdLeastFunctionError,... % bestChromosome,leastFuntionError) %为染色体定义概率函数,好的染色体概率高,坏染色体概率低 %(6)p=chromosomeProbability(functionError); %按概率选择染色体函数: %(7)slecteChromosomeGroup=selecteChromome(fatherChromosomeGroup,p );

非线性模型参数估计的遗传算法

滨江学院 毕业论文(设计)题目非线性模型参数估计的遗传算法 院系大气与遥感系 专业测绘工程 学生姓名李兴宇 学号200923500** 指导教师王永弟 职称讲师 二O一三年五月二十日

- 目录- 摘要 (3) 关键词 (3) 1.引言 (3) 1.1 课题背景 (3) 1.2 国内外研究现状 (4) 1.3 研究的目的和意义 (4) 1.4 论文结构 (5) 2.遗传算法简介 (5) 2.1 遗传算法的起源 (5) 2.2 遗传算法的基本思想 (6) 2.2.1 遗传算法求最优解的一般步骤 (7) 2.2.2 用技术路线流程图形式表示遗传算法流程 (7) 2.3 遗传算法的基本原理及设计 (8) 2.3.1 适应度设计 (8) 2.3.2 遗传算子操作 (9) 3.遗传算法的应用实例 (9) 3.1 非线性模型参数估计 (10) 3.2 实例分析 (10) 4.结语 (12) 参考文献 (12) 英文题目 (14) - 1 -

- 2 - 致谢 (15)

非线性模型参数估计的遗传算法 李兴宇 南京信息工程大学滨江学院测绘工程专业,南京 210044 摘要:关于非线性模型计算中的参数估计是十分棘手的问题,为此常常将这样的问题转化成非线性优化问题解决,遗传算法作为一种具有强适应性的全局搜索方法而被频繁的应用于非线性系统参数估计的计算当中,本文介绍了遗传算法及其理论基础,阐述了遗传算法在非线性模型参数估计中的应用的起源和发展,引入实例说明了遗传算法在非线性模型参数估计的实际运用中的实现,并概述了基于遗传算法的非线性参数模型估计具体解算过程,将使用遗传算法得到的结果与其他算法的解算结果进行比较,结果表明:遗传算法是一种行之有效的搜索算法,能有效得到全局最优解,在今后的研究中值得推广。 关键词:遗传算法非线性模型参数估计应用 1.引言 1.1课题背景 当前科学技术的发展和研究已经进入了进入各个领域、多个学科互相交叉、互相渗透和互相影响的时代,生命科学的研究与工程科学的交叉、渗透和相互补充提高便是其中一个非常典型的例子,同时也表现出了近代科学技术发展的一个新的显著特点。遗传算法研究工作的蓬勃发展以及在各个领域的广泛应用正是体现了科学发展过程的的这一明显的特点和良好的趋势。 非线性科学是一门研究复杂现象的科学,涉及到社会科学、自然科学和工程技术等诸多领域,在测绘学的研究中,尤其是在测量平差模型的研究和计算过程中,大量引入的都是非线性函数方程模型,而对于非线性模型的解算,往往过程复杂。遗传算法的出现为研究工作提供了一种求解多模型、多目标、非线性等复杂系统的优化问题的通用方法和框架。 对于非线性系统的解算,传统上常用的方法是利用其中参数的近似值将非线性系统线性化,也就是线性近似,测绘学中通常称之为线性化,经过线性化之后,将其视为线性模型并利用线性模型的解算方法得到结果,这就很大程度的简化了解算步骤,减少了工作量,但同时会带来新的问题,运用这种传统方法得到的数据结果存在的误差较大、精度不足等问题。利用线性近似方法对非线性模型进行参数估计,精度往往取决于模型的非线性强度。 - 3 -

6-第二篇 第2章 遗传算法的基本实现技术

2.4 遗传算子 遗传算法中包括三个遗传操作(或称遗传算子):即选择算子、交叉算子和变异算子,它们构成了遗传算法具备强大搜索能力的核心。利用遗传算子产生新一代群体实现群体进化,下面分别介绍这三种遗传算子。 2.4.1选择算子 在生物的遗传和自然进化过程中,对生存环境适应程度较高的物种将有更多机会遗传到下一代;而对生存环境适应程度较低的物种遗传到下一代的机会就相对较少。模仿这个过程,遗传算法使用选择算子(或称复制算子,Reproduction Operator)来对群体中的个体进行优胜劣汰操作:适应度较高的个体被遗传到下一代群体中的概率较大;适应度较低的个体被遗传到下一代群体中的概率较小。遗传算法中的选择操作就是用来确定如何从父代群体中按某种方法选取哪些个体遗传到下一代群体中的一种遗传运算。通过选择操作可以避免基因缺失,提高全局收敛性和计算效率。 1. 比例选择法(proportional model) 适应度比例选择方法是基本的选择方法,也叫赌轮选择(roulette wheel selection)或蒙特卡罗选择,是一种回放式随机采样方法。该方法的基本思想是:各个个体的被选中的概率与其适应度大小成正比。 设群体规模为M ,个体i 的适应度为i F ,则个体i 被选中的概率is P 为: 1 i is M i i F P F == ∑ (1,2, ,i M =) (2-14) 显然,概率is P 反映了个体i 的适应度在整个群体的个体适应度总和中所占的比例,个体适应度越大,其被选择的概率就越高,反之亦然。 2. 最佳个体保存方法(elitist model) 最佳个体保存法的思想是群体中适应度最高的个体不参与交叉运算和变异运算,而是用它来替换掉本代群体中经过交叉、变异等遗传操作后所产生的适应度最低的个体 采用这样选择方法的优点是,进化过程中某一代的最优解可不被交叉或变异操作破坏。但是,这也隐含了一种危机,即局部最优个体的遗传基因会急速增加而使进化有可能陷于局部解,也就是说,该方法的全局搜索能力差。它适合于单峰性质的优化问题的空间搜索,而不适于多峰性质的空间搜索。所以,此方法一般都与其他选择方法结合使用。 3. 期望值方法(expected value model) 在赌轮选择方法中,当个体数不太多时,产生的随机数有可能会出现不正确地反映个体适应度的选择。这时存在统计误差,也就是就,适应度高的个体有可能被淘汰,适应度低的个体也有可能被选择。为了克服这种缺点,期望值方法根据每个个体在下一代群体中的生存期望值来进行随机选择运算,是一种无回放的随机采样方法,其步骤如下: (1)计算群体中每个个体在下一代生存的期望数目i N 1 i i i M avg i i F M F N F F =?= =∑ (1,2,,i M =) (2-15)

matlab遗传算法学习和全局化算法【精品毕业设计】(完整版)

1 遗传算法步骤 1 根据具体问题选择编码方式,随机产生初始种群,个体数目一定,每个个体表现为染色 体的基因编码 2 选择合适的适应度函数,计算并评价群体中各个体的适应。 3 选择(selection)。根据各个个体的适应度,按照一定的规则或方法,从当前群体中选择出 一些优良的个体遗传到下一代群体 4 交叉(crossover)。将选择过后的群体内的各个个体随机搭配成对,对每一对个体,以一定 概率(交叉概率)交换它们中的部分基因。 5 变异(mutation)。对交叉过后的群体中的每一个个体,以某个概率(称为变异概率)改n 变某一个或某一些基因位上的基因值为其他的等位基因 6 终止条件判断。若满足终止条件,则以进化过程中得到的具有最大适应度的个体作为最 优解输出,终止运算。否则,迭代执行Step2 至Step5。 适应度是评价群体中染色体个体好坏的标准,是算法进化的驱动力,是自然选择的唯一依据,改变种群结构的操作皆通过适应度函数来控制。在遗传算法中,以个体适应度的大小 来确定该个体被遗传到下一代群体中的概率。个体的适应度越大,被遗传到下一代的概率 就越大,相反,被遗传到下一代的概率就越小。 1 [a,b,c]=gaopt(bound,fun)其中,bound=[xm,xM]为求解区间上届和下届构成的矩阵。Fun 为用户编写的函数。a为搜索的结果向量,由搜索的出的最优x向量与目标函数构成,b为最终搜索种群,c为中间搜索过程变参数,其第一列为代数,后边列分别为该代最好的的个 体与目标函数的值,可以认为寻优的中间结果。 2 ga函数。[X,F, FLAG,OUTPUT] = GA(fun, n,opts).n为自变量个数,opts为遗传算法控制选项,用gaoptimset()函数设置各种选项,InitialPopulation可以设置初始种群,用PopulationSize 可以设置种群规模,SelectionFcn可以定义选择函数, 3 gatool 函数用于打开,GATOOL is now included in OPTIMTOOL。 2.2 通过GUI 使用遗传算法 在Matlab 工作窗口键入下列命令>>gatool,或通过Start 打开其下子菜单Genetic Algorithm Tool,如图1。只要在相应的窗格选择相应的选项便可进行遗传算法的计算。其中fitnessfun 窗格为适应度函数,填写形式为@fitnessfun,Number of variable 窗格为变量个数。其它窗格参数根据情况填入。填好各窗格内容,单击Start 按钮,便可运行遗传算法 例子1 应用实例 已知某一生物的总量y(单位:万个)与时间t(月)之间的关系为y=k0(1-exp(-k1*t)), 统计十个月得到数据见表1,试求关系式中的k0,k1。先编写目标函数,并以文件名myfung.m

4-第二篇 第2章 遗传算法的基本实现技术

第 2 章 遗传算法的基本实现技术
在第一章中,以实例简述的形式提供了遗传算法的一个基本框架。基于对自然界中生物遗传和进化机 理的模仿,许多学者针对不同的问题,设计了不同的编码方法和不同的遗传算子来模仿不同环境下生物的 遗传特性。这样,由不同的编码方法和不同的遗传算子就构成了各种特点的遗传算法,下面我们根据遗传 算法的基本构成要素来阐述其基本的实现技术。
2.1 编码方法
遗传算法的特点之一是不对求解问题的决策变量直接进行操作,而是通过对个体编码,并进行交叉与 变异的进化运算过程,不断搜索出适应度较高的新个体,最终寻求出问题的最优解或近似最优解。由于遗 传算法不能直接处理问题空间或解空间的参数,必须把它们转换成表达空间或搜索空间的染色体,这一转 换操作称为编码。
2.1.1 编码原则 应用遗传算法计算时,遇到的首要问题就是编码,可以说它是整个计算的一个关键步骤。编码方法除
决定了个体的染色体排列形式,还决定了个体从搜索空间的基因型变换到解空间的表现型时的解码方法。 编码方法也影响到交叉算子、变异算子等遗传算子的运算方法。由此可见,编码方法在很大程度上决定了 如何进行群体的遗传进化运算以及遗传进化运算的效率。一个好的编码方法,有可能使遗传运算和操作过 程简单地执行;一个差的编码方法,一方面影响运算精度和储存量,另一方面可能使交叉及变异等运算难 以实现。如果编码方法和交叉处理不当,在遗传算法中因交叉而生成的个体有可能成为无用解或无效解。
另外,编码和交叉的策略是互相依存的,恰当地设计编码和交叉的策略与方法,对充分发挥遗传算法 的效能是十分重要的,在设计编码策略时,常考虑以下三个问题:
1. 完备性:对问题空间的任何一个点有搜索空间的一个点与之对应。即问题空间的所有可能解都能 表示为所设计的基因编码形式。
2. 健全性:对于表达空间中的任何一个点都有问题空间中的一个点与之对应。即任何一个基因编码 都对应于一个可能解;
3. 非冗余性:问题空间和表达空间一一对应。 上述三点表明,编码策略必须保证从问题空间到表达空间有一对一的映射关系。 应该注意的是,对于很多问题,很难设计出同时满足上述 3 个性质的编码方案,不管怎样,完备性是 必须满足的性质,在有些情况下,虽然产生无效解并不完全都是有害的,在大部分情况下是影响运算效率 的。 上述三个编码评估规范虽然带有普遍意义,但缺乏具体的指导思想,特别是满足这些规范的编码不一 定能有效地提高遗传算法的搜索效率。 De Jong 提出了较为客观明确的编码评估准则,他称之为编码原则,又称之为编码规则: 1. 有意义基因块编码规则:应使用能易于产生与所求问题相关的低阶、短定义长度模式的编码方案。 在此原则中,模式是指具有某些基因相似性的个体集合,而具有低阶、短定义长度且适应度较高的模 式称为构造优良个体的基因块。该编码原则理解为应使用易于生成适应度较高的个体编码方案。 2. 最小字符集编码原则:所设计的编码方案应采用最小字符集以使问题得到自然的表示或描述。 在此原则中说明常常使用二进制编码方法的原因,因为它满足这条编码原则的要求。根据理论分析表 明,与其他编码字符集相比,二进制编码方案能包含最大的模式数,它可使得遗传算法在确定的规模群体 中能够处理最多的模式。 上述 De Jong 编码原则,仅仅是为编码设计提出了一定的准则,它并不适合于所有的问题,在处理实 际应用问题时,必须对编码方法、交叉运算方法、变异运算方法、解码方法等统筹考虑。以便对问题求解 简便,寻求遗传运算效率最高的编码方法。

遗传算法的原理及MATLAB程序实现

1 遗传算法的原理 1.1 遗传算法的基本思想 遗传算法(genetic algorithms,GA)是一种基于自然选择和基因遗传学原理,借鉴了生物进化优胜劣汰的自然选择机理和生物界繁衍进化的基因重组、突变的遗传机制的全局自适应概率搜索算法。 遗传算法是从一组随机产生的初始解(种群)开始,这个种群由经过基因编码的一定数量的个体组成,每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,其内部表现(即基因型)是某种基因组合,它决定了个体的外部表现。因此,从一开始就需要实现从表现型到基因型的映射,即编码工作。初始种群产生后,按照优胜劣汰的原理,逐代演化产生出越来越好的近似解。在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。这个过程将导致种群像自然进化一样,后代种群比前代更加适应环境,末代种群中的最优个体经过解码,可以作为问题近似最优解。 计算开始时,将实际问题的变量进行编码形成染色体,随机产生一定数目的个体,即种群,并计算每个个体的适应度值,然后通过终止条件判断该初始解是否是最优解,若是则停止计算输出结果,若不是则通过遗传算子操作产生新的一代种群,回到计算群体中每个个体的适应度值的部分,然后转到终止条件判断。这一过程循环执行,直到满足优化准则,最终产生问题的最优解。图1-1给出了遗传算法的基本过程。 1.2 遗传算法的特点 1.2.1 遗传算法的优点 遗传算法具有十分强的鲁棒性,比起传统优化方法,遗传算法有如下优点: 1. 遗传算法以控制变量的编码作为运算对象。传统的优化算法往往直接利用控制变量的实际值的本身来进行优化运算,但遗传算法不是直接以控制变量的值,而是以控制变量的特定形式的编码为运算对象。这种对控制变量的编码处理方式,可以模仿自然界中生物的遗传和进化等机理,也使得我们可以方便地处理各种变量和应用遗传操作算子。 2. 遗传算法具有内在的本质并行性。它的并行性表现在两个方面,一是遗传

遗传算法与优化问题

实验十遗传算法与优化问题 一、问题背景与实验目的 遗传算法(Genetic Algorithm —GA),就是模拟达尔文的遗传选择与自然淘汰的生物进化过程的计算模型,它就是由美国Michigan大学的J、Holla nd教授于1975 年首先提出的?遗传算法作为一种新的全局优化搜索算法,以其简单通用、鲁棒性强、适于并行处理及应用范围广等显著特点,奠定了它作为21世纪关键智能计算之一的地位. 本实验将首先介绍一下遗传算法的基本理论,然后用其解决几个简单的函数最值问题,使读者能够学会利用遗传算法进行初步的优化计算? 1. 遗传算法的基本原理 遗传算法的基本思想正就是基于模仿生物界遗传学的遗传过程?它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染色体的个体组成的群体?这个群体在问题特定的环境里生存 竞争,适者有最好的机会生存与产生后代?后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程.群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解?值得注意的一点就是,现在的遗传算法就是受生物进化论学说的启发提出的,这种学说对我们用计算机解决复杂问题很有用,而它本身就是否完全正确并不重要(目前生物界对此学说尚有争议). (1)遗传算法中的生物遗传学概念 由于遗传算法就是由进化论与遗传学机理而产生的直接搜索优化方法;故而 在这个算法中要用到各种进化与遗传学的概念? 首先给出遗传学概念、遗传算法概念与相应的数学概念三者之间的对应关系这些概念

(2)遗传算法的步骤 遗传算法计算优化的操作过程就如同生物学上生物遗传进化的过程,主要有三个基本操作(或称为算子):选择(Selection)、交叉(Crossover)、变异(Mutation). 遗传算法基本步骤主要就是:先把问题的解表示成“染色体”,在算法中也就就是以二进制编码的串,在执行遗传算法之前,给出一群“染色体”,也就就是假设的可行解.然后,把这些假设的可行解置于问题的“环境”中,并按适者生存的原则从中选 择出较适应环境的“染色体”进行复制 ,再通过交叉、变异过程产生更适 应环境的新一代“染色体”群.经过这样的一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就就是问题的最优解. 下面给出遗传算法的具体步骤,流程图参见图1: 第一步:选择编码策略,把参数集合(可行解集合)转换染色体结构空间; 第二步:定义适应函数,便于计算适应值; 第三步:确定遗传策略,包括选择群体大小,选择、交叉、变异方法以及确定交叉概率、变异概率等遗传参数; 第四步:随机产生初始化群体; 第五步:计算群体中的个体或染色体解码后的适应值; 第六步:按照遗传策略,运用选择、交叉与变异算子作用于群体,形成下一代群体; 第七步:判断群体性能就是否满足某一指标、或者就是否已完成预定的迭代次数,不满足则返回第五步、或者修改遗传策略再返回第六步. 图1 一个遗传算法的具体步骤

基于Matlab遗传算法的非线性方程组优化程序

基于Matlab遗传算法的非线性方程组优化程序 clear,clc;%清理内存,清屏 circleN=200;%迭代次数 format long %构造可能解的空间,确定染色体的个数、长度 solutionSum=4;leftBoundary=-10;rightBoundary=10; distance=1;chromosomeSum=500;solutionSumError=0.1; oneDimensionSet=leftBoundary:distance:rightBoundary; oneDimensionSetN=size(oneDimensionSet,2);%返回oneDimensionSet中的元素个数 solutionN=oneDimensionSetN^solutionSum;%解空间(解集合)中可能解的总数 binSolutionN=dec2bin(solutionN);%把可能解的总数转换成二进制数 chromosomeLength=size(binSolutionN,2);%由解空间中可能解的总数(二进制数)计算染色体的长度 %程序初始化 %随机生成初始可能解的顺序号,+1是为了防止出现0顺序号 solutionSequence=fix(rand(chromosomeSum,1)*solutionN)+1; for i=1:chromosomeSum%防止解的顺序号超出解的个数 if solutionSequence(i)>solutionN; solutionSequence(i)=solutionN; end end %把解的十进制序号转成二进制序号 fatherChromosomeGroup=dec2bin(solutionSequence,chromosomeLength); holdLeastFunctionError=Inf;%可能解的最小误差的初值 holdBestChromosome=0;%对应最小误差的染色体的初值 %计算 circle=0; while circle

遗传算法小生境技术简介

遗传算法小生境技术简介 生物学上,小生境是指特定环境下的一种组织结构。在自然界中,往往特征,形状相似的物种相聚在一起,并在同类中交配繁衍后代。在SGA 中,交配完全是随机的,在进化的后期,大量的个体集中于某一极值点上,在用遗传算法求解多峰值问题时,经常只能找到个别的几个最优值,甚至往往得到是局部最优解。利用小生境我们可以找到全部最优解。 小生境技术就是将每一代个体划分为若干类,每个类中选出若干适应度较大的个体作为一个类的优秀代表组成一个群,再在种群中,以及不同种群中之间,杂交,变异产生新一代个体群。同时采用预选择机制和排挤机制或分享机制完成任务。基于这种小生境的遗传算法(Niched Genetic Algorithms,NGA),可以更好的保持解的多样性,同时具有很高的全局寻优能力和收敛速度,特别适合于复杂多峰函数的优化问题。 模拟小生境技术主要建立在常规选择操作的改进之上。Cavichio 在1970年提出了基于预选择机制的选择策略,其基本做法是:当新产生的子代个体的适应度超过其父代个体的适应度时,所产生的子代才能代替其父代而遗传到下一代群体中去,否则父代个体仍保留在下一代群体中。由于子代个体和父代个体之间编码结构的相似性,所以替换掉的只是一些编码结构相似的个体,故它能够有效的维持群体的多样性,并造就小生境的进化环境。De Jong在1975年提出基于排挤机制的选择策略,其基本思想源于在一个有限的生存环境中,各种不同的生物为了能够延续生存,他们之间必须相互竞争各种有限的生存资源。因此,在算法中设置一个排挤因子CF(一般取CF=2或3),由群体中随机选取的1/CF 个个体组成排挤成员,然后依据新产生的的个体与排挤成员的相似性来排挤一些与预排挤成员相类似的个体,个体之间的相似性可用个体编码之间的海明距离来度量。随着排挤过程的进行,群体中的个体逐渐被分类,从而形成一个个小的生成环境,并维持群体的多样性。 Goldberg等在1987年提出了基于共享机制(Sharing)的小生境实现方法。这种实现方法的基本思想是:通过反映个体之间的相似程度的共享函数来调节群体中各个个体的适应度,从而在这以后的群体进化过程中,算法能够依据这个调整后的新适应度来进行选择运算,以维持群体的多样性,创造出小生境的进化环境。 共享函数(Sharing Function)是表示群体中两个个体之间密切关系程度的一个函数,可记为S(d )其中表示个体i和j之间的关系。例如,个体基因型之间的海明距离就可以为一种共享函数。这里,个体之间的密切程度主要体现为个体基因型的相似性或个体表现型的相似性上。当个体之间比较相似时,其共享函数值就比较大;反之,当个体之间不太相似时,其共享函数值比较小。 共享度是某个个体在群体中共享程度的一中度量,它定义为该个体与群体内其它各个个体之间的共享函数值之和,用S 表示: S = (i=1,,M) 在计算出了群体中各个个体的共享度之后,依据下式来调整各个个体的适应度:F (X)=F (X)/S (i=1,,M) 由于每个个体的遗传概率是由其适应度大小来控制的,所以这种调整适应度的方法就能够限制群体中个别个体的大量增加,从而维护了群体的多样性,并造就了一种小生境的进化环境。

基于遗传算法和神经网络算法的吊车结构优化设计与实现

·制造业信息化· 图1吊车结构系统有限元模型 Fig.1The finite element model of a fixed crane Based on Genetic Algorithms and Artificial Neural Network Algorithms to Optimize the Structure Design and Implementation of Crane XUE Jia-Hai ,YU Xiao-Mo ,QING Ai-Ling ,ZHOU Wen-Jing ,YE Jun-Ke (College of Mechanical Engineering,Guangxi University,Nanning Guangxi 530004,China ) Abstract:This paper by using the finite element method,orthogonal test method,BP neural network and genetic algorithm to optimization of crane structure system.At last ,the neural network model will be optimized through the generic algorithm and the optimal parameters of the structure dynamic behavior will be obtained . Key words :finite element ;orthogonal experimental method ;BP-neural network ;genetic algorithm 0引言 随着吊车向大型化方向发展,结构在动载荷作用下的振动问题变得日益突出。因此,进行基于动态特性的优化设计,使产品在设计阶段就可以预测其动态特性,可有效减小系统的振动,提高整机工作性能。结构动力学建模方法主要有有限元法、试验模态法、混合建模法及基于人工神经网络的建模方法。基于人工神经网络的动态优化设计建模方法,是利用多层人工神经网络极强的非线性映射功能,来描述和处理动态系统中设计变量及其动态参数之间的关系。人工神经网络模型一旦建立,可取代有限元模型进行结构动态特性重分析,其分 析过程简单而直接,且远比有限元模型计算速度快,尤其适用于工程技术人员使用。由于吊车结构系统的动态特性很难用设计变量显式表达,因此用遗传算法对建立的神经网络模型寻优,计算出可行区域内动态特性最优时的设计变量及目标值。 1吊车结构系统动态特性分析 图1所示为某厂生产的固定式吊车的有限元模型。主要参数为:塔身高48.5m ,起重臂长70m ,最大起重力矩4400kN ·m 。吊车结构的弦杆、腹杆、钢丝绳及集中质量分别以空间梁单元、杆单元、弹簧单元及质量单元模拟。表1所示 为按最大起重力矩工况计算的系统前8阶固有频率。修稿日期:2012-12-21 作者简介:薛加海(1986-),男,云南彝族人,在读硕士研究生。主要研究方向:制造业管理信息化研究;于晓默(1982-),男,蒙古族人,在读博士研究生。主要研究方向:制造业管理信息化研究。 摘要:论文综合利用BP 神经网络、遗传算法有限元法以及正交试验法对吊车结构系统进行优化研究。利 用遗传算法和BP 神经网络建立复杂结构系统动态优化的计算模型,该模型可代替系统原来的有限元模型。首先对吊车起重机结构系统进行模态分析及谐响应动力学分析,找出对结构动态特性影响最大的模态频率,再利用灵敏度分析,确定对动态特性较敏感的设计变量作为神经网络的输入变量,并利用正交试验法确定神经网络训练样本,用有限元模型计算出样本点数据,建立反映结构振动特性的人工神经网络模型,最后利用遗传算法对所建立的神经网络模型寻优,得到使结构动态性能最优的设计参数。 关键词:有限元法;正交试验法;BP 神经网络;遗传算法中图分类号:TP18 文献标识码:A doi:10.3969/j.issn.1002-6673.2013.01.037 文章编号:1002-6673(2013)01-093-03 基于遗传算法和神经网络算法的吊车结构优化设计与实现 薛加海,于晓默,秦爱玲,周文景,叶俊科 (广西大学机械工程学院,广西南宁530004) 机电产品开发与创新 Development &Innovation of M achinery &E lectrical P roducts Vol.26,No.1Jan .,2013第26卷第1期2013年1月 93

基于遗传算法PID控制寻优实现(有代码超详细)

基于遗传优化算法对离散PID控制器参数的优化设计摘要 PID控制作为一种经典的控制方法,从诞生至今,历经数十年的发展和完善,因其优越的控制性能业已成为过程控制领域最为广泛的控制方法;PID控制器具有结构简单、适应性强、不依赖于被控对象的精确模型、鲁棒性较强等优点,其控制性能直接关系到生产过程的平稳高效运行,因此对PID控制器设计和参数整定问题的研究不但具有理论价值更具有很大的实践意义,遗传算法是一种借鉴生物界自然选择和自然遗传学机理上的迭代自适应概率性搜索算法。本论文主要应用遗传算法对PID调节器参数进行优化。 关键词:遗传优化算法PID控制器参数优化 1.前言 PID调节器是最早发展起来的控制策略之一,因为它所涉及的设计算法和控制结构都是简单的,并且十分适用于工程应用背景,此外PID控制方案并不要求精确的受控对象的数学模型,且采用PID控制的控制效果一般是比较令人满意的,所以在工业实际应用中,PID调节器是应用最为广泛的一种控制策略,也是历史最久、生命力最强的基本控制方式。调查结果表明: 在当今使用的控制方式中,PID型占84. 5% ,优化PID型占68%,现代控制型占有15%,手动控制型66%,人工智能(AI)型占0.6% 。如果把PID型和优化PID型二者加起来,则占90% 以上,这说明PID控制方式占绝大多数,如果把手动控制型再与上述两种加在一起,则占97.5% ,这说明古典控制占绝大多数。就连科学技术高度发达的日本,PID控制的使用率也高达84.5%。这是由于理论分析及实际运行经验已经证明了PID调节器对于相当多的工业过程能够起到较为满足的控制效果。它结构简单、适用面广、鲁棒性强、参数易于调整、在实际中容易被理解和实现、在长期应用中己积累了丰富的经验。特别在工业过程中,由于控制对象的精确数学模型难以建立,系统的参数又经常发生变化,运用现代控制理论分析综合要耗费很大的代价进行模型辨识,但往往不能达到预期的效果,所以不论常规调节仪表还是数

相关主题
文本预览
相关文档 最新文档