搜档网
当前位置:搜档网 › 基于遗传算法的一种新的约束处理方法

基于遗传算法的一种新的约束处理方法

基于遗传算法的一种新的约束处理方法
基于遗传算法的一种新的约束处理方法

基于遗传算法的一种新的约束处理方法

苏勇彦1,王攀1,范衠2

(1武汉理工大学 自动化学院, 湖北 武汉 430070)

(2丹麦理工大学 机械系 哥本哈根)

摘 要:本文针对目前的约束处理方法中存在的问题,提出一种新的约束处理方法。该方法通过可行解和不可行解混合交叉的方法对问题的解空间进行搜索,对可行种群和不可行种群分别进行选择操作。避免了惩罚策略中选取惩罚因子的困难,使得约束处理问题简单化。实例测试结果表明,该约束处理方法的有效性。

关键词:遗传算法、约束处理、可行解、不可行解、两种群混合交叉

1引言

科学研究和工程应用中许多问题都可以转化为求解一个带约束条件的函数优化问题[1]。遗传算法(Genetic Algorithm )与许多基于梯度的算法比较,具有不需要目标函数和约束条件可微,且能收敛到全局最优解的优点 [2],因此,它成为一种约束优化问题求解的有力工具。目前,基于GA 的约束处理方法有拒绝策略,修复策略,改进遗传算子策略以及惩罚函数策略等。但是这些方法都存在一些问题[3]:修复策略对问题本身的依赖性,对于每个问题必须设计专门的修复程序。改进遗传算子策略则需要设计针对问题的表达方式以及专门的遗传算子来维持解的可行性。惩罚策略解的质量严重依赖于惩罚因子的选取,当惩罚因子不适当时,算法可能收敛于不可行解。

本文针对目前的约束处理方法中存在的问题,提出一种新的约束处理方法。该方法通过可行解和不可行解混合交叉的方法对问题的解空间进行搜索,对可行种群和不可行种群分别进行选择操作。避免了惩罚策略中选取惩罚因子的困难,使得约束处理问题简单化。实例测试结果表明,该约束处理方法的有效性。

2约束处理方法描述

2.1单目标有约束优化问题一般形式

)(max x f

..t s ;0)(≤x g i

1,,2,1m i L L =;0)(=x h i )(,,1211m m m m i +=+=L

X x ∈

这里都是定义在m m m m h h h g g g f ,,,;,,;2121111L L ++n E 上的实值函数。X 是n E 上的

子集,x 是维实向量,其分量为。上述问题要求在变量满足约

束的同时极大化函数。函数通常为目标函数。约束n n x x x ,,,21L n x x x ,,,21L f f ;0)(≤x g i 称为不等式约束;约束称为等式约束。集合;0)(=x h i X 通常为变量的上下界限定的区域。向量且满足所有约束,则称之为问题的可行解。所有可行解构成可行域。否则,为问题的不可行解,所有不可行解构成不可行域。问题的目标是找到一个可行解X x ∈x 使得)()(x f x f ≤对于所有可行解x 成立。那么,x 为最优解[4]。

2.2算法描述

目前,最常采用的约束处理方法为惩罚函数法。但优化搜索的效率对惩罚因子的选择有

明显的依赖性。同时,惩罚因子没有统一的选择标准,使得惩罚因子选择非常困难。

基于惩罚函数的方法,选择是对可行解与不可行解的混合种群进行的。若种群中只有可行解,则不会出现惩罚因子的问题。但若采用拒绝策略,完全拒绝不可行解则大大减少搜索范围,很难收敛到最优解。“既然我们的目标是找到可行的最优解,一定要用对不可行解进行惩罚的方法吗?”[5]正是根据这一思路,本文提出一种既要利用不可行解扩大搜索范围,又不引入惩罚因子的约束优化处理方法。

该方法引入两个种群:可行种群和不可行种群。遗传算法采用实数编码法,对两个种 群进行的交叉操作为:分别从可行种群和不可行种群中随机选择一个个体,为父代个体进行混合的算术交叉,生成两个新个体。采用可行种群与不可行种群个体进行交叉的目的是扩大搜索空间。对交叉、变异后生成的新个体进行判断,将其分为可行种群和不可行种群,分别对可行种群和不可行种群进行选择操作。

popf inf pop 1p 2p 21,c c 由于与惩罚函数法具有相同的原理,即两种方法都利用不可行解增加搜索范围,同时利用可行解与不可行解之间的交叉操作产生新的解。在现实中存在一大类约束优化问题,其最优解位于约束边界上或附近,及最优点处不等式约束全部或大部分取为等号。因此,采用一种称为凸交叉的算术交叉,算术交叉操作及参数选择如下[4]:

21111p p c λλ+=,

12212p p c λλ+=, 121=+λλ,

0,021>>λλ

如右图所示:可行区域的点A 与不可行区域点C 交叉时,生成的个体在A 、C 之间的连线上。该交叉方法可以搜索到约束边界附近的点。

如何从交叉和变异中产生的新种群以及交叉变异之前的新种群中找到最优解?这是选择操作要解决的问题。本文的方法是将原始种群分为可行种群和不可行种群,对两种群分别进行选择操作。选择操作实现对个体适应值的评估,通过优胜劣态的进化原理最终收敛到最优解。这种方法就避免了确定惩罚因子带来的困难。

2.3算法流程

step 0:初始化,设置变异概率 、可行种群大小和不可行种群大小,根据约束条件对

m p 初始种群中的个体进行判断,将初始种群分为可行种群和不可行种群; popf inf pop step 1:对可行种群与不可行种群进行混合交叉、变异操作;

popf inf pop step 2:根据约束条件对交叉、变异后生成的新种群中个体进行判断,将种群分为可行种群

popf 和不可行种群;

inf pop step 3:采用 )(λμ+ 选择策略分别对不可行种群、可行种群进行选择操作;

step 4:判断算法终止条件是否满足?NO :转到step 1;YES :终止程序;

3问题测试及实验结果

数值测试例子

问题1[6]

2122212164222)(max x x x x x x x f ++?+?=

..t s 221≤+x x 5521≤+x x

01≥x ,

02≥x 问题2[4,7]

141.40792293239.378356891.03578547.5)(min 1512

3?++=x x x x x f ..t s 920022053.000026.00056868.0334407.850534152≤?++≤x x x x x x

1100021813.00029955.00071317.051249.8090232152≤+++≤x x x x x 250019085.00012547.00047026.0300961.920433153≤+++≤x x x x x x 102781≤≤x 45332≤≤x

45273≤≤x

45274≤≤x 45275≤≤x

根据上文提出的约束处理方法,编写matlab 程序进行实验,采用进化策略中的)(λμ+选择方法,对问题1,2求解结果为:

问题1. 初始种群popsize 大小为400,可行种群与不可行种群分别为初始种群大小的一半,迭代次数为150,变异概率为0.05,程序运行10次得到最好解=7.1611,对应的

变量值为(1.1287, 0.7742)。唐加福等采用混合遗传算法(HGA )得到的最优解7.16085gen m p )(x f [6]。

问题2. 初始种群大小popsize 为400,可行种群与不可行种群分别为初始种群大小的一半,迭代次数为100,变异概率为0.05,程序运行10次得到最好解=-3.0918e+004, gen m p )(x f 对应的变量值为(78.3002,33.8606,27.8735,44.8036,42.6653)。与Homaifar,Qi 和Lai 用基于惩罚策略的遗传算法得到解[8]以及广义简约梯度法(GRG )得到的结果有很大的提高,如下表所示。同时,李敏强、寇纪淞等基于遗传算法的直接比较—比例方法[1]得到结果最好解为-30665.539[9]。通过实验比较可知,该方法是一种很有效的约束处理方法。 表1 算法结果

项目 参考解 遗传算法基于遗传的

全局参考解 遗传算法基于遗传的局部参考解 GRG 的解 本文的方法

得到的解

)(x f

1x

2x

3x

4x

5x -30665.5 78.00 33.00 29.995 45.00 36.776 -30175.804 80.61 34.21 31.34 42.05 34.85 -30182.269 81.49 34.09 31.24 42.20 34.37 -30373.950 78.62 33.44 31.07 44.18 35.22 -30918.0078.3002 33.8606 27.8735 44.8036 42.6653 4结论

利用遗传算法解决约束优化问题时,出现的问题是在进行交叉、变异操作时,会出现不可行解。可以按照处理不可行解的方法对约束优化问题处理方法进行分类。完全拒绝不可行解的方法就是拒绝策略,惩罚策略对不可行解的适应度值进行处理。本文的方法是引入可行种群和不可行种群两个种群进行混合交叉、变异操作来扩大搜索范围,增加种群的多样性,

产生新的解;然后两个种群分别进行选择操作以提高种群的平均适应度值。通过几个常用的测试问题的求解以及与其它几种约束处理方法的比较表明:本文提出的约束处理方法具有很好的性能,且处理方法简单。

进一步的研究问题:各种约束处理方法的比较研究,特别是各种处理方法的效率的比较,遗传算法中种群大小、交叉概率、变异概率、迭代次数等参数的选取对算法的性能的影响的研究。同时,任何算法都有其适用范围,因此进一步研究本文算法对哪些问题效果好。

参考文献:

1.林丹、李敏强、寇纪淞基于遗传算法求解约束优化问题的一种算法软件学报V ol12.No4 2001 628-632 2. David E.Goldberg Genetic Algorithms in Search, Optimization & Machine Learning Addison-wesley publishing company 1989

3.Michalewicz, Z., Dasgupta, D., Le Riche, R.G., and Schoenauer, M., Evolutionary Algorithms for Constrained Engineering Problems, Computers & Industrial Engineering Journal, V ol.30, No.2, September 1996, pp.851-870

4.玄光男,程润伟北京: 遗传算法与工程设计科学出版社 2000

5.Michalewicz, Z Evolutionary Algorithms for Constrained Optimization IWEC’2000 International Workshop on Evolutionary Computation Wuhan pp.1—11

6. Tang Jiafu, Wang Dingwei, A.Ip, R.Y.K.Fung A hybrid genetic algorithm for a type of non-linear programming problems, Computers and Mathematics with Applications, V ol.36, No.5. 1998 pp.11-21 7.Himmelblau, M., Applied Nonlinear Programming, McGraw-Hill, New York,1972

8.Homaifar, A.,C. Qi, and S. Lai, Constrained optimization via genetic algorithms, Simulation, V ol. 62, No.4, pp.242-254,1994

9.李敏强、寇纪淞、林丹、李全书北京: 遗传算法的基本理论与应用科学出版社 2002

A new handling constraint method based on the Genetic

Algorithms

Su Yongyan1,Wang Pan1,Fan zhun2

1 School of Automation,Wuhan university of technology

2 Danmark university of technology

Abstract

A new method to handle constrained optimization is proposed in this paper, to solve the disadvantages of the methods .This method searches the solution space of the problem though the admixture crossover of feasible and infeasible solutions, and does the selection operation on feasible and infeasible populations, respectively. It avoids the difficulty of selecting the penalty factor in penalty strategy and makes the handling constrain simplify. Numerical results show that it is a general effective method.

Keywords:Genetic Algorithm; Constraint handling; feasible solution; infeasible solution

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) 其中()T n x x x X ,...,,21=是决策向量,x 1,…,x n 为n 个设计变量。这是一个单目标的数学规划问题:在一组针对决策变量的约束条件()0,1,...,j g X j p ≤=下,使目标函数最小化(有时 也可能是最大化,此时在目标函数()X f 前添个负号即可)。满足约束条件的解X 称为可行解,所有满足条件的X 组成问题的可行解空间。 2. 遗传算法基本原理和基本操作 遗传算法(Genetic Algorithm, GA)是一种非常实用、高效、鲁棒性强的优化技术,广 泛应用于工程技术的各个领域(如函数优化、机器学习、图像处理、生产调度等)。遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化算法。按照达尔文的进化论,生物在进化过程中“物竞天择”,对自然环境适应度高的物种被保留下来,适应度差的物种而被淘汰。物种通过遗传将这些好的性状复制给下一代,同时也通过种间的交配(交叉)和变异不断产生新的物种以适应环境的变化。从总体水平上看,生物在进化过程中子代总要比其父代优良,因此生物的进化过程其实就是一个不断产生优良物种的过程,这和优化设计问题具有惊人的相似性,从而使得生物的遗传和进化能够被用于实际的优化设计问题。 按照生物学知识,遗传信息基因(Gene)的载体是染色体(Chromosome),染色体中 一定数量的基因按照一定的规律排列(即编码),遗传基因在染色体中的排列位置称为基因

基于遗传算法的一种新的约束处理方法

基于遗传算法的一种新的约束处理方法 苏勇彦1,王攀1,范衠2 (1武汉理工大学 自动化学院, 湖北 武汉 430070) (2丹麦理工大学 机械系 哥本哈根) 摘 要:本文针对目前的约束处理方法中存在的问题,提出一种新的约束处理方法。该方法通过可行解和不可行解混合交叉的方法对问题的解空间进行搜索,对可行种群和不可行种群分别进行选择操作。避免了惩罚策略中选取惩罚因子的困难,使得约束处理问题简单化。实例测试结果表明,该约束处理方法的有效性。 关键词:遗传算法、约束处理、可行解、不可行解、两种群混合交叉 1引言 科学研究和工程应用中许多问题都可以转化为求解一个带约束条件的函数优化问题[1]。遗传算法(Genetic Algorithm )与许多基于梯度的算法比较,具有不需要目标函数和约束条件可微,且能收敛到全局最优解的优点 [2],因此,它成为一种约束优化问题求解的有力工具。目前,基于GA 的约束处理方法有拒绝策略,修复策略,改进遗传算子策略以及惩罚函数策略等。但是这些方法都存在一些问题[3]:修复策略对问题本身的依赖性,对于每个问题必须设计专门的修复程序。改进遗传算子策略则需要设计针对问题的表达方式以及专门的遗传算子来维持解的可行性。惩罚策略解的质量严重依赖于惩罚因子的选取,当惩罚因子不适当时,算法可能收敛于不可行解。 本文针对目前的约束处理方法中存在的问题,提出一种新的约束处理方法。该方法通过可行解和不可行解混合交叉的方法对问题的解空间进行搜索,对可行种群和不可行种群分别进行选择操作。避免了惩罚策略中选取惩罚因子的困难,使得约束处理问题简单化。实例测试结果表明,该约束处理方法的有效性。 2约束处理方法描述 2.1单目标有约束优化问题一般形式 )(max x f ..t s ;0)(≤x g i 1,,2,1m i L L =;0)(=x h i )(,,1211m m m m i +=+=L X x ∈ 这里都是定义在m m m m h h h g g g f ,,,;,,;2121111L L ++n E 上的实值函数。X 是n E 上的 子集,x 是维实向量,其分量为。上述问题要求在变量满足约 束的同时极大化函数。函数通常为目标函数。约束n n x x x ,,,21L n x x x ,,,21L f f ;0)(≤x g i 称为不等式约束;约束称为等式约束。集合;0)(=x h i X 通常为变量的上下界限定的区域。向量且满足所有约束,则称之为问题的可行解。所有可行解构成可行域。否则,为问题的不可行解,所有不可行解构成不可行域。问题的目标是找到一个可行解X x ∈x 使得)()(x f x f ≤对于所有可行解x 成立。那么,x 为最优解[4]。 2.2算法描述 目前,最常采用的约束处理方法为惩罚函数法。但优化搜索的效率对惩罚因子的选择有

matlab自带优化工具箱遗传算法中文解释

matlab自带优化工具箱遗传算法中文解释 problem setup and results设置与结果 problem fitness function适应度函数 number of variable变量数 constraints约束 linear inequalities线性不等式,A*x<=b形式,其中A是矩阵,b是向量 linear equalities线性等式,A*x=b形式,其中A是矩阵,b是向量 bounds定义域,lower下限,upper上限,列向量形式,每一个位置对应一个变量 nonlinear constraint function非线性约束,用户定义,非线性等式必须写成c=0形式,不等式必须写成c<=0形式 integer variable indices整型变量标记约束,使用该项时Aeq和beq必须为空,所有非线性约束函数必须返回一个空值,种群类型必须是实数编码 run solver and view results求解 use random states from previous run使用前次的状态运行,完全重复前次运行的过程和结果 population population type编码类型 double vector实数编码,采用双精度 bitstring二进制编码对于生成函数和变异函数,只能选用uniform和custom,对于杂交函数,只能使用 scattered singlepoint,twopoint或custom不能使用hybrid function和nonlinear constraint function custom 自定义 population size:种群大小 creation function:生成函数,产生初始种群 constraint dependent:约束相关,无约束时为uniform,有约束时为feasible population uniform:均匀分布 feasible population :自适应种群,生成能够满足约束的种群 initial population:初始种群,不指定则使用creation function生成,可以指定少于种群数量的种群,由creation function完成剩余的 initial scores:初始值,如果不指定,则有计算机计算适应度函数作为初始值,对于整型约束不可用,使用向量表示 initial range:初始范围,使用向量矩阵表示,第一行表示范围的下限,第二行表示上限 fitness scaling:适应度尺度 rank:等级。将适应度排序,然后编号 proportional:按比例 top:按比例选取种群中最高适应度的个体,这些个体有等比例的机会繁衍,其余的个体被淘汰 shift linear:线性转换

一种改进的遗传算法

第17卷第3期 辽阳石油化工高等专科学校学报Vol.17No.3 2001年9月 Journal of Liaoyang Petrochemical College September2001 一种改进的遗传算法 王亮申 王文友 吴克勤 江远鹏 谢 荣 (辽阳石油化工高等专科学校机械系,辽阳111003) 摘 要 给出的适应值标定公式能够解决对个体选择压力和标定后适应值非负问题. 对多极值函数的遗传算法所提出的改进措施可以增加群体的多样性,避免算法“早熟”,过早 陷入局部最优. 关键词 遗传算法;适应值标定;早熟 中图分类号 O224 由美国密执安(Michrgan)大学的Holland教授等人在1975年创立的遗传算法(G enetic Algo2 rithms简称G A),是建立在达尔文(Darwin)的生物进化论和孟德尔(Mendel)的遗传学说基础上的算法.经过后人的不断改进使得遗传算法更加完善.由于遗传算法求解复杂优化问题的巨大潜力及其在各个领域(如布局优化问题、交通问题、图像处理与识别、结构设计、电力系统设计、可靠性计算等)的成功应用,这种算法越来越被人们所接受. 遗传算法是一种基于生物进化原理构想出来的搜索最优解的仿生算法,它模拟基因重组与进化的自然过程,把待解决问题的参数编成二进制码或十进制码(也可编成其它进制码)即基因(gene),若干基因组成一个染色体(个体),许多染色体进行类似于自然选择、配对交叉和变异运算,经过多次重复迭代(即世代遗传)直至得到最后的优化结果.习惯上,适应度值越大,表示解的质量越好.对于求解最小值问题可通过变换转为求解最大值问题.遗传算法是一种高度并行、随机、自适应搜索算法. 尽管遗传算法有许多优点,也有许多专家学者对遗传算法进行不断研究,但目前存在的问题依然很多.如(1)适应值标定方式多种多样,没有一个简洁、通用方法,不利于对遗传算法的使用; (2)遗传算法的“早熟”现象即很快收敛到局部最 收稿日期:2001-06-27优解而不是全局最优解是迄今为止最难处理的关键问题;(3)快要接近最优解时在最优解附近左右摆动,收敛较慢. 1 改进方法 1.1 适应值标定 初始种群中可能存在特殊个体的适应值超常(如很大).为了防止其统治整个群体并误导群体的发展方向而使算法收敛于局部最优解需限制其繁殖;在计算临近结束,遗传算法逐渐收敛,由于群体中个体适应值比较接近,继续优化选择困难,造成在最优解附近左右摇摆,此时应将个体适应值适当加以放大,以提高选择能力,这就是适应值的标定.文献[1]提出的标定方法有两个计算公式,不利于使用;文献[2]的标定方式虽然限制了适应值范围但将最大最小值颠倒.此外象幂律标定、对数标定等亦有应用.本文针对适应值标定问题提出以下计算公式. f’= 1 f max-f min+δ (f+|f min|) f′—为标定后的适应值;f—为原适应值;δ—为在(0,1)内的一个正实数,目的是防止分母为零和增加遗传算法的随机性;|f min|—是为了保证定标后的适应值不出现负值。

一种基于遗传算法的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) 如何选择各个遗传操作以及如何确定各控制参数的取值。解决了这些问题就可以利

用遗传算法优化BP神经网络的Matlab编程实例

用遗传算法优化BP神经网络的 Matlab编程实例 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- % % 使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=premnmx(XX); YY=premnmx(YY); %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tan sig','purelin'},'trainlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数 %下面调用gaot工具箱,其中目标函数定义为gabpEval [x,endPop,bPop,trace]=ga(aa,'gabpEval',[],ini tPpp,[1e-6 1 1],'maxGenTerm',gen,... 'normGeomSelect',[],['arithXover'],[2],'n onUnifMutation',[2 gen 3]); %绘收敛曲线图 figure(1) plot(trace(:,1),1./trace(:,3),'r-'); hold on plot(trace(:,1),1./trace(:,2),'b-'); xlabel('Generation'); ylabel('Sum-Squared Error'); figure(2) plot(trace(:,1),trace(:,3),'r-'); hold on plot(trace(:,1),trace(:,2),'b-'); xlabel('Generation'); ylabel('Fittness'); %下面将初步得到的权值矩阵赋给尚未开始训练的BP 网络 [W1,B1,W2,B2,P,T,A1,A2,SE,val]=gadecod(x); {2,1}=W1; {3,2}=W2; {2,1}=B1; {3,1}=B2; XX=P; YY=T; %设置训练参数 %训练网络 net=train(net,XX,YY); 程序二:适应值函数 function [sol, val] = gabpEval(sol,options) % val - the fittness of this individual % sol - the individual, returned to allow for Lamarckian evolution % options - [current_generation] load data2 nntwarn off XX=premnmx(XX); YY=premnmx(YY); P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 for i=1:S, x(i)=sol(i);

遗传算法基本原理及改进

遗传算法基本原理及改进 编码方法: 1、二进制编码方法 2、格雷码编码方法 3、浮点数编码方法。个体长度等于决策变量长度 4、多参数级联编码。一般常见的优化问题中往往含有多个决策变量,对这种还有多个变量的个体进行编码的方法就成为多参数编码方法。多参数编码的一种最常用和最基本的方法是:将各个参数分别以某种方式进行编码,然后再将它们的编码按照一定顺序连接在一起就组成了标识全部参数的个体编码。 5、多参数交叉编码:思想是将各个参数中起主要作用的码位集中在一起,这样他们就不易于被遗传算子破坏掉。在进行多参数交叉编码时,可先对各个参数进行编码;然后去各个参数编码串的最高位连接在一起,以他们作为个体编码串前N位编码,同上依次排列之。

改进遗传算法的方法: (1)改进遗传算法的组成成分或实用技术,如选用优化控制参数、适合问题的编码技术等。 (2)采用动态自适应技术,在进化过程中调整算法控制参数和编码精度。 (3)采用混合遗传算法 (4)采用并行算法 (5)采用非标准的遗传操作算子 改进的遗传算法: (1)分层遗传算法 (2)CHC算法 (3)messy遗传算法; (4)自实用遗传算法(Adaptive Genetic Algorithm) (5)基于小生境技术的遗传算法(Niched Genetic Algorithm,简称NGA)。 (6)并行遗传算法(Parallel Genetic Algorithm) (7)混合遗传算法:遗传算法与最速下降法相结合的混合遗传算法;遗传算法与模拟退火算法相结合的混合遗传算法。 解决标准遗传算法早熟收敛和后期搜索迟钝的方案 (1)变异和交叉算子的改进和协调采用 将进化过程划分为渐进和突变两个不同阶段 采用动态变异 运用正交设计或均匀设计方法设计新的交叉和变异算子 (2)采用局部搜索算法解决局部搜索能力差的问题 (3)采用有条件的替代父代的方法,解决单一的群体更新方式难以兼顾多样性和收敛性的问题 (4)收敛速度慢的解决方法; 产生好的初始群体 利用小生境技术 使用移民技术 采用自适应算子 采用与局部搜索算法相结合的混合遗传算法 对算法的参数编码采用动态模糊控制 进行未成熟收敛判断

遗传算法及优化问题重要有代码

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

由于遗传算法是由进化论和遗传学机理而产生的直接搜索优化方法;故而在这个算法中要用到各种进化和遗传学的概念. 首先给出遗传学概念、遗传算法概念和相应的数学概念三者之间的对应关系.这些概念如下:

(2)遗传算法的步骤 遗传算法计算优化的操作过程就如同生物学上生物遗传进化的过程,主要有三个基本操作(或称为算子):选择(Selection)、交叉(Crossover)、变异(Mutation). 遗传算法基本步骤主要是:先把问题的解表示成“染色体”,在算法中也就是以二进制

用遗传算法优化BP神经网络的Matlab编程实例

用遗传算法优化BP神经网络的M a t l a b编程实例 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- %??GABPNET.m %??使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=premnmx(XX); YY=premnmx(YY); %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin' },'trainlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数 %下面调用gaot工具箱,其中目标函数定义为gabpEval [x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,... ??'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMuta tion',[2 gen 3]); %绘收敛曲线图 figure(1) plot(trace(:,1),1./trace(:,3),'r-'); hold on plot(trace(:,1),1./trace(:,2),'b-'); xlabel('Generation'); ylabel('Sum-Squared Error'); figure(2) plot(trace(:,1),trace(:,3),'r-'); hold on plot(trace(:,1),trace(:,2),'b-'); xlabel('Generation'); ylabel('Fittness'); %下面将初步得到的权值矩阵赋给尚未开始训练的BP 网络 [W1,B1,W2,B2,P,T,A1,A2,SE,val]=gadecod(x); net.LW{2,1}=W1; net.LW{3,2}=W2; net.b{2,1}=B1; net.b{3,1}=B2; XX=P; YY=T; %设置训练参数 %训练网络 net=train(net,XX,YY); 程序二:适应值函数 function [sol, val] = gabpEval(sol,options) % val - the fittness of this individual % sol - the individual, returned to allow for Lamarckian evolution % options - [current_generation] load data2 nntwarn off XX=premnmx(XX); YY=premnmx(YY); P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 for i=1:S, ? ?x(i)=sol(i); end; [W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x); 程序三:编解码函数 function [W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x) load data2

遗传算法求解y=x2 - 副本

初始遗传算法及一个简单的例子 遗传算法(Genetic Algorithms, GA)是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。它模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。 下面我以一个实例来详细表述遗传算法的过程 例:求下述二元函数的最大值: 2 =] y x x∈ ,0[ 31 1、编码: 用遗传算法求解问题时,不是对所求解问题的实际决策变量直接进行操作,而是对表示可行解的个体编码的操作,不断搜索出适应度较高的个体,并在群体中增加其数量,最终寻找到问题的最优解或近似最优解。因此,必须建立问题的可行解的实际表示和遗传算法的染色体位串结构之间的联系。在遗传算法中,把一个问题的可行解从其解空间转换到遗传算法所能处理的搜索空间的转换方法称之为编码。反之,个体从搜索空间的基因型变换到解空间的表现型的方法称之为解码方法。 编码是应用遗传算法是需要解决的首要问题,也是一个关键步骤。迄今为止人们已经设计出了许多种不同的编码方法。基本遗传算法使用的是二进制符号0和1所组成的二进制符号集{0,1},也就是说,把问题空间的参数表示为基于字符集{0,1}构成的染色体位串。每个个体的染色体中所包含的数字的个数L 称为染色体的长度或称为符号串的长度。一般染色体的长度L为一固定的数,如本例的编码为 s1 = 1 0 0 1 0 (17) s2 = 1 1 1 1 0 (30) s3 = 1 0 1 0 1 (21) s4 = 0 0 1 0 0 (4) 表示四个个体,该个体的染色体长度L=5。 2、个体适应度函数 在遗传算法中,根据个体适应度的大小来确定该个体在选择操作中被选定的概率。个体的适应度越大,该个体被遗传到下一代的概率也越大;反之,个体的适应度越小,该个体被遗传到下一代的概率也越小。基本遗传算法使用比例选择操作方法来确定群体中各个个体是否有可能遗传到下一代群体中。为了正确计算不同情况下各个个体的选择概率,要求所有个体的适应度必须为正数或为零,不能是负数。这样,根据不同种类的问题,必须预先确定好由目标函数值到个体适应度之间的转换规则,特别是要预先确定好目标函数值为负数时的处理方法。

典型优化问题的遗传算法求解—8选址分配问题

典型问题 选址-分配问题 (Location Allocation Problem) 东北大学系统工程研究所 2014.09

选址-分配问题 ● 选址-分配(location-allocation) 问题 也称作多韦伯(multi-Weber ) 问题或P 中位(P-median )问题。 ● 单韦伯(single Weber)问题 在欧几里德空间上典型的单韦伯(single Weber) 问题是寻找一个位置,使从代表顾客位置的一些固定点到它的距离和最小。 ● 问题描述: 有m 个“设施”需要选址,n 个已知位置的“顾客”分配给不同的设施,每个顾客的需求为b j ,j =1,2,…,n ;每个设施具有的能力为a i ,i =1,2,…,m 我们需要找到 设施的位置(选址) 顾客对设施的分配 使顾客和服务他们的设施间的距离总和最小。

图形描述 m : 设施总数n : 顾客总数 F i : 第i 个设施,i =1,2,…,m C j : 第j 个顾客,j =1,2,…,n a i : 第i 个设施的能力b j : 第j 个顾客的需求 F i =(x i , y i ):设备i 的未知位置,决策变量C j =(u j , v j ):顾客j 的已知位置 C 3 C 1C n C 2 F 1F m (x 1, y 1) (u 1, v 1)b 1 a 1 (x m , y m ) (u n , v n )b n a m …

数学模型 n j m i z n j z z g m i a z b z g z C F t z F f ij m i ij j m i ij n j j i ij m i n j j i ,,2,1,,,2,11, or 0 ,,2,1,1)(,,2,1,)( t.s. ),(),( min 1 1 11 =======≤=?=∑∑∑∑=+== = C j F i (x i , y i ) b j a i (u j , v j ) …… 2 2) ()(),(j i j i j i v y u x C F t -+-=? 变量: z ij : 0-1 决策变量 z ij =1,顾客j 由设施i 服务;否则z ij =0F i = (x i , y i ) :设施i 的未知位置,决策变量 ? 参数: t (F i ,C j ): 由设施 i 到顾客j 的欧几里得距离。 保证不超过每个 设施的服务能力 保证每个顾客只由一个设施服务

基于遗传算法的TSP问题解决

基于遗传算法的TSP问题解决 —余小欢B07330230 概述:TSP问题是一个经典的运筹学的组合优化问题,针对此问题,研究人员提出了个中各样的算法,主要有贪婪算法,遗传算法,混沌搜索算法等。在本文中分别用贪婪算法和遗传算法去解决30个城市的最短路径问题,并把两者得到了最优解进行比较,发现用遗传算法解决TSP问题非常具有优越性,同时在文章的最后提出了对此遗传算法进行改进的方向。 1.贪婪算法 x=[18 87 74 71 25 58 4 13 18 24 71 64 68 83 58 54 51 37 41 2 7 22 25 62 87 91 83 41 45 44]; y=[54 76 78 71 38 35 50 40 40 40 42 44 60 58 69 69 62 67 84 94 99 64 60 62 32 7 38 46 26 21 35]; a=zeros(30,30); for i=1:30 for j=1:30 a(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2); %求取距离矩阵的值end a(i,i)=1000; %主对角线上的元素置为1000作为惩罚 end b=0; c=zeros(30); for j=1:30 [m,n]=min(a(:,j)); b=b+m; %得到的b值即为贪婪最佳路径的总距离 a(n,:)=1000; %已经选择的最小值对应的行的所有值置为1000作为惩罚 c(j)=n; end x1=zeros(30); y1=zeros(30); for t=1:30

x1(t)=x(c(t)); y1(t)=y(c(t)); end plot(x1,y1,'-or'); xlabel('X axis'), ylabel('Y axis'), title('ì°à·?·??'); axis([0,1,0,1]); axis([0,100,0,100]); axis on 用贪婪算法得出的最佳路径走遍30个城市所走的路程为449.3845km 其具体的路径图如下: 2.遗传算法 1主函数部分 clc; clear all;

改进的混沌遗传算法

改进的混沌遗传算法 李辉 (计算机学院2004级研究生 04720746) 摘要:混沌遗传算法(chaos genetic algorithm, CGA)是基于混沌优化的遗传操作,将使子代个体均匀地分布于定义空间,从而可避免早熟,以较大的概率实现全局最优搜索.与传统的遗传算法相比较, CGA 的在线和离线性能都有较大的改进。而遗传算法作为一种智能算法,是解决非线性复杂优化问题的有利工具,但它在搜索过程中易陷入局部最优,收敛速度慢的缺陷又限制了它的寻优效能。混沌遗传算法具有两者的优点,大大提高了优化的效率。 关键词:遗传算法混沌混沌优化 Abstract:Chaos genetic algorithm (CGA)is a genetic operation,which based on chaos optimization,makes the individuals of subgeneration distribute uniformly in the defined space and avoids the premature of subgeneration.To compare the performances of the CGA with those of the traditional GA,The results demonstrated that the CGA’s on-line and off–line performance was all superior to that of the traditional GA.As an inteliengence algorithm,GA is a effectual toos to resolve the problem of the liner-optimization,but the slower convergence and the premature restrict its efficiency.And CGA which has the two strongpoint has promoted is efficiency in optimization. Key words: genetic algorithm chaos chaos optimization 1 引言: 遗传算法(GA)最早由美国Michigan大学的John Holland教授提出,通过模拟自然界中的生命进化过程,有指导地而不是盲目地进行随机搜索,适用于在人工系统中解决复杂特定目标的非线性反演问题。De Jong首先将遗传算法应用于函数优化问题的研究,他的工作表明在求解数学规划时,GA是一种有效的方法。但对于大型复杂系统,尤其是非线性系统优化问题的求解,GA仍有许多缺陷,如无法保证收敛到全局最优解,群体中最好的染色体的丢失,进化过程的过早收敛等。 混沌是自然界中一种较为普遍的现象,具有“随机性”、“遍历性”及“规律性”等特点,在一定范围内能按其自身的“规律”不重复地遍历所有状态的。在搜索空间小时混沌优化方法效果显著,但搜索空间大时几乎无能为力。 混沌遗传算法(CGA)的基本思想是将混沌状态引入到优化变量中,并把混沌运动的遍历范围“放大”到优化变量的取值范围,然后把得到的混沌变量进行编码,进行遗传算子操作。再给混沌变量附加—混沌小扰动,通过一代代地不断进化,最后收敛到一个最适合环境的个体上,求得问题的最优解。 2 传统遗传算法 传统遗传算法: population old_pop,new_pop;/*current and next population*/ int pop_size,generation; float p_cross,p_mutation; /*prob. Of crossover & mutation*/ 1 old_pop=initial random population={ind1,ind2,….indpopsize} 2 while(generation

相关主题