遗传算法
文章平均质量分 95
介绍遗传算法原理、变体及实现。
盼小辉丶
记录学习历程,分享学习心得,关注深度学习,欢迎交流学习.
展开
-
遗传算法(Genetic Algorithm)详解与实现
在遗传算法 (Genetic Algorithms, GA) 中,使用选择、交叉、突变和适应度来模拟生物减数分裂或繁殖的基本操作。适应度是衡量个体优劣的指标,可以用于量化模拟个体成功解决给定问题的能力。通过修改遗传算法超参数,如种群大小、世代数、交叉率和突变率等超参数,能够调整和修改进化进程。在本节中,我们介绍了遗传算法基本概念及算法流程,并使用 Python 实现遗传算法解决 OneMax 问题。原创 2024-08-13 09:46:33 · 1797 阅读 · 52 评论 -
新颖性搜索(Novelty Search,NS)算法详解与实现
大多数机器学习方法(包括进化算法)都基于目标函数的优化进行训练。个体性能的度量标准由适应度函数定义,适应度函数是生物体适应其环境的进化压力,适应度最高的个体更适合其环境,并且最适合于寻找解决方案。而新颖性搜索没有定义特定的适应度函数或将其用于解决方案搜索;相反,每个发现的解决方案的新颖性都会在神经进化过程中得到直接奖励。因此,所发现的解决方案的新颖性将神经进化引导至最终目标。这种方法可以独立于适应度压力来利用进化的创造力。详细介绍新颖性搜索,并通过解决迷宫导航问题来实践新颖性搜索算法。原创 2021-04-24 21:46:33 · 3305 阅读 · 5 评论 -
新颖性搜索(Novelty Search,NS)算法实践——利用NS算法解决迷宫导航问题
大多数机器学习方法(包括进化算法)都基于目标函数的优化进行训练。个体性能的度量标准由适应度函数定义,适应度函数是生物体适应其环境的进化压力,适应度最高的个体更适合其环境,并且最适合于寻找解决方案。而新颖性搜索没有定义特定的适应度函数或将其用于解决方案搜索;相反,每个发现的解决方案的新颖性都会在神经进化过程中得到直接奖励。因此,所发现的解决方案的新颖性将神经进化引导至最终目标。这种方法可以独立于适应度压力来利用进化的创造力。详细介绍新颖性搜索,并通过解决迷宫导航问题来实践新颖性搜索算法。原创 2021-04-24 21:44:37 · 7953 阅读 · 3 评论 -
神经进化算法——利用NEAT算法解决迷宫导航问题(基于NEAT-Python)
迷宫导航问题是经典的计算机问题,与创建可以在模糊环境中找到路径的自主导航智能体密切相关。迷宫环境中,面向目标的适应度函数在迷宫中接近最终目标点的死角中可以具有较大的适应度得分梯度。迷宫的这些区域成为基于目标搜索算法的局部最优解,这些目标算法可能会收敛于这些区域。利用神经进化算法NEAT来解决迷宫导航问题。基于NEAT-python利用NEAT算法得到最终的人工神经网络来控制智能体的速度和角速度,最终到达迷宫的出口点。原创 2021-04-24 15:26:11 · 8485 阅读 · 3 评论 -
Ubuntu18.04系统中python3.7安装MultiNEAT库
学习新奇搜索等进化神经算法时,需要用到MultiNEAT库,MultiNEAT支持标准的NEAT算法和两个关键的扩展:HyperNEAT和ES-HyperNEAT。另外,MultiNEAT库提供新奇搜索方法的实现。该库使用C ++编程语言编写,但提供了全面的Python接口,介绍了MultiNEAT库的安装过程,同时针对安装过程中遇到的问题和解决方法进行详细介绍。原创 2021-04-22 20:35:17 · 562 阅读 · 6 评论 -
NEAT(NeuroEvolution of Augmenting Topologies)算法详解与实践(基于NEAT-Python)
NEAT(NeuroEvolution of Augmenting Topologies, 增强拓扑的神经进化)属于神经进化算法家族,能够对神经网络的拓扑结构和连接权重进行进化。其用于进化复杂人工神经网络(Artificial neural networks, ANN),旨在通过在进化过程中逐步完善ANN的结构来减少参数搜索空间的维数。进化过程始于一群简单的基因组,并随着世代的发展逐渐增加其复杂性。本文详细介绍了NEAT算法的基本原理,并基于NEAT-python完成XOR实验来验证NEAT算法的有效性。原创 2021-04-12 19:34:23 · 9810 阅读 · 3 评论 -
深度学习与遗传算法的碰撞——利用遗传算法优化深度学习网络结构(详解与实现)
近年来,深度学习模型性能取得了飞跃,可以在单个网络中使用大量隐藏层。训练深度学习模型可能会占用大量计算资源,并且通常在图形处理单元(GPU)上进行,同时为了获得最优的模型性能,可能需要网络架构和超参数的反复修改和调整,通常此过程取决于实际问题和网络架构设计人员的经验,而利用遗传算法可以将此过程自动化,同时可以在可接受的时间开销内找到更好的网络架构。本文使用MNIST数据集和Tensorflow构建简单的全连接网络,利用遗传算法优化隐藏层数和每层的节点数,使用的原理同样适用于更复杂的网络和数据集。原创 2021-01-06 15:58:17 · 5943 阅读 · 15 评论 -
使用遗传算法解决图着色问题
在图论中,图是对象的结构化集合,用于表示对象对之间的关系。对象在图中表示为顶点(或节点),而一对对象之间的关系使用边表示。图是非常有用的对象,因为它们可以用于表示大量的现实生活中的结构、模式和关系,例如社交网络,电网布局,网站结构,计算机网络,原子结构等等。图着色任务可以简单概括为:为图中的每个节点分配一种颜色,并保证相连接的节点对不会使用相同的颜色,同时,我们希望使用尽可能少的颜色。使用遗传算法解决图着色问题。原创 2021-01-04 11:05:09 · 15493 阅读 · 54 评论 -
使用遗传算法解决N皇后问题
经典的N皇后问题最初被称为八皇后拼图,起源于国际象棋。任务是将八名皇后放置在棋盘上,而且他们中的任何两个都不互相构成威胁。换句话说,没有两个皇后可以在同一行、同一列或同一对角线。概括而言,N皇后问题使用N×N的棋盘和N(其中N>3)个皇后。原创 2021-01-02 22:15:05 · 4972 阅读 · 2 评论 -
遗传算法框架deap简介与使用
deap(Distributed Evolutionary Algorithms in Python)是用于创建遗传算法实现的python库,框架支持使用遗传算法以及其他进化计算技术快速开发解决方案。DEAP提供了各种数据结构和工具,这些数据结构和工具在实现各种基于遗传算法的解决方案时必不可少。原创 2020-12-26 10:35:35 · 9321 阅读 · 4 评论 -
遗传算法中常见遗传算子
将选择,交叉和突变遗传算子应用到种群中,就产生了新一代,该新一代基于当前代中较好的个体。选择(selection)操作负责当前种群中选择有优势的个体。交叉(crossover,或重组,recombination)操作从选定的个体创建后代。这通常是通过两个被选定的个体互换他们染色体的一部分以创建代表后代的两个新染色体来完成的。变异(mutation)操作可以将每个新创建个体的一个或多个染色体值(基因)随机进行变化。原创 2020-12-25 21:06:42 · 29580 阅读 · 12 评论 -
遗传算法实践详解(deap框架初体验)
遗传算法实践,利用遗传算法框架deap解决OneMax问题,OneMax(或One-Max)问题是一个简单的优化任务,通常用作遗传算法框架的Hello World。原创 2020-12-25 11:53:46 · 17104 阅读 · 10 评论