理论教育 遗传算法概述及MATLAB程序设计

遗传算法概述及MATLAB程序设计

时间:2023-11-17 理论教育 版权反馈
【摘要】:遗传算法是1960年由Holland提出来的,其最初的目的是研究自然系统的自适应行为并设计具有自适应功能的软件系统。对于这类复杂的问题,人们已经意识到应把主要精力放在寻求满意解上,而遗传算法是寻求这种满意解的最佳工具之一。实践证明,遗传算法对于组合优化中的NP问题非常有效。例如,遗传算法已经在求解旅行商问题、背包问题、装箱问题和图形划分问题等方面得到成功的应用。

遗传算法概述及MATLAB程序设计

遗传算法是1960年由Holland提出来的,其最初的目的是研究自然系统的自适应行为并设计具有自适应功能的软件系统。它的特点是对参数进行编码运算时,不需要有关体系的任何先验知识,沿多种路线进行平行搜索时,不会落入局部较优的陷阱。

遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。

每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始就需要实现从表现型到基因型的映射,即编码工作。

由于仿照基因编码的工作很复杂,往往需要进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化出越来越好的近似解。

在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。

这个过程将导致种群像自然进化一样的后生代种群比前代更加适应环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。

由于遗传算法的整体搜索策略和优化搜索方法在计算时不依赖于梯度信息或其他辅助知识,而只需要影响搜索方向的目标函数和相应的适应度函数,所以遗传算法提供了一种求解复杂系统问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于许多科学。(www.daowen.com)

遗传算法主要应用于以下两个领域:

1.函数优化

函数优化是遗传算法的经典应用领域,也是遗传算法进行性能评价的常用算例,许多人构造出了各种各样复杂形式的测试函数:连续函数和离散函数、凸函数和凹函数、低维函数和高维函数、单峰函数和多峰函数等。对于一些非线性、多模型、多目标的函数优化问题,用其他优化方法较难求解,而遗传算法可以方便地得到较好的结果。

2.组合优化

随着问题规模的增加,组合优化问题的搜索空间也急剧增大,有时用目前计算的枚举法很难求出最优解。对于这类复杂的问题,人们已经意识到应把主要精力放在寻求满意解上,而遗传算法是寻求这种满意解的最佳工具之一。实践证明,遗传算法对于组合优化中的NP问题非常有效。例如,遗传算法已经在求解旅行商问题、背包问题、装箱问题和图形划分问题等方面得到成功的应用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈