1、遗传算法,原理、编程和应用李通化,一、引言二、基本思想三、两种编码的方法四、遗传算法程序五、遗传算法应用六、作业七、结语,一、引言,1、起源 遗传算法(Genetic Algorithms) 自然选择和进化 为什么? 解析的数学方法 适应系统 Artifical neuron networks Simulated annealing Genetic algorithms,2、优化方法,生物是地球环境中的最优解!优化方法: 1)枚举法 2)启发式算法 3)搜索算法 遗传算法模拟生物在自然环境中的遗传和进化,是一种自适应全局优化概率搜索算法。,优化方法体系,3、遗传算法的发展,1960 Holla
2、nd 1970 De Jong 1980 Goldberg 1990 Koza Genetic Programming目前,称为进化程序(Evolution Programs)有许多不同的变化,但基本思路是一样的。,4、遗传算法的特点 平行性 广泛搜索和局部精化结合 不需要过程的知识 解题范围广,容易编程 没有初值问题 容易理解,5、Magic Square 没有现成公式 只能尝试 GA最合适 用9个元素的数组 只用交换操作 解 in seconds,二、基本思想,1、遗传算法的具体思路 进化程序(Evolution Programs)特点: 借用遗传学的词汇 薄弱的理论基础,2、进化过程的模
3、拟 生物进化 遗传算法 群体 Population 基因 bits 染色体 Chromosome 选择或复制 Selection 交配 Crossover 突变 Mutation 适应 Fitness,3、解的表达 Individual=解(数字或文字) chromosome a set of bits,Chromosomes could be:Bit strings (0101 . 1100)Real numbers (43.2 -33.1 . 0.0 89.2) Permutations of element (E11 E3 E7 . E1 E15)Lists of rules (R1 R
4、2 R3 . R22 R23)Program elements (genetic programming). any data structure .,4、过程,initialize population;evaluate population;while TerminationCriteriaNotSatisfiedselect parents for reproduction;perform recombination and mutation;evaluate population;,Hill climber,Exploitationexploration优化,自然过程高度理想化的模拟遗
5、传算子,三、两种编码的方法,1、两种方法 经典遗传算法 二进制,改造问题 自然表达算法 十进制,改造遗传操作,2、二进制编码 bits- string 00110010111111 遗传操作:crossover, mutation,Crossover,P1 (0 1 1 0 1 0 0 0) (0 1 0 0 1 0 0 0) C1P2 (1 1 0 1 1 0 1 0) (1 1 1 1 1 0 1 0) C2Crossover is a critical feature of geneticalgorithms:It greatly accelerates search early in
6、evolution of a populationIt leads to effective combination of schemata (subsolutions on different chromosomes),Mutation,Before: (1 0 1 1 0 1 1 0)After: (0 1 1 0 0 1 1 0),3、十进制编码 用实数 a) 位操作 b) 实数操作,四、遗传算法程序,1、举例 y x1 x26.08 10.0 5.02.42 20.0 5.02.10 30.0 5.07.31 10.0 5.53.00 20.0 5.53.13 30.0 5.57.06
7、 10.0 6.03.72 20.0 6.03.37 30.0 6.0 y = ax12 +bx22 +cx1x2 +dx1 +ex2+ f,2、定义#definePOPULATION50#defineCHROMOSOME6#define SAMPLE 9#define REALS 9.0typedefstructdoublechrom CHROMOSOME;doubleevalu; Individual;,Individualpopul POPULATION;doublescale;Int best, worst;double ySAMPLE;double x1SAMPLE, x2SAMPL
8、E;double varSAMPLECHROMOSOME;,3、函数voidNGA (void);voidInitNGA (void);voidCrossover (void);voidMutation (void);void Memory (void);voidSort (void);voidEvalu (Individual *);,4、预处理 变量中心化 x* = xi / n x = x x* y* = yi / n y = y y*,vari0=x1i*x1i; vari1=x2i*x2i; vari2=x1i*x2i; vari3=x1i; vari4=x2i; vari5=1.0
9、;,5、初始化scale = 1.0;for (i=0; iPOPULATION; i+)for (j=0; jevalu=temp1;,7、排序void Sort ()int i;best = worst = 0;for (i=1; i populworst.evalu)worst = i;,8、Crossovervoid Crossover ()doi = random (POPULATION);j = random (POPULATION);while (i = j);for (k=0; kCHROMOSOME; k+)offspring.chromk=populi.chromk;k =
10、 random (CHROMOSOME);,offspring.chromk += populj.chromk;offspring.chromk /= 2; /*变化*/Evalu (,9、Mutationvoid Mutation ()doi = random (POPULATION);j = random (POPULATION);while (i = j);for (k=0; kCHROMOSOME; k+)offspring.chromk=populi.chromk;k = random (CHROMOSOME);offspring.chromk *= 1+scale*(2*(doub
11、le)(rand()/RAND_MAX-1);,Evalu (,10、加速void Memory (),11、主控制prev = populbest.evalu;while (ch=kbhit()?getch():0)!=033),for (i=0; i10; i+)Crossover (); Mutation(); Mutation(); Memory();if (populbest.evalu = prev)count +;elseprev = populbest.evalu;count = 0;,12、控制参数 群体大小 初始化范围 Crossover概率 Mutation概率 Memo
12、ry步长 Scale 结束条件 其它附加控制,五、遗传算法应用,函数优化数值解组合优化人工生命机器人学习图形处理,化学领域: 1)选择和组合 波长选择,变量选择等,但对于选择规模小的体系,不适合运用。 2)非线性问题 离子平衡,浓度平衡等。 3)优化问题 实验设计,系统模拟等。 4)其他问题 没有现成方法。,六、作业,色谱保留时间与色谱条件的关系y x1 x26.08 10.0 5.02.42 20.0 5.02.10 30.0 5.07.31 10.0 5.53.00 20.0 5.53.13 30.0 5.57.06 10.0 6.03.72 20.0 6.03.37 30.0 6.0 y = ax12 +bx22 +cx1x2 +dx1 +ex2+ f误差=0.2305,七、结语,遗传算法是十分有效的计算方法,可以解决各种类型的问题。 研究的重点将在于运用.,