下一页 上一页 目录

4. 进化计算

进化计算实际上是一个广泛的术语,涵盖了大量的编程技术,包括遗传算法、复杂自适应系统、进化程序设计等等。所有这些技术的主要推动力是进化的思想。即编写一个程序,使其能够进化以实现某个目标。这个目标可以是任何事情,从解决一些工程问题到赢得一场游戏。

4.1 EC 类/代码库

这些是用于进化计算领域编程的代码或类库。它们并非旨在作为独立的应用程序,而是作为构建您自己的应用程序的工具。

ANNEvolve

一系列使用进化的神经网络来解决一系列问题的程序集合。该项目的长期目标是提高我们对模拟进化作为配置和优化人工神经网络 (ANN) 手段的理解水平。中期目标是将我们的方法应用于一系列有趣的问题,例如帆船驾驶和玩 NIM 游戏。

第二个目标本质上是教育性的。我们尝试编写我们的软件时进行充分的解释,不仅是为了用户,也是为了想要了解最内在细节的工程师/程序员/科学家。所有源代码都免费提供给任何人无限制使用。

所有 ANNEvolve 软件均以 C 和 Python 实现。

EAP

EAP 是使用 Python 和 UNIX 编程理念构建的,旨在为实现您最喜欢的进化算法提供透明、简单和连贯的环境。即使对于那些不太了解 Python 编程语言的人来说,EAP 也非常易于使用。EAP 使用 Python 提供的面向对象范例,使开发变得简单而美观。它还包含 15 个说明性和多样化的示例,以帮助新手快速上手使用此环境。

它包括使用任何可想象的表示的遗传算法、使用强类型和弱类型树以及自动定义函数的遗传编程、进化策略(包括协方差矩阵自适应)、多目标优化技术(NSGA-II 和 SPEA2)、算法的轻松并行化以及更多功能,如里程碑、谱系等。

daga

daga 是一个实验性版本的 2 级遗传算法,与 GALOPPS GA 软件兼容。它是一个元 GA,动态地进化 GA 群体,以解决呈现给较低级别 GA 的问题。当多个 GA(具有不同的运算符、参数设置等)同时应用于同一问题时,性能较好的 GA 更有可能生存并“繁殖”到下一个宏世代(即,产生新的“子”GA,其特征继承自父 GA 或 GA)。通过这种方式,我们尝试鼓励良好的问题解决策略传播到整个 GA 群体。

DEAP

DEAP 旨在成为 Python 语言中易于使用的分布式进化算法库。它的两个主要组件是模块化的,可以单独使用。第一个模块是分布式任务管理器 (DTM),旨在在使用 TCP 或 MPI 连接的计算机集群上运行。第二部分是 Python (EAP) 框架中的进化算法。EAP 是 DEAP 的进化核心,它提供数据结构、方法和工具来设计任何类型的进化算法。它与 DTM 完美协调工作,可以轻松地并行化任何要求苛刻的进化任务。

dgpf

分布式遗传编程框架 (DGPF) 是一个可扩展的 Java 环境,适用于任何类型的启发式、基于模拟的搜索算法,尤其是遗传算法。我们使用搜索算法层的广泛基础来提供一个遗传编程系统,该系统能够创建图灵完备的代码。

它采用 LGPL 许可证。它允许您使用启发式搜索(如 GA 和随机爬山法)来解决您喜欢的任何问题空间,只需最少的编程工作。此外,您可以使用客户端/服务器、对等甚至客户端/服务器+对等混合分发方案在网络上分发所有这些搜索。您还可以构建异构搜索算法,其中 GA 与爬山法协作,而无需更改任何代码。

Ease

Ease - 进化算法脚本环境 - 是 Tcl 脚本语言的扩展,提供命令来创建、修改和评估由实数向量和/或位串表示的个体群体。

EO

EO 是一个基于模板的、符合 ANSI-C++ 标准的进化计算库。它包含您可能想到的任何类型的进化计算(特别是遗传算法)的类。它是基于组件的,因此如果您在其中找不到所需的类,则可以非常容易地对现有抽象类或具体类进行子类化。

Evocosm

Evocosm 是一组抽象进化算法基本组件的类。请参阅网站了解详情,但以下是提供的类的简单列表:随机数、OpenMP、浮点染色体、轮盘赌、生物体、适应度地形、Evocosms、适应度缩放、迁移、选择幸存者、繁殖、变异操作。

evolver

一个用于创建和使用遗传算法和遗传(进化)程序的 Python 库。允许进行基于 Python 的进化编程;基于字符串以及源代码树节点优化/搜索解决方案发现。

FORTRAN GA

该程序是遗传算法驱动程序的 FORTRAN 版本。此代码初始化具有不同参数的个体的随机样本,这些参数将使用遗传算法方法进行优化,即通过适者生存进行进化。使用的选择方案是锦标赛选择,并采用洗牌技术来选择随机配对进行交配。该例程包括个体的二进制编码、跳跃突变、蠕变突变以及单点或均匀交叉的选择。添加了生态位(共享)和每个亲本对的子代数量的选项。最近,添加了使用微型 GA 的选项。

FREVO

FREVO 是一个在 Java 中开发的开源框架,旨在帮助工程师和科学家进行进化设计或优化任务。FREVO 的主要特点是每个优化任务的关键构建块的组件分解和分离。我们将其识别为问题定义、解决方案表示和优化方法。这种结构使组件能够单独设计,允许用户轻松交换和评估不同的配置和方法,或连接外部模拟工具。

GAlib:Matthew 的遗传算法库

GAlib 包含一组 C++ 遗传算法对象。该库包括用于使用遗传算法在任何 C++ 程序中使用任何表示和遗传运算符进行优化的工具。该文档包括如何实现遗传算法的广泛概述,以及说明 GAlib 类自定义的示例。

GALOPPS

GALOPPS 是一个灵活的通用 GA,用 'C' 语言编写。它基于 Goldberg 的简单遗传算法 (SGA) 架构,以便用户更容易学习使用和扩展。

GALOPPS 将 SGA 的功能扩展了数倍

GAS

GAS 的意思是“遗传算法的东西”。GAS 是免费软件。

GAS 的目的是探索和利用人工进化。GAS 的主要实现语言是 Python。GAS 软件包旨在成为应用遗传算法的 Python 框架。它包含一个示例应用程序,其中尝试繁殖 Python 程序字符串。这个特殊问题属于遗传编程 (GP) 和/或自动编程的范畴。尽管如此,GAS 仍试图对遗传算法的其他应用有用。

GAUL

遗传算法实用程序库 (GAUL) 是一个灵活的编程库,旨在帮助开发需要使用遗传算法的应用程序。功能包括

GECO

GECO(通过对象组合进行遗传进化),一个可扩展的面向对象的工具箱,用于构建遗传算法(在 Lisp 中)。它提供了一组为通用性而设计的可扩展类和方法。还提供了一些简单的示例来说明预期用途。

GenePool

GenePool 是一个用于在 OCaml 中编写进化优化算法的框架。该库不是一个完整的解决方案,而是一个通用的骨架,负责优化的管道和细微之处。您为 GenePool 提供赋予适应度和繁殖意义的函数,并在指定数量的世代之后,GenePool 返回一个它进化的最佳“基因组”数组。

Genetic

这是一个用于 Python 中的遗传算法和 AI 的软件包。

Genetic 通常可以解决任何旨在最小化函数的问题。

它还包括一些演示/示例,例如 TSP(旅行商问题)。

GPdata

GPdata-3.0.tar.gz (C++) 包含 Andy Singleton 的 GP-Quick 版本 2.1 的一个版本,该版本已得到广泛修改以支持

此 ftp 站点还包含一个小型 C++ 程序 (ntrees.cc),用于计算给定长度以及给定函数和终端集的不同数量。

gpjpp Java 中的遗传编程

gpjpp 是我编写的用于遗传编程研究的 Java 包。它是 Adam Fraser 和 Thomas Weinbrenner 编写的 gpc++ 内核的端口。该软件包中包含 Koza 的四个标准示例:人工蚂蚁、跳跃式割草机、符号回归和布尔多路复用器。以下是其功能的部分列表

jaga

用 Java 编写的简单遗传算法包。

JGAP

JGAP(发音为“jay-gap”)是一个作为 Java 框架提供的遗传算法和遗传编程组件。它提供了基本的遗传机制,可以轻松地将进化原理应用于问题解决方案。

JGAP 的设计旨在“开箱即用”非常易于使用,同时也旨在高度模块化,以便更喜欢冒险的用户可以轻松插入自定义遗传算子和其他子组件。

lil-gp

修补的 lil-gp *

lil-gp 是一个通用的 'C' 遗传编程工具。它的编写考虑了许多目标:速度、易用性以及对多种选项的支持,包括

* 修补的 lil-gp 内核是强类型的,对多线程、协同进化和其他调整和功能进行了修改。

Lithos

Lithos 是一个基于堆栈的进化计算系统。与大多数 EC 系统不同,它的表示语言在计算上是完备的,同时比遗传编程中使用的 S 表达式更快更紧凑。此处提供的版本将该系统应用于围棋游戏,但只需插入不同的评估函数即可将其更改为其他问题。提供 ANSI C 源代码。

Open BEAGLE

Open BEAGLE 是一个 C++ 进化计算框架。它提供了一个高级软件环境来执行任何类型的进化计算,支持基于树的遗传编程、位串和实值遗传算法、进化策略、协同进化和进化多目标优化。

PGAPack

并行遗传算法库

PGAPack 是一个通用的、数据结构中立的并行遗传算法库。它旨在以集成、无缝和可移植的方式提供遗传算法库中所需的大多数功能。PGAPack V1.0 中的主要功能包括

PIPE

概率增量程序进化 (PIPE) 是一种用于自动程序合成的新技术。该软件是用 C 语言编写的。它 ...

plop

一个 Common Lisp 框架,用于试验元优化语义进化搜索 ( MOSES) 以及基于程序空间概率分布的概率分布学习的相关方法,基于

Pyevolve

Pyevolve 的开发旨在成为一个完整的遗传算法框架,Pyevolve 的主要目标是

pygp

您的基本 python 遗传算法包。

tinygp

C++ 和 ActionScript 3(嵌入在 Flash 中的 Javascript 引擎)中的小型遗传编程库,带有 flash 演示。

这个 GP 库使用标准的 Koza 表达式树程序表示。它使用 'grow' 算法生成随机表达式。通过选择表达式树中的随机子表达式,并用新的随机表达式(满足最大树深度约束)替换它来执行突变。两个表达式之间的交叉(交配)是通过在每个父代中选择一个随机子表达式,然后交换它们来执行的(尽管它只产生一个子代,而不是两个)。

除了用于创建、突变、交配和评估表达式的核心代码外,该库还包括具有锦标赛选择的稳态遗传算法和最差淘汰、精英替换策略(即,当创建一个新子代时,它会替换种群中最差的成员,前提是它更好)。

txevolver

一个基于 Twisted 的库集合,用于以异步、分布式方式执行遗传算法以及遗传程序的计算。

4.2 EC 软件包/应用程序

这些是各种应用程序、软件包等,旨在用于进化计算领域的研究。它们的易用性各不相同,因为它们的设计更多是为了满足某些特定的研究兴趣,而不是作为易于使用的商业软件包。

ADATE

ADATE(通过进化自动设计算法)是一个用于自动编程的系统,即算法的归纳推理,这可能是开发人工和通用智能的最佳方法。

ADATE 系统可以自动生成重要的和新颖的算法。算法是通过大规模组合搜索生成的,该搜索采用复杂的程序转换和启发式方法。ADATE 系统尤其擅长合成符号化、函数式程序,并具有多个独特的品质。

esep & xesep

这是一个新的调度器,称为进化调度器,基于遗传算法和进化程序设计。它与原始 Linux 优先级调度器共存。这意味着您无需重新启动即可更改调度策略。您可以随时简单地使用管理器程序 esep 在它们之间切换,并且 esep 本身是一个用于调度状态、命令和管理的all-in-one程序。我们并不打算删除原始的优先级调度器;相反,至少,esep 为您提供了另一种选择,即使用更智能的调度器,该调度器以一种简单有效的方式执行自然竞争。

Xesep 是 esep(进化调度和进化过程)的图形用户界面。它旨在向用户展示如何启动、玩和感受进化调度和进化过程,包括子程序,以周期性地显示系统状态、进化过程状态、队列状态和进化调度状态,最短可达一毫秒。

Corewars

Corewars 是一款游戏,它模拟了一个具有多个程序的虚拟机。每个程序都试图使其他程序崩溃。持续时间最长的程序获胜。提供了许多示例程序,玩家可以编写新程序。屏幕截图可在 Corewars 主页上找到。

JCASim

JCASim 是一个通用的系统,用于在 Java 中模拟细胞自动机。它包括一个独立的应用程序和一个用于网络演示的 applet。细胞自动机可以在 Java、CDL 中指定,或使用交互式对话框指定。该系统支持许多不同的晶格几何形状(1-D、2-D 正方形、六边形、三角形、3-D)、邻域、边界条件,并且可以使用颜色、文本或图标显示单元格。

JGProg

遗传编程 (JGProg) 是强类型遗传编程实验平台的开源 Java 实现。提供了两个示例“世界”,其中种群进化并解决问题。


下一页 上一页 目录