遗传算法

✍ dations ◷ 2025-07-01 09:49:25 #遗传算法
遗传算法(英语:genetic algorithm (GA) )是计算数学中用于解决最优化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。遗传算法通常实现方式为一种计算机模拟。对于一个最优化问题,一定数量的候选解(称为个体)可抽象表示为染色体,使种群向更好的解进化。传统上,解用二进制表示(即0和1的串),但也可以用其他表示方法。进化从完全随机个体的种群开始,之后一代一代发生。在每一代中评价整个种群的适应度,从当前种群中随机地选择多个个体(基于它们的适应度),通过自然选择和突变产生新的生命种群,该种群在算法的下一次迭代中成为当前种群。在遗传算法里,优化问题的解被称为个体,它表示为一个变量序列,叫做染色体或者基因串。染色体一般被表达为简单的字符串或数字符串,不过也有其他的依赖于特殊问题的表示方法适用,这一过程称为编码。首先,算法随机生成一定数量的个体,有时候操作者也可以干预这个随机产生过程,以提高初始种群的质量。在每一代中,都会评价每一个体,并通过计算适应度函数得到适应度数值。按照适应度排序种群个体,适应度高的在前面。这里的“高”是相对于初始的种群的低适应度而言。下一步是产生下一代个体并组成种群。这个过程是通过选择和繁殖完成,其中繁殖包括交配(crossover,在算法研究领域中我们称之为交叉操作)和突变(mutation)。选择则是根据新个体的适应度进行,但同时不意味着完全以适应度高低为导向,因为单纯选择适应度高的个体将可能导致算法快速收敛到局部最优解而非全局最优解,我们称之为早熟。作为折中,遗传算法依据原则:适应度越高,被选择的机会越高,而适应度低的,被选择的机会就低。初始的数据可以通过这样的选择过程组成一个相对优化的群体。之后,被选择的个体进入交配过程。一般的遗传算法都有一个交配概率(又称为交叉概率),范围一般是0.6~1,这个交配概率反映两个被选中的个体进行交配的概率。例如,交配概率为0.8,则80%的“夫妻”会生育后代。每两个个体通过交配产生两个新个体,代替原来的“老”个体,而不交配的个体则保持不变。交配父母的染色体相互交换,从而产生两个新的染色体,第一个个体前半段是父亲的染色体,后半段是母亲的,第二个个体则正好相反。不过这里的半段并不是真正的一半,这个位置叫做交配点,也是随机产生的,可以是染色体的任意位置。再下一步是突变,通过突变产生新的“子”个体。一般遗传算法都有一个固定的突变常数(又称为变异概率),通常是0.1或者更小,这代表变异发生的概率。根据这个概率,新个体的染色体随机的突变,通常就是改变染色体的一个字节(0变到1,或者1变到0)。经过这一系列的过程(选择、交配和突变),产生的新一代个体不同于初始的一代,并一代一代向增加整体适应度的方向发展,因为总是更常选择最好的个体产生下一代,而适应度低的个体逐渐被淘汰掉。这样的过程不断的重复:评价每个个体,计算适应度,两两交配,然后突变,产生第三代。周而复始,直到终止条件满足为止。一般终止条件有以下几种:遗传算法在解决优化问题过程中有如下特点:最简单的遗传算法将染色体表示为一个数字串,数值变量也可以表示成整数,或者实数(浮点数)。算法中的杂交和突变都是在字节串上进行的,所以所谓的整数或者实数表示也一定要转化为数字形式。例如一个变量的形式是实数,其范围是0~1,而要求的精度是0.001,那么可以用10个数字表示:0000000000表示0,1111111111表示1。那么0110001110就代表0.398。在遗传算法里,精英选择是一种非常成功的产生新个体的策略,它是把最好的若干个个体作为精英直接带入下一代个体中,而不经过任何改变。通过并行计算实现遗传算法一般有两种,一种是所谓粗糙并行遗传算法,即一个计算单元包含一个种群;而另一种是所谓精细并行遗传算法,每一个计算单元处理一个染色体个体。遗传算法有时候还引入其他变量,例如在实时优化问题中,可以在适应度函数中引入时间相关性和干扰。遗传算法擅长解决的问题是全局最优化问题,例如,解决时间表安排问题就是它的一个特长,很多安排时间表的软件都使用遗传算法,遗传算法还经常被用于解决实际工程问题。跟传统的爬山算法相比,遗传算法能够跳出局部最优而找到全局最优点。而且遗传算法允许使用非常复杂的适应度函数(或者叫做目标函数),并对变量的变化范围可以加以限制。而如果是传统的爬山算法,对变量范围进行限制意味着复杂的多的解决过程,这方面的介绍可以参看受限优化问题和非受限优化问题。遗传算法由密歇根大学的约翰·霍兰德和他的同事于二十世纪六十年代在对细胞自动机(英文:cellular automata)进行研究时率先提出。在二十世纪八十年代中期之前,对于遗传算法的研究还仅仅限于理论方面,直到在匹兹堡召开了第一届世界遗传算法大会。随着计算机计算能力的发展和实际应用需求的增多,遗传算法逐渐进入实际应用阶段。1989年,纽约时报作者约翰·马科夫写了一篇文章描述第一个商业用途的遗传算法--进化者(英文:Evolver)。之后,越来越多种类的遗传算法出现并被用于许多领域中,财富杂志500强企业中大多数都用它进行时间表安排、数据分析、未来趋势预测、预算、以及解决很多其他组合优化问题。遗传程序是John Koza与遗传算法相关的一个技术,在遗传程序中,并不是参数优化,而是计算机程序优化。遗传程序一般采用树型结构表示计算机程序用于进化,而不是遗传算法中的列表或者数组。一般来说,遗传程序比遗传算法慢,但同时也可以解决一些遗传算法解决不了的问题。交互式遗传算法是利用人工评价进行操作的遗传算法,一般用于适应度函数无法得到的情况,例如,对于图像、音乐、艺术的设计和“优化”,或者对运动员的训练等。模拟退火是解决全局优化问题的另一个可能选择。它是通过一个解在搜索空间的随机变动寻找最优点的方法:如果某一阶段的随机变动增加适应度,则总是被接受,而降低适应度的随机变动根据一定的概率被有选择的接受。这个概率由当时的退火温度和适应度恶化的程度决定,而退火温度按一定速度降低。从模拟退火算法看,最优化问题的解是通过寻找最小能量点找到的,而不是寻找最佳适应点找到的。模拟退火也可以用于标准遗传算法里,只要把突变率随时间逐渐降低就可以了。

相关

  • H2受体阻抗剂H2受体阻抗剂(英语:H2 antagonist)是一系列用于阻断组织胺作用于胃壁细胞、减少壁细胞分泌胃酸的药物。H2受体阻抗剂用于治疗消化不良,但现在已经有效果更好的氢离子泵阻断剂。
  • 临床测试临床试验(英语:Clinical trial)是一种根据研究方案利用已上市药物或安慰剂作为对照组的方式,对药物或其他医学治疗在受试者身上进行比较测试的过程。在临床试验中,研究者要先决定
  • 吞噬吞噬作用(英语:phagocytosis,来自古希腊语φαγεῖν)亦称吞食、噬菌作用,是吞噬细胞和原生动物通过细胞膜从周围环境摄取固体颗粒,并在其内部形成吞噬体的过程。吞噬作用是细胞
  • 原子核原子核(德语:Atomkern,英语:Atomic nucleus)是原子的组成部分,位于原子的中央,占有原子的大部分质量。组成原子核的有中子和质子。当周围有和其中质子等量的电子围绕时,构成的是原子
  • 图形用户界面图形用户界面(英语:Graphical User Interface,缩写:GUI)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受,
  • 人类腿部,或称人腿,一般指的是人体的整个下肢部分,包括足部、大腿甚至髋关节等。然而,人体解剖一般谈及“人腿”时,指的只是从膝盖到脚踝的这一段下肢,也称“小腿”。腿部在站立以
  • 芬兰芬兰国家图书馆(芬兰语:Kansalliskirjasto,瑞典语:Nationalbiblioteket)建于1640年,1827年由原址图尔库迁至赫尔辛基。该馆是芬兰重要的研究图书馆,亦是芬兰历史最悠久和规模最大的
  • 地球化学地球化学是使用化学原理和工具来解释主要地质系统,如地壳及其海洋背后机制的科学。地球化学领域扩展到了地球以外,涵盖整个太阳系,并且对于一些过程的理解做出了重要贡献,包括地
  • 艾德温·史密斯纸草文稿《艾德温·史密斯纸草文稿》(Edwin Smith Papyrus)是约于公元前1600-1700年间完成的医学论文集:70,也是人类史上第一部关于创伤的外科医学著作,由莎草纸写成,长约5米(因为损毁只剩
  • 胞嘧啶胞嘧啶(英语:cytosine, C),学名为2-羰基-4-氨基嘧啶,是组成DNA的四种基本碱基之一。胞嘧啶核苷、胞嘧啶核苷酸均可作为升高白细胞(白血球)的药物。可由二巯基脲嘧啶、浓氨水和氯乙