GNU/Linux AI 和 Alife HOWTO

作者:John Eikenberry

v3.1, 2013年3月31日
本 HOWTO 主要包含关于各种与 AI 相关的软件库、应用程序等的信息和链接,这些软件库、应用程序等可在 GNU/Linux 平台上运行。所有这些软件(至少)都可免费用于个人用途。本文档的新主页是 http://zhar.net/howto/

1. 简介

2. 符号系统 (GOFAI)

3. 连接主义

4. 进化计算

5. Alife 和复杂系统

6. 代理和机器人技术

7. 统计和机器学习

8. 缺失和已失效


1. 简介

1.1 目的

GNU/Linux 操作系统已从其最初的黑客领域发展成为功能完善的 UNIX,能够与任何商业 UNIX 相媲美。它现在为构建出色的工作站提供了廉价的基础。它摆脱了硬件依赖性,已被移植到 DEC Alpha、Sparc、PowerPC 以及许多其他平台。这种潜在的速度提升及其网络支持使其非常适合工作站集群。作为一个工作站,它允许进行各种研究和开发,包括人工智能和人工生命。

本 HOWTO 的目的是提供一个资源,以了解各种软件包、代码库以及任何其他可以帮助人们开始使用(并找到资源)人工智能、人工生命等的工具。所有这些都是专门针对 GNU/Linux 而编写的。

1.2 最新内容

1.3 在哪里可以找到这些软件

所有这些软件都应该可以通过网络(ftp 或 http)获得。查找位置的链接将在每个软件包的描述中提供。还有许多未在本页介绍的软件(通常是平台独立的),位于主站点(如上所示)的 链接部分 中列出的资源之一。

1.4 更新和评论

如果您发现任何错误、知道以下任何项目的更新,或在编译任何应用程序时遇到问题,请发送邮件至:jae@zhar.net,我会尽力处理。

如果您知道任何 AI/Alife 应用程序、类库等, 给我发邮件 告知。请包括您的姓名、可以找到它们的 ftp 和/或 http 站点,以及关于该软件的简要概述/评论(这些信息会让我轻松很多......但不要感到有义务 ;)。

我知道保持此列表更新和扩展它需要相当多的工作。所以请耐心等待(我还有其他项目)。我希望您会发现本文档对您有帮助。

1.5 版权/许可证

CC0

在法律允许的最大范围内,John Eikenberry 已放弃对本作品的所有版权及相关或邻近权利。本作品的发布地为:美国。


2. 符号系统 (GOFAI)

传统上,AI 是基于逻辑、规则系统、语言学和理性概念的思想。它的根源是 Lisp 和 Prolog 等编程语言,尽管较新的系统倾向于使用更流行的过程语言。专家系统是这种范式最成功的例子。专家系统由详细的知识库和复杂的规则系统组成,以利用它。此类系统已用于医疗诊断支持和信用检查系统等领域。

2.1 AI 类/代码库

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

ACL2

ACL2 (应用 Common Lisp 的计算逻辑) 是一款用于工业应用的定理证明器。它既是一种数学逻辑,也是一个用于构建逻辑证明的工具系统。ACL2 与 GCL (GNU Common Lisp) 一起工作。

AI Kernel

AI Kernel 是一个可重用的人工智能引擎,它使用自然语言处理和激活器/上下文模型,以允许已安装单元之间的多任务处理。

AI Search II

基本上,该库为程序员提供了一组搜索算法,可用于解决各种不同的问题。其理念是,在开发问题解决软件时,程序员应该能够专注于要解决的问题的表示,而无需费心实现将用于实际执行搜索的搜索算法。通过实现一组搜索类,可以通过 C++ 的派生和继承特性将这些搜索类合并到其他软件中,从而实现了这一理念。已实现的搜索算法如下

该库有一本对应的书,即“面向对象的<0xE4><0xBA><0xBA>工智能,使用 C++”。

Alchemy

Alchemy 是一个软件包,提供一系列用于统计关系学习和概率逻辑推理的算法,基于马尔可夫逻辑表示。Alchemy 使您可以轻松开发各种 AI 应用程序,包括

Aleph

本文档提供关于假设学习引擎 (Aleph) 的参考信息。Aleph 是一个归纳逻辑编程 (ILP) 系统。Aleph 旨在作为探索想法的原型。Aleph 是牛津大学计算实验室的 Ashwin Srinivasan 博士在 Prolog 中实现的 ILP 算法,专门为与 YAP Prolog 编译器编译而编写

Microprograms

基于案例推理的“微型”版本论文程序的集合,这些程序是为教学目的而开发的。这些程序旨在将原始程序的关键方面提炼成一种易于理解、修改和扩展的形式。

Lisp 国际象棋 (CIL)

CIL (Lisp 国际象棋) 基础是 Common Lisp 实现,包含了开发国际象棋应用程序所需的所有核心功能。CIL 项目的主要目的是让 AI 研究人员对使用 Lisp 在国际象棋领域工作产生兴趣。

clasp

clasp 是(扩展)普通逻辑程序的解答集求解器。它将解答集编程 (ASP) 的高级建模能力与布尔约束求解领域的最新技术相结合。主要的 clasp 算法依赖于冲突驱动的 nogood 学习,这项技术在可满足性检查 (SAT) 方面被证明非常成功。与其他学习 ASP 求解器不同,clasp 不依赖于遗留软件,例如 SAT 求解器或任何其他现有的 ASP 求解器。相反,clasp 真正地是为基于冲突驱动的 nogood 学习的解答集求解而开发的。clasp 可以用作 ASP 求解器(在 LPARSE 输出格式上)、SAT 求解器(在简化的 DIMACS/CNF 格式上)或 PB 求解器(在 OPB 格式上)。

ConceptNet

ConceptNet 旨在让计算机访问常识知识,即普通人知道但通常不说的信息。ConceptNet 中的数据是从通过网络贡献数据的普通人那里收集的。ConceptNet 以语义网络的形式表示这些数据,并使其可用于自然语言处理和智能用户界面。

此 API 提供 Python 代码,可以访问 ConceptNet 3 和将成为 ConceptNet 4 的开发数据库,以及使用它所需的自然语言工具。它使用 Django 与数据库交互。

ERESYE

ERESYE 的意思是 ERlang 专家系统引擎。它是一个使用 Erlang 编程语言编写专家系统和规则处理引擎的库。它允许创建多个引擎,每个引擎都有自己的事实和规则要处理。

FFLL

Free Fuzzy Logic Library (FFLL) 是一个开源模糊逻辑类库和 API,针对速度关键型应用进行了优化,例如视频游戏。FFLL 能够加载符合 IEC 61131-7 标准的文件。

FLiP

Flip 是一个用 Python 编写的逻辑框架。逻辑框架是一个用于定义逻辑和编写应用程序(例如定理证明器)的库。检查器可以使用不同的逻辑;Flip 附带了几种。您可以通过在 Python 中编写模块来添加另一个逻辑,或添加公理和派生规则。Python 既是对象语言又是元语言。公式、推理规则和整个证明都是 Python 表达式。证明器命令是 Python 函数。

Ada 的模糊集

Ada 的模糊集是一个库,提供置信因子的实现,包括运算 not、and、or、xor、+ 和 *,经典模糊集,包括集合论运算和可能性理论运算、直觉模糊集及其运算、基于直觉模糊集和可能性理论的模糊逻辑;模糊数,包括整数和浮点数,具有常规算术运算,以及语言变量和语言变量集及其运算。支持面向字符串的 I/O。

HTK

Hidden Markov Model Toolkit (HTK) 是一个用于构建和操作隐马尔可夫模型的便携式工具包。HTK 由一组以 C 源代码形式提供的库模块和工具组成。这些工具为语音分析、HMM 训练、测试和结果分析提供了复杂的功能。该软件支持使用连续密度混合高斯分布和离散分布的 HMM,并可用于构建复杂的 HMM 系统。HTK 版本包含丰富的文档和示例。

JCK

JCK 是一个新的库,为 Java 提供约束编程和搜索。

源代码和文档可从上面的链接获取。

KANREN

KANREN 是一个声明式逻辑编程系统,具有一流的关系,嵌入在 Scheme 的纯函数子集中。该系统具有集合论语义、真并集、公平调度、一流的关系、词法作用域逻辑变量、深度优先和迭代深化策略。该系统在不进行裁剪的情况下实现了高性能和表现力。

LK

LK 是 Lin-Kernighan 启发式算法的实现,用于解决旅行商问题和最小权重完美匹配问题。它针对二维几何实例进行了调整,并已应用于某些多达一百万个城市的实例。还包括用于处理 TSPLIB 实例的实例生成器和 Perl 脚本。

此实现引入了“高效集群补偿”,这是一种实验性算法技术,旨在使 Lin-Kernighan 启发式算法在面对集群数据时更加稳健。

LingPipe

LingPipe 是一套最先进的自然语言处理工具,用 Java 编写,可执行分词、句子检测、命名实体检测、共指消解、分类、聚类、词性标注、通用分块、模糊字典匹配。

Logfun

Logfun 是一个逻辑函子库。逻辑函子是一个函数,可以应用于零个、一个或多个逻辑,从而生成一个新的逻辑,作为参数逻辑的组合。每个参数逻辑本身都可以通过逻辑函子的组合来构建。逻辑的签名由公式的解析器和打印机、逻辑运算(例如公式之间蕴含关系的定理证明器)以及逻辑信息系统 (LIS) 所需的更具体的操作组成。逻辑函子可以是整数、字符串等具体域,也可以是逻辑的乘积或和等代数组合器。

逻辑函子被编码为 Objective Caml 模块。逻辑语义与每个逻辑函子相关联。这使得可以定义逻辑的属性,例如蕴含关系证明器的一致性和完整性,并证明在哪些条件下,给定的参数逻辑的属性,生成的蕴含关系证明器满足这些属性。

Loom

* 注意:Loom 已被 PowerLoom 取代。

Loom 是一种用于构建智能应用程序的语言和环境。Loom 的核心是一个知识表示系统,用于为 Loom 语言的声明部分提供演绎支持。Loom 中的声明性知识由定义、规则、事实和默认规则组成。一个名为分类器的演绎引擎利用前向链接、语义统一和面向对象的真值维护技术,将声明性知识编译成一个网络,旨在有效地支持在线演绎查询处理。

Loom 系统实现了一个基于逻辑的模式匹配器,它驱动生产规则工具和模式导向的方法调度工具,后者支持面向对象方法的定义。Loom 的声明性和过程性组件之间的高度集成允许程序员在单个应用程序中利用逻辑编程、生产规则和面向对象编程范例。Loom 也可以用作覆盖普通 CLOS 网络的演绎层。在这种模式下,用户可以获得使用 Loom 的许多好处,而不会影响其基于 CLOS 的应用程序的功能或性能。

maxent

Maximum Entropy Toolkit 提供了一组工具和库,用于在 Python 或 C++ 中构建最大熵 (maxent) 模型。Maxent 熵模型是一个通用的机器学习框架,已被证明在统计自然语言处理、统计物理、计算机视觉和许多其他领域中具有高度的表达性和强大功能。

它具有条件最大熵模型、L-BFGS 和 GIS 参数估计、高斯先验平滑、C++ API、Python 扩展模块、命令行实用程序和良好的文档。Java 版本也可用。

Nyquist

CMU 的计算机音乐项目正在开发计算机音乐和交互式表演技术,以增强人类的音乐体验和创造力。这项跨学科的努力借鉴了音乐理论、认知科学、人工智能和机器学习、人机交互、实时系统、计算机图形和动画、多媒体、编程语言和信号处理。这些跨学科努力的一个范例是创建交互式表演,将人类的音乐即兴创作与智能计算机代理实时耦合。

OpenCyc

OpenCyc 是 Cyc 的开源版本,Cyc 是最大、最完整的通用知识库和常识推理引擎。一个基于 6000 个概念和 60000 个关于它们的断言的本体。

Pattern

Pattern 是 Python 编程语言的网络挖掘模块。它捆绑了用于数据检索(Google + Twitter + Wikipedia API、网络蜘蛛、HTML DOM 解析器)、文本分析(基于规则的浅层解析器、WordNet 接口、句法 + 语义 n-gram 搜索算法、tf-idf + 余弦相似度 + LSA 指标)和数据可视化(图形网络)的工具。

PowerLoom

PowerLoom 是 Loom 知识表示系统的后继者。它提供了一种语言和环境,用于构建智能的、基于知识的应用程序。PowerLoom 使用一种完全表达的、基于逻辑的表示语言(KIF 的变体)。它使用自然演绎推理引擎,该引擎结合了前向和后向链接,以推导出从知识库中断言的事实和规则在逻辑上得出的结论。虽然 PowerLoom 不是描述逻辑,但它确实有一个描述分类器,该分类器使用从 Loom 分类器派生的技术来分类用完整的一阶谓词演算表示的描述(参见论文)。PowerLoom 使用模块作为知识库的结构化设备,并使用超轻量级世界来支持假设推理。

为了实现 PowerLoom,我们开发了一种名为 STELLA 的新编程语言,这是一种强类型、类 Lisp 的语言,可以翻译成 Lisp、C++ 和 Java。PowerLoom 是用 STELLA 编写的,因此有 Common-Lisp、C++ 和 Java 版本。

PyCLIPS

PyCLIPS 是 Python 语言的扩展模块,它将完整的 CLIPS 功能嵌入到 Python 应用程序中。这意味着您可以为 Python 提供一个强大、可靠、广泛使用且文档齐全的推理引擎。

Pyke

Pyke 是一个用 100% python 编写的基于知识的推理引擎(专家系统),它可以

python-dlp

python-dlp 旨在成为一个基于语义网技术的现代专家系统。传统上,专家系统是计算和人工智能的一个应用,其目标是支持能够重现一个或多个人类专家在特定问题领域中的确定性行为的软件。它采用高效的 RETE_UL 算法作为专家系统的“引擎”。

Reverend

Reverned 是一个用 Python 编写的通用贝叶斯分类器。它被设计成易于扩展到任何应用领域。

Screamer

Screamer 是 Common Lisp 的一个扩展,增加了对非确定性编程的支持。Screamer 由两个层次组成。基本的非确定性层增加了对回溯和可撤销副作用的支持。在这一非确定性基底之上,Screamer 提供了一种全面的约束编程语言,在其中可以构建和解决数字和符号约束的混合系统。这两个层次共同增强了 Common Lisp,使其几乎拥有 Prolog 和约束逻辑编程语言(如 CHiP 和 CLP(R))的所有功能。此外,Screamer 与 Common Lisp 完全集成。Screamer 程序可以与 Common Lisp 的其他扩展(如 CLOS、CLIM 和 Iterate)共存和互操作。

SimpleAI

Python 库,实现了 Stuart Russel 和 Peter Norvig 的著作《人工智能:一种现代方法》中描述的许多人工智能算法。重点是创建一个稳定、现代且可维护的版本。我们正在测试库的大部分内容,它可以通过 pip install 安装,具有标准的 repo 和 lib 架构,文档齐全,遵守 python pep8 指南,仅提供可工作的代码(没有为未来功能预留位置)等等。即使是内部代码的编写也以可读性为中心,而不仅仅是外部 API。

还有一个 https://code.google.com/p/aima-python/ 也实现了这些算法。虽然它已经有一段时间没有更新了。

SPASS

SPASS: 一阶逻辑等式自动定理证明器

如果您对一阶逻辑定理证明、软件的形式化分析、系统、协议、人工智能规划的形式化方法、决策程序、模态逻辑定理证明感兴趣,SPASS 可能会为您提供合适的功能。

Torch

Torch 是一个用 C++ 编写的机器学习库。它的目标是提供最先进的最佳算法。它现在是,将来也会永远处于开发之中。

Torch 是一个开放库,其作者鼓励大家开发新的软件包,以便在未来版本中包含在官方网站上。

2.2 人工智能软件包、应用程序等

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

ASA - 自适应模拟退火

ASA (自适应模拟退火) 是一种强大的全局优化 C 代码算法,特别适用于非线性和/或随机系统。

ASA 的开发目的是在统计上找到非线性非凸成本函数在 D 维空间中的最佳全局拟合。该算法允许“温度” T 的退火计划在退火时间 k 中呈指数下降,T = T_0 exp(-c k^1/D)。重新退火的引入还允许适应多维参数空间中不断变化的灵敏度。这种退火计划比快速柯西退火(其中 T = T_0/k)更快,并且比玻尔兹曼退火(其中 T = T_0/ln k)快得多。

Babylon

BABYLON 是一个模块化、可配置的混合环境,用于开发专家系统。其功能包括对象、具有正向和反向链接的规则、逻辑 (Prolog) 和约束。BABYLON 是用 Common Lisp 实现和嵌入的。

cfengine

Cfengine,或配置引擎,是一种非常高级的语言,用于构建管理和配置大型计算机网络的专家系统。Cfengine 使用类和原始智能形式的思想来定义和自动化大型系统的配置,以尽可能经济的方式进行。Cfengine 被设计为计算机免疫系统的一部分。

CLIPS

CLIPS 是一种高效的开发和交付专家系统工具,它为构建基于规则和/或对象的专家系统提供了一个完整的环境。

CLIPS 提供了一个有凝聚力的工具,用于处理各种知识,并支持三种不同的编程范例:基于规则的、面向对象的和过程式的。基于规则的编程允许将知识表示为启发式或“经验法则”,这些规则指定在给定情况下要执行的一组操作。面向对象的编程允许将复杂系统建模为模块化组件(可以轻松重用以建模其他系统或创建新组件)。CLIPS 提供的过程式编程功能类似于 C、Pascal、Ada 和 LISP 等语言中的功能。

EMA-XPS - 混合图形专家系统外壳

EMA-XPS 是一个混合图形专家系统外壳,基于德国国家计算机科学研究中心 (GMD) 的面向 ASCII 的外壳 Babylon 2.3。除了 Babylon 的人工智能能力(面向对象的数据表示、正向和反向链接规则 - 可收集成集合、Horn 子句和约束网络)之外,还提供了一个基于 X11 窗口系统和 OSF/Motif Widget Library 的图形界面。

Eprover

E 等式定理证明器是一个纯粹的等式定理证明器。核心证明过程对子句范式中的公式进行操作,使用一种结合了叠加(选择否定文字)和重写的演算。没有实现非等式文字的特殊规则,即,通过参数化调制和等式解析来模拟分辨率。基本演算扩展了 AC 冗余消除、一些上下文简化和伪分裂的规则。最新版本的 E 还支持同步参数化调制,可以用于所有推理或选定的推理。

E 基于给定子句算法的 DISCOUNT 循环变体,即严格分离主动和被动事实。E 中的证明搜索主要由文字选择策略、子句评估启发式和简化排序控制。证明器支持大量的预编程文字选择策略,其中许多策略仅是实验性的。子句评估启发式可以通过组合各种参数化原始评估函数动态构建,也可以从一组预定义的启发式中选择。支持的术语排序是 Knuth-Bendix 排序 (KBO) 和字典路径排序 (LPO) 的几个参数化实例。

FOOL & FOX

FOOL 代表 Fuzzy Organizer OLdenburg(奥尔登堡模糊组织器)。它是在奥尔登堡大学的一个项目中的成果。FOOL 是一个用于开发模糊规则库的图形用户界面。FOOL 将帮助您创建和维护一个数据库,该数据库指定模糊控制器或类似事物的行为。

FOX 是一个小型但功能强大的模糊引擎,它读取此数据库,读取一些输入值并计算新的控制值。

FreeHAL

FreeHAL 是一个自学习对话模拟器,它使用语义网络来组织其知识。

FreeHAL 使用语义网络、模式匹配、词干提取器、词性数据库、词性标注器和隐马尔可夫模型。在线版本和下载版本都支持 TTS(文本转语音)。

FUF 和 SURGE

FUF 是 Martin Kay 引入的功能统一语法 (FUG) 形式主义的扩展实现,专门用于自然语言生成任务。它为基本形式主义添加了以下功能

这些扩展允许开发大型语法,这些语法可以有效地处理,并且可以更轻松地维护和理解。SURGE 是用 FUF 编写的大型英语句法实现语法。SURGE 的开发目的是作为一个黑盒句法生成组件,用于更大的生成系统中,该系统封装了丰富的英语句法知识。SURGE 也可以用作语法编写探索的平台,具有生成视角。

GATE

GATE (通用文本工程架构) 是一个架构、框架和开发环境,用于开发、评估和嵌入人类语言技术。

GATE 由三个要素组成

The Grammar Workbench (语法工作台)

似乎已过时??? 它已从站点上移除,但其父项目仍在进行中。

语法工作台 (GWB) 是一个环境,用于舒适地开发 AGFL 形式主义中的词缀语法。其目的是

GSM Suite (GSM 套件)

GSM 套件是一组程序,用于以图形方式使用有限状态机。该套件由编辑、编译和打印状态机的程序组成。套件中包含一个编辑器程序 gsmedit、一个编译器 gsm2cc(生成状态机的 C++ 实现)、一个 PostScript 生成器 gsm2ps 和另外两个次要程序。GSM 在 GNU 通用公共许可证下获得许可,因此您可以根据该许可证的条款免费使用它。

Isabelle

Isabelle 是剑桥大学和慕尼黑工业大学开发的流行的通用定理证明器。现有的逻辑(如 Isabelle/HOL)提供了一个定理证明环境,可随时用于大型应用程序。Isabelle 也可以作为演绎系统快速原型设计的框架。它带有一个大型库,包括 Isabelle/HOL(经典高阶逻辑)、Isabelle/HOLCF(带有 HOL 的可计算函数 Scott 逻辑)、Isabelle/FOL(经典和直觉一阶逻辑)和 Isabelle/ZF(基于 FOL 的 Zermelo-Fraenkel 集合论)。

Jess,Java 专家系统外壳

Jess 是流行的 CLIPS 专家系统外壳的克隆版本,完全用 Java 编写。借助 Jess,您可以方便地为您的 applet 提供“推理”能力。Jess 与从 1.0.2 版本开始的所有 Java 版本兼容。Jess 实现了 CLIPS 中的以下构造:defrules、deffunctions、defglobals、deffacts 和 deftemplates。

learn

Learn 是一个带有记忆模型的词汇学习程序。

LISA (Lisp-based Intelligent Software Agents - 基于 Lisp 的智能软件代理)

LISA (基于 Lisp 的智能软件代理) 是一个生产规则系统,深受 JESS (Java 专家系统外壳) 的影响。它的核心是一个基于 Rete 模式匹配算法的推理引擎。LISA 还提供了对普通 CLOS 对象进行推理的能力。

Livingstone2

Livingstone2 (L2) 是一个可重用的人工智能 (AI) 软件系统,旨在协助航天器、生命支持系统、化工厂或其他复杂系统在最少的人工监督下稳健运行,即使在硬件故障或意外事件发生时也是如此。

NICOLE (Nearly Intelligent Computer Operated Language Examiner - 近似智能计算机操作语言检查器)

NICOLE (近似智能计算机操作语言检查器) 是一种理论或实验,即如果给计算机足够的关于单词、短语和句子如何相互关联的组合,它就可以回复您。它试图通过学习单词如何与其他单词相关联来模拟对话。人类通过键盘与 NICOLE 通信,而 NICOLE 使用其自动生成的句子回复,这些句子基于 NICOLE 存储在其数据库中的内容。每个新输入的句子,如果 NICOLE 不知道,都会被包含到 NICOLE 的数据库中,从而扩展 NICOLE 的知识库。

Otter: An Automated Deduction System (Otter:自动演绎系统)

我们当前的自动演绎系统 Otter 旨在证明用一阶逻辑和等式陈述的定理。Otter 的推理规则基于分辨率和参数化调制,它包括用于术语重写、术语排序、Knuth-Bendix 完成、加权和指导和限制证明搜索的工具。Otter 也可以用作符号计算器,并具有嵌入式等式编程系统。

PVS

PVS 是一个验证系统:即,一种与支持工具和定理证明器集成的规范语言。它旨在捕捉机械化形式化方法的最新技术,并足够坚固,可以用于重要的应用。PVS 是一个研究原型:它随着我们开发或应用新功能以及实际使用带来的压力暴露新需求而不断发展和改进。

SNePS

SNePS 研究小组的长期目标是设计和构建一个使用自然语言的计算机认知代理,并开展人工智能、计算语言学和认知科学方面的研究,这对于实现这一目标是必要的。该小组的三部分重点是知识表示、推理以及自然语言理解和生成。该小组因其开发的 SNePS 知识表示/推理系统及其计算机认知代理 Cassie 而广为人知。

Soar

Soar 的开发目标是成为一个通用的认知架构。我们最终的目标是使 Soar 架构能够

换句话说,我们的意图是让 Soar 支持通用智能代理所需的所有能力。

TCM (Toolkit for Conceptual Modeling - 概念建模工具包)

TCM (概念建模工具包) 是我们的图形编辑器套件。TCM 包含用于实体-关系图、类-关系图、数据和事件流图、状态转换图、Jackson 过程结构图和系统网络图、函数细化树以及各种表格编辑器(例如函数-实体表格编辑器和函数分解表格编辑器)的图形编辑器。TCM 易于使用,并执行大量一致性检查,其中一些是立即执行的,一些是在请求时执行的。

Yale

YALE (Yet Another Learning Environment - 又一个学习环境) 是一个用于机器学习实验的环境。实验可以由大量任意嵌套的运算符组成,它们的设置由 XML 文件描述,这些文件可以使用图形用户界面轻松创建。YALE 的应用涵盖研究和实际学习任务。

WEKA (Waikato Environment for Knowledge Analysis - 怀卡托知识分析环境)

WEKA (怀卡托知识分析环境) 是一个将机器学习技术应用于实际问题的最先进的工具。它是一个全面的软件“工作台”,允许人们分析真实世界的数据。它在一个通用框架和一个统一的用户界面中集成了不同的机器学习工具。它旨在支持“简单至上”的方法,该方法允许用户在寻找更复杂的解决方案之前,交互式地试验简单的机器学习工具。


3. 连接主义

连接主义是相关技术群体的技术术语。这些技术包括人工神经网络、语义网络和一些其他类似的想法等领域。我目前的重点是神经网络(尽管我正在寻找关于其他技术的资源)。神经网络是旨在模拟大脑工作方式的程序。它们由一个小的基于数学的节点网络组成,这些节点协同工作以形成信息模式。它们具有巨大的潜力,并且目前似乎在图像处理和机器人控制方面取得了巨大的成功。

3.1 连接主义类/代码库

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

Software for Flexible Bayesian Modeling (用于灵活贝叶斯建模的软件)

该软件实现了基于多层感知器神经网络或高斯过程的回归和分类应用的灵活贝叶斯模型。该实现使用了马尔可夫链蒙特卡罗方法。分布中包含支持马尔可夫链采样的软件模块,这些模块可能在其他应用中也很有用。

BELIEF

BELIEF 是 Dempster 和 Kong 融合和传播算法的 Common Lisp 实现,用于图形置信函数模型,以及 Lauritzen 和 Spiegelhalter 算法,用于图形概率模型。它包括用于操作图形置信模型(如贝叶斯网络和相关图(影响图的子集))的代码,使用置信函数和概率作为不确定性的基本表示。它使用 Shenoy 和 Shafer 版本的算法,因此其独特的特点之一是它同时支持概率分布和置信函数。它还对二阶模型(参数的概率分布)提供有限的支持。

bpnn.py

一个简单的 Python 反向传播 ANN(人工神经网络)。

brain

Brain 是一个轻量级的 JavaScript 神经网络库。它实现了使用反向传播训练的标准前馈多层感知器神经网络。

brain-simulator (大脑模拟器)

Brian 是一个用于尖峰神经网络的时钟驱动模拟器。它的设计重点是灵活性和可扩展性,用于神经网络模型的快速开发和改进。神经元模型由用户指定的微分方程组、阈值条件和重置条件(以字符串形式给出)指定。重点主要是单室神经元模型网络(例如,泄露积分和激发或 Hodgkin-Huxley 类型神经元)。它用 Python 编写,易于学习和使用,高度灵活且易于扩展。功能包括

CNNs (细胞神经网络)

细胞神经网络 (CNN) 是一种在离散 N 维空间中定义的大规模并行计算范例。一个可视化 CNN 模拟器,允许跟踪状态轨迹的演变方式,从而深入了解 CNN 动态的行为。这可能有助于形成 CNN “工作原理”的想法,特别是对于那些没有 CNN 理论经验的人来说。

CONICAL

CONICAL 是一个 C++ 类库,用于构建计算神经科学中常见的模拟。目前,它的重点是室模型,其功能类似于 GENESIS 和 NEURON。模型神经元由室组成,通常呈圆柱形。当足够小时,这些开口圆柱体可以近似于几乎任何几何形状。未来的类可能会支持反应扩散动力学等。CONICAL 的一个关键特性是其跨平台兼容性;它已在 Unix、DOS 和 Mac OS 下完全共同开发和测试。

Encog

Encog 是一个先进的神经网络和机器学习框架。Encog 包含用于创建各种网络的类,以及用于规范化和处理这些神经网络数据的支持类。Encog 使用多线程弹性传播进行训练。Encog 还可以利用 GPU 进一步加快处理时间。还提供了一个基于 GUI 的工作台,以帮助建模和训练神经网络。Encog 自 2008 年以来一直处于积极开发中。Encog 可用于 Java、.Net 和 Silverlight。

FANN (Fast Artificial Neural Network Library - 快速人工神经网络库)

快速人工神经网络库是一个免费的开源神经网络库,它在 C 语言中实现了多层人工神经网络,并支持完全连接和稀疏连接的网络。支持在定点和浮点中进行跨平台执行。它包括一个用于轻松处理训练数据集的框架。它易于使用、通用、文档齐全且快速。提供 PHP、C++、.NET、Ada、Python、Delphi、Octave、Ruby、Prolog Pure Data 和 Mathematica 绑定。一个参考手册随库一起提供,其中包含有关如何使用该库的示例和建议。该库还提供图形用户界面。

ffnet

ffnet 是一个快速且易于使用的 Python 前馈神经网络训练解决方案。实现了许多不错的功能:任意网络连接、自动数据规范化、非常有效的训练工具、网络导出到 Fortran 代码。

Joone

Joone 是一个神经网络框架,用于创建、训练和测试神经网络。目标是基于最新的 Java 技术,为爱好者和专业用户创建一个基于 JavaSpaces 的分布式环境。Joone 由一个中央引擎组成,该引擎是已经存在或将要开发的所有应用程序的支点。神经引擎是模块化的、可扩展的、多任务的和可拉伸的。每个人都可以编写新模块,以从核心引擎分发的简单组件开始实现新算法或新架构。主要思想是创建基础,以促进围绕核心框架的无数人工智能应用程序。

Matrix Class (矩阵类)

一个简单、快速、高效的 C++ 矩阵类,专为科学家和工程师设计。矩阵类非常适合具有复杂数学算法的应用。作为矩阵类的演示,它被用于实现多层前馈人工神经网络的反向误差传播算法。

NEAT (NeuroEvolution of Augmenting Topologies - 增强拓扑神经进化)

许多神经进化方法进化固定拓扑网络。一些方法除了权重之外还进化拓扑,但这些方法通常对可以进化的网络的复杂性有限制,并且从随机拓扑开始进化。本项目基于一种称为增强拓扑神经进化 (NEAT) 的神经进化方法,该方法可以从最小的起点进化出无限复杂度的网络。

该研究的更广泛目标是表明,进化拓扑对于实现神经进化的 3 个主要目标是必要的:(1) 持续协同进化:成功的竞争性协同进化可以使用拓扑进化来不断完善策略。(2) 自适应网络进化:拓扑进化允许神经进化通过指定哪些连接应该是自适应的以及以何种方式来进化具有可塑性突触的自适应网络。(3) 组合专家网络:可以通过进化它们之间的连接神经元来融合独立的专家神经网络。

NeuroLab

NeuroLab - 一个基本的神经网络算法库,具有灵活的网络配置和 Python 的学习算法。为了简化库的使用,界面类似于 MATLAB (c) 的 Neural Network Toolbox (NNT) 包。该库基于 numpy 包 (http://numpy.scipy.org),一些学习算法使用了 scipy.optimize (https://scipy.org.cn)。

NuPIC

Numenta 智能计算平台 (NuPIC) 是围绕皮质学习算法构建的,它是 HTM 网络(分层时间记忆)的一种新的变体。它基于 Jeff Hawkins 在他的著作《On Intelligence》中提出的想法。NuPIC 由 Numenta 工具框架和 Numenta 运行时引擎组成。

Pulcinella

Pulcinella 使用 CommonLisp 编写,它以 Lisp 函数库的形式出现,用于创建、修改和评估估值系统。或者,用户可以选择通过图形界面与 Pulcinella 交互(仅在 Allegro CL 中可用)。Pulcinella 提供了构建和评估不确定性模型的原语,这些模型遵循几种不确定性计算方法,包括概率论、可能性理论和 Dempster-Shafer 的信念函数理论;以及 Zadeh、Dubois 和 Prade 的可能性理论。用户手册可应要求提供。

scnANNlib

SCN 人工神经网络库为程序员提供了一个简单的面向对象的 API,用于构建 ANN。目前,该库支持具有任意层数的非递归网络,每层具有任意数量的节点。它提供了使用动量进行训练的功能,并且计划在以后的版本中优雅地扩展库的功能。

UTCS 神经网络研究小组软件

与其他条目略有不同,这是一个软件集合的参考,而不是一个应用程序。它全部由 UTCS 神经网络研究小组 开发。以下是一些可用软件包的摘要:

各种 (C++) 神经网络

来自书籍《人工智能的模式识别基础》的示例神经网络代码。 这些是各种神经网络的简单示例代码。 它们非常适合作为简单实验和学习模拟器背后代码样子的良好起点。 此站点上提供的网络类型有:(用 C++ 实现)

3.2 连接主义软件工具包/应用程序

这些是各种应用程序、软件工具包等,旨在用于连接主义领域的研究。 它们的易用性会有所不同,因为它们的设计更多是为了满足特定的研究兴趣,而不是作为易于使用的商业软件包。

Aspirin - MIGRAINES

(am6.tar.Z 在 ftp 站点上)

我们现在发布的软件用于创建和评估前馈网络,例如那些与反向传播学习算法一起使用的网络。 该软件既面向希望根据自己的精确需求定制系统重要部分的专家程序员/神经网络研究人员,也面向希望以最少努力使用系统的普通用户。

DDLab

DDLab 是一个交互式图形程序,用于研究有限二元网络的动力学,与复杂性研究、涌现现象、神经网络以及理论生物学方面(如基因调控网络)相关。 可以设置具有规则 CA(1d 或 2d)和“随机布尔网络”(具有任意连接和异构规则的网络)之间任何架构的网络。 该网络也可能具有异构邻域大小。

Emergent

注意:这是 PDP++ 的后代

emergent 是一个全面的、功能齐全的神经网络模拟器,允许创建和分析世界中大脑的复杂、精细模型。 它侧重于定性分析和教学,同时也支持专业神经网络研究人员的工作流程。 GUI 环境允许用户快速构建基本网络,修改输入/输出模式,自动生成训练和测试网络所需的基本程序,并轻松利用多种数据处理和网络分析工具。 除了基本的预设网络训练和测试程序外,高级拖放编程界面(构建在脚本语言之上,该脚本语言可以完全内省地访问网络和软件本身的所有方面)允许编写程序,这些程序可以无缝地将网络的训练和环境的演变结合在一起,而无需键入一行代码。 网络及其所有状态变量都在 3D 中进行可视化检查,从而可以快速“视觉回归”网络动力学和机器人行为。

GENESIS

GENESIS(通用神经模拟系统 的缩写)是一个通用模拟平台,它被开发来支持神经系统的模拟,范围从单个神经元的复杂模型到由更抽象的神经元组件组成的大型网络的模拟。 GENESIS 为加州理工学院和伍兹霍尔海洋生物实验室以及其他几所机构的神经模拟实验室课程提供了基础。 当前大多数 GENESIS 应用涉及生物神经系统的真实模拟。 虽然该软件也可以模拟更抽象的网络,但其他模拟器更适合反向传播和类似的连接主义建模。

JavaBayes

JavaBayes 系统是一组工具,包含图形编辑器、核心推理引擎和解析器。 JavaBayes 可以产生

Jbpe

Jbpe 是一个反向传播神经网络编辑器/模拟器。

特点

Nengo

Nengo (Nengo 神经模拟器) 是一个基于图形和脚本的软件包,用于模拟大规模神经系统。

要使用它,您需要根据神经元组所代表的内容来定义神经元组,然后根据应对这些表示执行的计算在神经元组之间形成连接。 然后,Nengo 使用神经工程框架 (NEF) 来求解适当的突触连接权重,以实现所需的计算。 Nengo 还支持各种学习方式。 Nengo 帮助创建详细的尖峰神经元模型,以实现复杂的高级认知算法。

除其他外,Nengo 已被用于实现运动控制、视觉注意力、序列回忆、动作选择、工作记忆、吸引子网络、归纳推理、路径积分以及问题解决的规划。

Spaun http://models.nengo.ca/spaun 神经模拟器是在 Nengo 中实现的,其源代码也可用。

神经网络生成器

神经网络生成器是一种遗传算法,用于前馈神经网络的拓扑优化。 它实现了语义变化遗传算法和单元簇模型。 语义变化遗传算法是一种扩展的遗传算法,它允许通过种群分析快速动态地适应遗传编码。 单元簇模型是一种构建具有“骨干”结构的模块化前馈网络的方法。

注意:要在 Linux 上编译此程序,需要在 Makefile 中进行一项更改。 您需要将 '-ltermlib' 更改为 '-ltermcap'。

NEURON

NEURON 是一个可扩展的神经建模和模拟程序。 它允许您通过将多个一维截面连接在一起以形成任意细胞形态来创建复杂的神经模型,并允许您将多个膜特性插入这些截面(包括通道、突触、离子浓度和计数器)。 该界面旨在为神经建模人员提供直观的环境,并隐藏模拟中使用的数值方法的详细信息。

Neuroph

Neuroph 是一个轻量级的 Java 神经网络框架,用于开发常见的神经网络架构。 它包含设计良好、开源的 Java 库,其中包含少量与基本 NN 概念相对应的基本类。 还具有不错的 GUI 神经网络编辑器,可快速创建 Java 神经网络组件。

PDP++

注意:已重命名为 Emergent

随着连接主义建模领域的不断发展,对用于开发和测试连接主义模型的综合模拟环境的需求也在增长。 我们开发 PDP++ 的目标是将多个强大的软件开发和用户界面工具集成到一个通用模拟环境中,该环境既用户友好又用户可扩展。 该模拟器是用 C++ 编程语言构建的,并结合了最先进的脚本解释器,具有 C++ 的完整表达能力。 图形用户界面是使用 Interviews 工具包构建的,允许完全访问模拟器构建的数据结构和处理模块。 我们构建了几个有用的图形模块,以便于与神经网络的结构和内容进行交互,并且我们使更改和调整许多内容成为可能。 在编程级别,我们以使其用户扩展尽可能轻松的方式设置了事情。 程序员创建新的 C++ 对象,这些对象可能是新型单元或新型进程; 一旦编译并链接到模拟器中,这些新对象就可以像任何其他对象一样被访问和使用。

RNS

RNS(循环网络模拟器)是循环神经网络的模拟器。 也支持常规神经网络。 该程序使用反向传播算法的变体,但也包括其他(未经充分测试的)算法。

功能包括

Python 中的语义网络

semnet.py 模块定义了几个简单的类,用于构建和使用语义网络。 语义网络是一种表示知识的方式,它使程序能够在程序员几乎不费力的情况下进行简单的推理。

定义了以下类

使用这三种对象类型,您可以非常快速地定义关于一组对象的知识,并查询它们以获得逻辑结论。

SNNS

斯图加特神经网络模拟器(版本 4.1)。 一个很棒的神经网络模拟器。 比我见过的任何商业模拟器都好。 模拟器内核是用 C 语言编写的(速度很快!)。 它支持 20 多种不同的网络架构,具有基于 X 的 2D 和 3D 图形表示,2D GUI 具有集成的网络编辑器,并且可以用 C 语言生成单独的 NN 程序。 SNNS 非常强大,但起初有点难学。 为了帮助解决这个问题,它附带了许多架构的示例网络和教程。 ENZO,一个补充系统,允许您使用遗传算法进化您的网络。

TOOLDIAG

TOOLDIAG 是统计模式识别方法的集合。 主要应用领域是分类。 应用领域仅限于多维连续特征,没有任何缺失值。 不允许使用符号特征(属性)。 该程序用 'C' 编程语言实现,并在多种计算环境中进行了测试。

XNBC

XNBC v8 是一个模拟工具,适用于有兴趣使用用户友好工具模拟生物神经网络的神经科学家。

XNBC 是一个用于模拟生物神经网络的软件包。

提供四种神经元模型,三种现象学模型(xnbc、漏泄积分器和条件爆发器)和一个基于离子电导的模型。 模拟神经元的输入可以由存储在文件中的实验数据提供,从而可以创建“混合”网络。


4. 进化计算

进化计算实际上是编程技术的广义术语,包括遗传算法、复杂自适应系统、进化编程等。 所有这些技术的主要推动力都是进化的思想。 这种思想认为可以编写一个程序,该程序将进化以实现某个目标。 这个目标可以是任何东西,从解决一些工程问题到赢得一场比赛。

4.1 EC 类/代码库

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

ANNEvolve

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

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

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

EAP

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

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

daga

daga 是与 GALOPPS GA 软件兼容的 2 级遗传算法的实验性版本。 它是一个元 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 编写。它包括一个独立的应用程序和一个用于 Web 展示的小程序。细胞自动机可以用 Java、CDL 或使用交互式对话框来指定。该系统支持许多不同的格子几何形状(一维、二维正方形、六边形、三角形、三维)、邻域、边界条件,并且可以使用颜色、文本或图标显示单元格。

JGProg

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


5. 人工生命与复杂系统

人工生命采用了另一种探索智能奥秘的方法。它在许多方面与 EC 和连接主义相似,但对这些思想进行了元级别的扭曲。人工生命强调通过复杂自适应系统涌现行为来发展智能。人工生命强调智能的社会或群体基础方面。它试图理解生命和生存。通过研究“生物”群体的行为,人工生命试图发现智能或更高阶活动是如何从看似简单的个体中涌现出来的。细胞自动机和康威生命游戏可能是该领域最广为人知的应用。复杂系统(缩写为 CS)在方法上与人工生命非常相似,只是定义更通用(即,人工生命是一种复杂系统)。通常,复杂系统软件采用模拟器的形式。

5.1 人工生命与复杂系统类/代码库

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

AgentFarms

Agent Farms 是一个用于建模和模拟复杂的、基于多智能体的系统的系统。该系统可用于

Biome

Biome 是一个 C++ 库,旨在用于基于个体/基于智能体的模拟。它在某种程度上类似于 Swarm、EcoSim 或 Simex,但试图在不损害面向对象设计的情况下更高效、更少单体化。目前有一个基于事件的调度系统、一个 C++ 化的 Mersenne-Twister RNG、几个通用分析类、一些基于 Qt 的 GUI 类、一个非常基本的持久性/数据库框架(也用于参数存储)和许多其他有用的小东西。

CAGE

CAGE 是一个相当通用且完整的 Python 细胞自动机模拟引擎。它支持一维和二维自动机、各种预封装规则以及“智能体”的概念,这些智能体可以在地图上独立移动以实现智能体行为。

Cellular

Cellular 自动机编程系统由 Cellang 细胞自动机编程语言的编译器以及相应的文档、查看器和各种工具组成。教程和语言参考手册的 Postscript 版本可供那些想要更详细信息的人使用。Cellang 最重要的区别特征包括对以下内容的支持

Integrating Modelling Toolkit

Integrating Modelling Toolkit (IMT) 是一组通用的、全面的和可扩展的抽象,允许定义和使用可互操作的模型组件。建模者创建一个由 IMT“智能体”组成的 IMT“世界”,这些智能体将执行建模任务的特定阶段。IMT 智能体的核心集可以描述通用的、模块化的、分布式的模型组件,这些组件可以是 IMT 原生的,也可以集成现有的模拟工具包,专门用于从解释语言中的函数简单计算到空间显式模拟、模型优化、GIS 分析、可视化和高级统计分析的任务。IMT 智能体旨在轻松“粘合”到更高级别的模拟中,整合不同的建模范式和工具包。IMT 可以通过方便的插件机制轻松地由用户和开发人员扩展

MAML

当前版本的 MAML 基本上是 Objective-C 的扩展(使用 Swarm 库)。它由几个“宏关键字”组成,这些关键字定义了模拟的总体结构。其余部分必须用纯 swarm 代码填充。一个 MAML 到 Swarm 的编译器(名为 xmc)也在开发中,它将源代码编译成 swarm 应用程序。

MASON

MASON 代表 Multi-Agent Simulator Of Neighborhoods... 或 Networks... 或其他什么...

MASON 是一个快速的离散事件多智能体模拟库核心,用 Java 编写,旨在成为大型自定义 Java 模拟的基础,并且还为许多轻量级模拟需求提供足够的功能。MASON 包含一个模型库和一个可选的 2D 和 3D 可视化工具套件。

SimWorld

SimWorld 是一个免费的人工生命模拟(基于 Aaron Sloman 开发的免费 SimAgent 工具包),它提供了在模拟的连续环境中运行不同交互智能体和对象的功能。智能体由用强大的规则解释器编写的规则控制。无需任何编程知识即可定义智能体的新行为。

Swarm

swarm 人工生命模拟工具包。Swarm 是一个模拟环境,它有助于开发和实验涉及大量智能体在动态环境中行为和交互的模拟。它由用 Objective-C 编写的类和库的集合组成,并且在创建模拟和分析结果方面具有很大的灵活性。它带有三个演示和良好的文档。

5.2 人工生命与复杂系统软件包、应用程序等

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

Achilles

Achilles 是一个基于 Larry Yaeger 的 PolyWorld 的进化模拟。它使用 Hebbian 神经网络和一个极其简化的物理模型,该模型允许虚拟生物在模拟环境中自由交互。

Avida

计算机程序 Avida 是一个自适应遗传系统,主要设计用作人工生命研究的平台。Avida 系统基于类似于 Tierra 程序所采用的概念,也就是说,它是一个自复制字符串的种群,具有图灵完备的遗传基础,并受到泊松随机突变的影响。种群适应内在适应度景观(自我复制)和研究人员提供的外部施加(外在)适应度函数的组合。通过研究该系统,人们可以研究进化适应、生物系统的普遍特征(例如自组织)以及与理论或进化生物学和动态系统相关的其他问题。

Biogenesis

Biogenesis 是一个人工生命程序,它模拟生物进化过程中涉及的过程。它显示了基于彩色片段的生物,这些生物在 2D 环境中发生突变和进化。Biogenesis 基于 Primordial Life。

breve

Breve 是一个免费软件包,可以轻松构建去中心化系统和人工生命的 3D 模拟。用户定义 3D 世界中智能体的行为,并观察它们如何交互。Breve 包括物理模拟和碰撞检测,因此您可以模拟逼真的生物,以及 OpenGL 显示引擎,以便您可以可视化您模拟的世界。

BugsX

显示和进化生物形态。这是一个程序,它基于傅里叶正弦和余弦级数的参数图绘制生物形态,并让您使用遗传算法来操作它们。

Creatures Docking Station

这是 Creatures3 ALife 游戏的免费版本。它的物种较少,世界是一个小的“空间站”,但可以通过互联网连接到其他世界,并且(如果您拥有游戏的 Windows 版本)可以连接到您的 C3 世界。游戏本身围绕着繁殖和训练人工生命生物“诺恩斯”。据说它在乐趣和科学之间取得了很好的平衡。

(史蒂夫·格兰德编写的摘要包含在下面)

这款电脑游戏中的同名生物被称为诺恩斯,它们的全球种群数量一度徘徊在 500 万左右,使其比许多熟悉的自然物种更常见。每个诺恩斯都由数千个微小的模拟生物组件组成,例如神经元、生化物质、化学感受器、化学发射器和基因。诺恩斯的基因决定了如何组装这些组件以构成完整的生物,然后生物的行为从这些部分的相互作用中涌现出来,而不是被明确地“编程进去”。

诺恩斯有能力学习他们的环境,可以通过他们的主人向他们展示事物,或者通过他们自己的错误来学习。他们必须自己学习如何寻找食物以及如何与环境中的许多物体互动。他们可以与主人互动,使用简单的语言,也可以彼此互动。他们可以建立关系并繁殖后代,后代从父母那里继承他们的神经和生化结构,并且随着时间的推移能够进行开放式的进化。他们可能会感染各种疾病(以及遗传缺陷),并且可以用适当的药物治疗。

Critterding

Critterding 是一个 3D“培养皿”宇宙,展示了进化的人工生命。生物最初具有完全随机的大脑和身体,但会自动开始进化成具有更好生存技能的东西。这些生命形式被放置在一个人造环境中,在那里它们的神经网络“大脑”可以进化。

Telepathic-critterdrug 是 Critterding 的一个分支,引入了一种通信媒介(称为视网膜)和影响该视网膜的精神活性物质。

dblife & dblifelib

dblife: 用于 X11(和 curses)的精美生命游戏程序的源代码。它并非旨在非常快速(为此请使用 xlife :-))。但它的目的是允许轻松编辑和查看生命对象,并具有一些强大的功能。相关的 dblifelib 包是一个生命对象库,可与该程序一起使用。

dblifelib: 这是一个有趣的生命对象库,包括振荡器、飞船、喷射器和其他奇怪的东西。相关的 dblife 包包含一个生命程序,可以读取库中的对象。

Drone

Drone 是一个用于自动运行模拟程序批处理作业的工具。它允许扫描任意参数集,以及每个参数集的多次运行,每次运行都有单独的随机种子。这些运行可以在单台计算机上执行,也可以通过 Internet 在一组远程主机上执行。Drone 用 Expect(Tcl 脚本语言的扩展)编写,并在 Unix 下运行。它最初是为与 Swarm 基于智能体的模拟框架一起使用而设计的,但 Drone 可以与任何从命令行或输入文件读取参数的模拟程序一起使用。

EcoLab

EcoLab 是一个实现抽象生态模型的系统。它被编写为一组 Tcl/Tk 命令,以便可以通过编辑脚本轻松地动态更改模型参数。模型本身是用 C++ 编写的。

Framsticks

Framsticks 是一个三维生命模拟项目。生物的机械结构(“身体”)和控制系统(“大脑”)都被建模。可以设计各种类型的实验,包括简单的优化(通过进化算法)、协同进化、开放式和自发进化、不同的基因库和种群、多样的基因型/表型映射以及物种/生态系统建模。

Fluidiom

基于进化的生命平台。具有游戏般的感受,这使其在有趣的同时仍然允许进行一些有趣的实验。

它采用极简主义方法来构建身体的空间结构,以肌肉的形式增加关节,然后让进化接管,看看这些身体是否可以学会走路、跑步、爬行或滑行到另一个地方。

Game Of Life (GOL)

GOL 是康威生命游戏(一个简单的细胞自动机)和其他简单规则集的模拟器。这里的重点是速度和规模,换句话说,您可以设置大型且快速的模拟。

gant

该项目是广义 Langton 蚂蚁的 ANSI C++ 实现,它生活在一个环面上。

gLife

该程序与“康威生命游戏”类似,但又非常不同。它采用“康威生命游戏”并将其应用于社会(人类社会)。这意味着规则集与原始游戏非常不同(且更大)。需要考虑诸如地形、年龄、性别、文化、运动等因素

Golly

John Conway 生命游戏的开源、跨平台实现,具有无限宇宙,并且能够比以往更快、更远地运行模式。它具有许多功能,例如;

Langton's Ant

Langton's Ant 是有限状态细胞自动机的一个例子。蚂蚁(或蚂蚁)从网格开始。每个单元格要么是黑色,要么是白色。如果蚂蚁在黑色方格上,它会向右转 90 度并向前移动一个单位。如果蚂蚁在白色方格上,它会向左转 90 度并向前移动一个单位。当蚂蚁离开一个方格时,它会反转颜色。关于 Langton's Ant 的巧妙之处在于,无论您从什么模式字段开始,它最终都会构建一条“道路”,这是一系列 117 个步骤,无限期地重复,每次都使蚂蚁垂直和水平位移一个像素。

LEE

LEE(潜能环境)既是一个人工生命模型,也是一个软件工具,用于在该模型的框架内进行模拟。我们希望 LEE 将有助于理解理论、行为和进化生物学中的广泛问题。此处描述的 LEE 工具由大约 7,000 行 C 代码组成,并在 Unix 和 Macintosh 平台上运行。

MATREM

Matrem 是一个模拟生命的计算机程序。它属于新兴的“人工生命”科学,该科学通过模拟来研究进化和一般复杂系统。Matrem 也是一款游戏,玩家在其中竞争创造最合适的生命形式。他们的努力是该计划背后的驱动力。

Nanopond

Nanopond 是一个用 C 语言编写的“核心战争风格”的可进化指令集虚拟机器。它的设计类似于 Tierra 和 Avida,但体积更小更简单。1.0 版本仅重 840 行 C 代码,其中大部分是注释!它经过高度优化,并使用 SDL(Simple Directmedia Layer)库支持简单的颜色可视化。

可以通过阅读 Nanopond 源代码来了解更多信息,该源代码注释非常完善。

Noble Ape

Noble Ape Simulation 自 1996 年以来一直在开发(作为 Nervana Simulation)。该模拟的目的是创建一个详细的生物环境和一个认知模拟。该模拟旨在作为开源开发的调色板。它提供了一种模拟大规模环境和认知过程的稳定方法。

它具有许多自主模拟组件,包括景观模拟、生物模拟、天气模拟、有知觉的生物(Noble Ape)模拟和一个简单的智能体脚本语言(ApeScript)。

该代码目前(2007 年)被 Apple Inc 和 INTEL 用于处理器优化和性能调整。Apple 将其包含在他们的 CHUD 性能和调试开发人员工具集中。

Polyworld

PolyWorld 是我开发的计算生态学,用于探索人工生命中的问题。模拟生物进行有性生殖,互相战斗、杀死和吃掉对方,吃掉在世界各地生长的食物,并开发成功的生存策略或死亡。生物的整个行为套件(移动、转向、攻击、进食、交配、发光)由其神经网络“大脑”控制。每个大脑的架构——它的神经布线图——由其遗传密码决定,包括神经簇(兴奋性和抑制性神经元)的数量、大小和组成,以及这些簇之间连接的类型(连接密度和拓扑映射)。突触效力通过 Hebbian 学习进行调节,因此,原则上,生物体具有在生命过程中学习的能力。生物通过视觉感知他们的世界,视觉由每个生物视角的计算机图形渲染提供。生物的生理机能也被基因编码,因此大脑和身体,以及行为的所有组成部分,都会在多代人中进化。各种“物种”,具有不同的个体和群体生存策略,已经在各种模拟中出现,显示出诸如蜂拥/聚集、觅食和避免攻击等复杂的行为学行为。

POSES++

POSES++ 软件工具支持模型的开发和模拟。关于模拟技术,模型是真实或计划系统的合适再现,用于其模拟研究。

在所有工业部门或分支机构中,POSES++ 可以建模和模拟任何基于离散和不连续行为的任意系统。连续系统也大多可以像离散系统一样处理,例如,通过数量离散和批量处理。

Tierra

Tierra 是用 C 编程语言编写的。此源代码创建一个虚拟机及其操作系统,其架构的设计方式使得可执行机器代码是可进化的。这意味着机器代码可以突变(通过随机翻转位)或重组(通过在算法之间交换代码段),并且结果代码在足够多的时间内保持功能,以便自然(或可能是人工)选择能够随着时间的推移改进代码。

Trend

Trend 是一个通用的细胞自动机模拟环境,具有集成的**高级语言编译器**、漂亮的图形用户界面以及快速的三级缓存模拟引擎。该模拟系统用于发现第一个涌现的自复制细胞自动机规则集,以及第一个解决问题的自复制循环。

由于其模拟器在细胞空间大小、细胞结构、邻域结构和细胞自动机规则方面非常灵活,Trend 可以模拟几乎所有一维或二维细胞自动机模型。它还具有智能回溯功能,通过允许用户返回到模拟的先前阶段,大大简化了规则集开发!凭借其他高级功能,Trend 可能是最易于使用的二维细胞自动机模拟器。

还提供 jTrend。Trend 的 Java 版本。

XLIFE

该程序将为 John Horton Conway 的生命游戏进化模式。它还将处理具有正交邻域和最多 8 个状态的通用细胞自动机(可以重新编译以获得更多状态,但在内存中非常昂贵)。为 E. F. Codd 的 8 状态自动机、Wireworld 自动机以及一整类“囚徒困境”游戏提供了转换规则和示例模式。

Xtoys

xtoys 包含一组用于 X windows 的细胞自动机模拟器。包含的程序有


6. 智能体与机器人

用于执行任务的计算机软件大脑。从娱乐和游戏到数据挖掘再到物理机器人,应有尽有。这是人工智能的一个伟大的业余爱好者领域,有许多感兴趣的领域可以追求。我将其大致分为 2 个部分。用于纯粹基于软件的智能体的人工智能,以及用于具身智能体(即使只是模拟)的人工智能。

6.1 软件智能体

也称为智能软件代理或简称代理,人工智能研究的这个领域处理的是小型程序的简单应用,这些程序旨在辅助用户的工作。它们可以是移动的(能够在一台机器上停止执行并在另一台机器上恢复执行)或静态的(驻留在一台机器中)。它们通常是特定于任务的(因此相当简单),旨在像助手一样帮助用户。

2APL

2APL(发音为 double-a-p-l)是一种面向代理的编程语言,有助于实现多代理系统。在多代理层面,它提供了编程结构,用于根据一组独立的代理、一组它们可以执行动作的环境以及独立代理和环境之间的访问关系来指定多代理系统。在独立代理层面,它提供了编程结构,用于基于 BDI 架构实现认知代理。

3APL

3APL 是一种用于实现认知代理的编程语言。它提供了编程结构,用于实现代理的信念、目标、基本能力(例如信念更新、外部动作或通信动作)以及一组实用推理规则,通过这些规则可以更新或修改代理的目标。3APL 程序在 3APL 平台上执行。每个 3APL 程序都通过解释器执行,该解释器审议该代理的认知态度。

Agent

Agent 是信息代理系统的原型。它是平台和语言独立的,因为它将包含的信息存储在简单的打包字符串中。它可以打包并跨任何格式的网络传输,因为它将其自身冻结在其当前状态。

agentTool

agentTool 是一个基于 Eclipse 的图形化开发环境,旨在帮助用户分析、设计和实现多代理系统。它旨在支持高度可定制的基于组织的多代理系统工程 (O-MaSE) 方法论。agentTool 目前支持所有 O-MaSE 模型,包括目标模型、代理模型、角色模型、组织模型、协议模型、计划模型、能力-动作模型、领域模型和策略模型。

Aglets Workbench

Aglet 是一个 Java 对象,可以从互联网上的一台主机移动到另一台主机。也就是说,在一个主机上执行的 aglet 可以突然停止执行,派遣到远程主机,并在那里恢复执行。当 aglet 移动时,它会随身携带其程序代码以及其状态(数据)。内置的安全机制使计算机托管不受信任的 aglet 是安全的。Java Aglet API (J-AAPI) 是一个提议的公共标准,用于连接 aglet 及其环境。J-AAPI 包含用于初始化 aglet、消息处理和派遣、撤回、停用/激活、克隆和处置 aglet 的方法。J-AAPI 简单、灵活且稳定。应用程序开发人员可以编写平台独立的 aglet,并期望它们在任何支持 J-AAPI 的主机上运行。

AJA

AJA (Adaptable Java Agents,可适应的 Java 代理) 由两种编程语言组成。HADL(Higher Agent Definition Language,更高级代理定义语言)是一种更高级别的语言,用于描述主要的代理部分。Java+ 是较低级别的语言,用于编程在 HADL 中定义的代理部分。它实际上是用用于访问在 HADL 中定义的更高级别代理部分的结构来丰富 Java。

A.L.I.C.E.

ALICE 软件实现了 AIML(Artificial Intelligence Markup Language,人工智能标记语言),这是一种非标准演进的标记语言,用于创建聊天机器人。AIML 的主要设计特点是极简主义。与其他聊天机器人语言相比,AIML 可能是最简单的。模式匹配语言非常简单,例如,每个模式只允许一个通配符 ('*') 匹配字符。AIML 是一种 XML 语言,这意味着它遵守某些语法元规则。选择 XML 语法允许与其他工具(如 XML 编辑器)集成。XML 的另一个动机是其熟悉的外观和感觉,特别是对于有 HTML 经验的人来说。

APRIL

APRIL 是一种符号编程语言,专为编写移动、分布式和基于代理的系统而设计,尤其是在互联网环境中。它具有高级功能,例如宏子语言、异步消息发送和接收、代码移动性、模式匹配、高阶函数和强类型。该语言被编译为字节码,然后由 APRIL 运行时引擎解释。APRIL 现在需要安装 InterAgent Communications Model (ICM) 才能安装。[编者注:ICM 可以在同一网站找到]

Ara

Ara 是一个平台,用于在异构网络中便携且安全地执行移动代理。从这个意义上讲,移动代理是在执行过程中能够更改其主机,同时保留其内部状态的程序。这使它们能够本地处理交互,否则这些交互必须远程执行。与类似平台相比,Ara 的具体目标是在提供完整移动代理功能的同时,尽可能多地保留已建立的编程模型和语言。

Bee-gent

Bee-gent 是一种新型的开发框架,因为它是一个 100% 纯代理系统。与仅部分使用代理的其他系统相反,Bee-gent 完全“代理化”了软件应用程序之间发生的通信。应用程序成为代理,所有消息都由代理携带。因此,Bee-gent 允许开发人员构建灵活的开放式分布式系统,从而优化现有应用程序的使用。

Bond

Bond 是一个基于 Java 的分布式对象系统和代理框架。它实现了基于消息的中间件和相关的服务,如目录、持久性、监控和安全性。Bond 允许轻松构建多代理分布式应用程序。Bond 的另一个应用将是虚拟实验室,支持数据注释和元计算。

Cougaar

Cougaar 是一个基于 Java 的架构,用于构建大规模分布式基于代理的应用程序。它是一个多年的 DARPA 研究项目的成果,该项目旨在研究大型代理系统,不仅包括核心架构,还包括各种演示、可视化和管理组件,以简化复杂分布式应用程序的开发。[又一个基于 java 的代理系统 -- 编者注]

D'Agent (曾用名 AGENT TCL)

可传输代理是一个程序,可以在异构网络中的机器之间迁移。程序选择何时何地迁移。它可以任意点暂停执行,传输到另一台机器,并在新机器上恢复执行。例如,携带邮件消息的代理首先迁移到路由器,然后迁移到收件人的邮箱。代理可以在每台机器上执行任意复杂的处理,以确保消息到达预期的收件人。

DIET Agents

DIET Agents 是一个轻量级、可扩展且健壮的 Java 多代理平台。它特别适合快速开发 P2P 原型应用程序和/或自适应的分布式应用程序,这些应用程序使用自下而上、受自然启发的的技术。

FishMarket

FM - 在人工智能研究所 (IIIA-CSIC) 进行的 FishMarket 项目试图通过开发 FM 在该方向上做出贡献,FM 是一个代理介导的电子拍卖行,已发展成为电子拍卖市场的试验平台。该框架被构思和实现为 FM96.5(Fishmarket 拍卖行的 Java 版本)的扩展,允许根据鱼市场拍卖(荷兰式拍卖)定义交易场景。FM 提供了框架,代理设计者可以在其中进行受控实验,从而可以指定、激活和记录多种不同程度的真实性和复杂性的实验市场场景(我们将其视为锦标赛场景,因为该领域的竞争性质);并比较、调整和评估异构的(人类和软件)交易(买方和卖方)代理。

Grasshopper

另一个 Java 代理系统。功能齐全且正在积极开发中。商业化,但免费。历史上针对嵌入式系统。

Hive

Hive 是一个用于创建分布式应用程序的 Java 软件平台。使用 Hive,程序员可以轻松创建连接和使用来自整个互联网的数据的系统。Hive 的核心是一个分布式代理生存、通信和移动以完成应用程序的环境。我们正在努力使互联网充满活力。

ICM

Inter-Agent Communication Model (ICM,代理间通信模型) 是一种通信机制,可用于在代理之间以异步方式发送消息。其预期应用领域是作为代理通信语言 (ACL)(如 KQML 和 FIPA 的 ACL)的传输机制。

Jacomma

Jacomma 是一个代理开发平台/框架,用于在 Java 和 JPython 中开发具有异构通信能力的可分布式、移动和反应式信息代理。

Jacomma 提供了一个开发框架和一个执行环境,它位于 Inter-Agent Communication Model 基础设施之上。ICM 定义了一个通信协议、一个存储转发消息传递架构以及用于消息交换的底层通信基础设施。通信是真正的异步的,基于 TCP 套接字。

ICM 在本 howto 中有一个条目,或者您可以通过该站点的链接找到它。

Jade

JADE (Java Agent DEvelopment Framework,Java 代理开发框架) 是一个完全用 Java 语言实现的软件框架。它通过一个声称符合 FIPA 规范的中间件以及一组支持调试和部署阶段的工具,简化了多代理系统的实现。代理平台可以分布在多台机器上(甚至不需要共享相同的操作系统),并且可以通过远程 GUI 控制配置。配置甚至可以在运行时更改,方法是根据需要将代理从一台机器移动到另一台机器。

JAM Agent

JAM 支持自顶向下、基于目标的推理和自下而上数据驱动的推理。如果未使用元级别推理,JAM 会根据最大优先级选择目标和计划;如果存在用户开发的元级别推理计划,则使用这些计划。JAM 对目标和目标实现的概念化更加经典(UMPRS 比真正基于目标的更基于行为表现),并区分了实现目标的计划和仅编码行为的计划。实现的目标类型包括成就(达到指定的世界状态)、维护(重新达到指定的世界状态)和性能。支持执行多个同时进行的目标,每个目标(即意图)线程都具有暂停和恢复能力。JAM 计划具有显式的前提条件和运行时属性,这些属性限制了它们的适用性、后置条件属性以及计划属性部分,用于指定计划/领域特定的计划功能。可用的计划构造包括:排序、迭代、子目标化、原子(即不可中断)计划片段、n 分支确定性和非确定性条件执行、多个计划片段的并行执行、基于目标或基于世界状态的同步、显式失败处理部分以及通过将其构建到 JAM 以及通过 Java 的反射能力调用预定义的(即遗留的)类成员而无需将其构建到 JAM 中的 Java 原始函数定义。

JASA

JASA 是一种高性能拍卖模拟器,适用于在基于代理的计算经济学中进行实验。它实现了计算经济学文献中描述的各种拍卖机制、交易策略和实验,并且随着软件的成熟,我们希望它将成为常用机制、策略和学习算法的参考实现的存储库。

Jason

一个基于 Java 的解释器,用于 AgentSpeak 的扩展版本。与其他 BDI(信念-欲望-意图)代理工具不同,Jason 实现了 AgentSpeak 的操作语义,AgentSpeak 是一种在文献中广泛讨论的 BDI 逻辑编程语言。它在 GNU LGPL 下作为开源软件提供。

JATLite

JATLite 提供了一组 Java 包,使使用 Java 构建多代理系统变得容易。JATLite 仅提供轻量级、小型的软件包集合,以便开发人员可以轻松处理所有软件包。为了灵活性,JATLite 提供了从抽象到路由器实现的四个不同层。用户可以访问我们提供的任何层。每一层都有一组不同的假设。用户可以根据层上的假设和用户的应用程序选择合适的层。介绍页面包含 JATLite 功能和每一层的假设集。

JATLiteBeans

Java(tm) Agent Template

JAT 提供了一个功能齐全的模板,完全用 Java 语言编写,用于构建软件代理,这些代理与分布在互联网上的其他代理社区进行对等通信。尽管定义每个代理的代码部分是可移植的,但 JAT 代理不是迁移的,而是在单个主机上静态存在。这种行为与许多其他“代理”技术形成对比。(但是,使用 Java RMI,JAT 代理可以通过驻留在该主机上的代理动态迁移到外国主机)。目前,所有代理消息都使用 KQML 作为顶级协议或消息包装器。JAT 包括动态交换“资源”的功能,这些资源可以包括 Java 类(例如,新语言和解释器、远程服务等)、数据文件和内联到 KQML 消息中的信息。

lyntin

Lyntin 是一个可扩展的 Mud 客户端和框架,用于创建自主代理或机器人,以及一般的 mudding 游戏。Lyntin 以 Python 为中心,Python 是一种动态、面向对象且有趣的编程语言,并且基于 TinTin++,一个可爱的 mud 客户端。

Mole

Mole 是一个代理系统,支持用 Java 编程的移动代理。Mole 的代理由对象集群组成,这些对象不引用外部,并且作为一个整体处理用户或其他代理给定的任务。它们能够自主漫游“位置”网络。这些“位置”是底层网络中真实存在的节点的抽象。它们可以通过与代表这些服务的专用代理通信来使用特定位置的资源。代理能够使用其他代理提供的服务,并且也能够提供服务。

Narval

Narval 是 “Network Assistant Reasoning with a Validating Agent Language”(使用验证代理语言的网络助手推理)的首字母缩写。它是一个基于人工智能和代理技术的个人网络助手。它执行配方(动作序列)来执行任务。使用 XML 指定新动作很容易,并使用 Python 实现它。可以使用图形界面构建和调试配方。

NeL

NeL 实际上是一个游戏开发库(用于大型多人游戏),但我在这里包含它是因为它(将)包含一个相当大的 AI 库。以下是来自白皮书的简介

AI 库的目的是提供一种务实的方法来创建分布式代理平台。它的重点是代理;独立的实体,它们使用动作-反应模型进行通信,而与位置无关。

OAA

Open Agent Architecture (OAA,开放代理架构) 是一个框架,其中运行在分布式机器上的软件代理社区可以协同工作,完成社区中人类或非人类参与者分配的任务。分布式协作和高级通信是 OAA 基础的两个核心思想。

它定义了一种代理间通信语言,并支持多个平台和编程语言。

OpenCV

OpenCV (Open Source Computer Vision,开源计算机视觉) 是一个编程函数库,主要用于实时计算机视觉。

OpenCV 库的示例应用包括人机交互 (HCI);对象识别、分割和识别;人脸识别;手势识别;运动跟踪、自我运动、运动理解;从运动中恢复结构 (SFM);和移动机器人技术。

OpenCog

Open Cognition Framework (OpenCog,开放认知框架) 是用于协同开发安全且有益的人工通用智能的软件。

OpenCog 为科研科学家和软件开发人员提供了一个通用平台,用于构建和共享人工智能程序。该框架包括

OpenSteer

OpenSteer 是一个 C++ 库,旨在帮助构建游戏和动画中自主角色的转向行为。OpenSteer 提供了一个应用程序,其中显示了转向行为的预定义演示。您可以原型设计、可视化和调试您自己的插件。

ORTS

ORTS 是一个编程环境,用于研究实时 AI 问题,例如在 RTS 游戏领域中的寻路、处理不完善的信息、调度和规划。这些游戏节奏快且非常受欢迎。此外,RTS 游戏 AI 的当前状态黯淡,这主要是由于缺乏规划和学习 - 人类在这方面目前比机器强得多。因此,RTS 游戏成为实时 AI 研究的理想试验平台。不幸的是,商业 RTS 游戏是封闭软件,这阻止了研究人员将远程 AI 模块连接到它们。此外,商业 RTS 游戏基于点对点技术 - 简而言之,它在所有玩家机器上运行整个模拟,并且只是向玩家隐藏了部分游戏状态。通过篡改客户端软件,可以泄露整个游戏状态,从而获得不公平的优势。我们认为这对于在互联网上玩游戏是不可接受的。因此,我们启动了 ORTS 项目,以创建一个自由软件系统,使人和机器可以公平地玩 RTS 游戏。通信协议是公开的,所有源代码和艺术作品都是免费提供的。用户可以连接他们喜欢的任何客户端软件。这通过服务器/客户端架构成为可能,在该架构中,只有游戏状态的当前可见部分被发送给玩家。这种开放性带来了新的和有趣的可能,从自主 AI 玩家的在线锦标赛到衡量他们的比赛实力,再到混合系统,在混合系统中,人类玩家使用精密的 GUI,这使他们可以将任务委托给性能不断提高的 AI 助手模块。

Penguin!

Penguin 是一个 Perl 5 模块。它为您提供了一组函数,使您能够

这些函数的组合使直接 Perl 编码算法能够处理安全的互联网商务、移动信息收集代理、“实时内容”网络浏览器助手应用程序、分布式负载均衡计算、远程软件更新、远程机器管理、基于内容的信息传播、全互联网范围的共享数据应用程序、网络应用程序构建器等等。

Ps-i

Ps-i 是一个用于运行基于代理的模拟的环境。它是跨平台的,并为 Win32 提供二进制文件。功能包括

Pyro

Pyro 是一个库、环境、图形用户界面和底层驱动程序,用于使用 Python 语言探索 AI 和机器人技术。它适用于许多真实机器人平台和模拟器。广泛的算法,包括基于行为、视觉(运动跟踪、斑点等)、学习(反向传播、自组织映射等)、进化等等。

Quackle

Quackle 是一款世界级的填字游戏人工智能和分析工具。它包括一个移动生成器、模拟器和基于 Qt 的用户界面,并且可以与任何棋盘布局、字母表、词典和瓷砖分布一起使用。

Recast

Recast 是用于游戏的先进导航网格构建工具集。

该库可免费用于商业用途,并在 ZLib 许可证下开源。

Recast 附带 Detour,寻路和空间推理工具包。您可以将任何导航网格与 Detour 一起使用,但当然使用 Recast 生成的数据非常合适。

Detour 提供简单的静态导航网格,适用于许多简单的情况,以及分块导航网格,它允许您插入和拔出网格的片段。分块网格允许创建系统,您可以在玩家推进关卡时流式传输新的导航数据,或者您可以在世界变化时重新生成瓷砖。

Remembrance Agents

Remembrance Agents 是一组应用程序,它们监视用户的肩膀并建议与当前情况相关的信息。虽然基于查询的记忆辅助工具可以帮助直接回忆,但 remembrance agents 是一种增强的联想记忆。例如,RA 的文字处理器版本会持续更新与在 emacs 缓冲区中键入或阅读内容相关的文档列表。这些建议的文档可以是任何可能与您当前正在编写或阅读的内容相关的文本文件。它们可能是与您当前正在阅读的邮件相关的旧电子邮件,或者讨论您的写作主题的论文和报纸文章的摘要。

SimAgent

SimAgent 工具包为研究和教学提供了广泛的资源,这些资源与各种程度和复杂程度的环境中交互代理的开发相关。它可以作为纯模拟工具运行,也可以安装在具有功能足够强大的车载计算机的机器人中,例如运行 linux。它最初是为支持对类人智能代理的探索性研究而开发的,但也已用于学生项目,开发各种交互式游戏和模拟。

spyse

spyse 是一个开发框架和平台,用于使用 Python 编程语言构建多代理系统。多代理系统 (MAS) 结合了分布式计算和人工智能的概念。代理是自主推理软件实体,可以协作(或竞争)以实现(共同)目标。通过合作,它们在系统中创建涌现行为(分布式人工智能)。MAS 的架构在 FIPA 标准中指定。

Spyse 提供了多种推理方式(BDI 逻辑、CLIPS 专家外壳等)以及本地和远程通信方式。

每个代理都有自己的控制线程。平台实例内部和之间的代理通过交换基于本体的消息进行通信。Spyse 使用为语义网定义的 Web Ontology Language (OWL)。

TKQML

TKQML 是 KQML 应用程序/Tcl/Tk 的附加组件,它允许基于 Tcl 的系统轻松地与强大的代理通信语言进行通信。

The Tocoma Project

代理是一个进程,它可以通过计算机网络迁移以满足客户端发出的请求。代理是描述全网络范围计算的一种有吸引力的方式。

TACOMA 项目专注于操作系统对代理的支持,以及如何使用代理来解决传统上由操作系统解决的问题。我们已经实施了一系列原型系统来支持代理。

TACOMA 1.2 版基于 UNIX 和 TCP。该系统支持用 C、Tcl/Tk、Perl、Python 和 Scheme (Elk) 编写的代理。它是用 C 实现的。此 TACOMA 版本自 1996 年 4 月起已进入公共领域。

我们目前专注于异构性、容错性、安全性和管理问题。此外,还在构建几个 TACOMA 应用程序。我们使用 TACOMA 和 Java 实现了 StormCast 4.0,一个可通过互联网访问的广域网络天气监控系统。我们现在正在评估此应用程序,并计划构建一个新的 StormCast 版本,该版本将于 1997 年 6 月完成。

UMPRS Agent

UMPRS 支持自顶向下、基于目标的推理,并根据最大优先级选择目标和计划。支持执行多个同时进行的目标,每个目标(即意图)线程都具有暂停和恢复能力。UMPRS 计划具有集成的先决条件/运行时属性,这些属性约束了它们的适用性。可用的计划构造包括:排序、迭代、子目标化、原子(即不可中断)块、n 分支确定性条件执行、显式失败处理部分以及 C++ 原始函数定义。

WebMate

WebMate 是一款用于万维网浏览和搜索的个人代理。当您在互联网上旅行时,它会陪伴您,并为您提供您想要的东西。

功能包括

6.2 机器人技术和模拟器

从有趣的战斗机器人游戏到完整的机器人控制系统。这个想法是现实世界中的物理代理,或者至少是它们的控制程序。

BattleBots

AI 编程游戏,您可以通过选择硬件和编程其 CPU 来设计机器人,然后与其他机器人竞争。比赛可以有团队和游戏的特殊规则。

用于您的机器人的硬件包括武器、引擎、扫描仪、CPU 等。编程语言取决于 CPU 类型,类似于汇编语言。

Cadaver

Cadaver 是一个实时仿生人和自然世界模拟环境。战场由森林、谷物、水、草、尸体(当然)和许多其他事物组成。游戏服务器管理游戏和规则。您启动一个服务器并连接一些客户端。客户端使用非常原始的协议与服务器通信。他们可以命令仿生人收割谷物、攻击敌人或砍伐森林。此游戏不适合人类游玩!有太多东西需要控制。仅限铁杆玩家:只需 telnet 到服务器,您就可以手动输入命令。相反,其理念是您编写人工智能客户端来击败其他人工智能。您可以选择您喜欢的语言(和操作系统)来完成这项任务。编写一个在标准输入和标准输出通道上通信的程序就足够了。然后您可以使用 “socket” 等程序将您的客户端连接到服务器。不需要编写 TCP/IP 代码,尽管我这样做了 :) 为了使战斗不枯燥,因此有所谓的 spyboss 客户端,可在屏幕上以图形方式显示动作。

卡门 (Carmen)

CARMEN,卡内基梅隆机器人导航工具包。CARMEN 是一个用于移动机器人控制的开源软件集合。CARMEN 是模块化软件,旨在提供基本的导航原语,包括:底座和传感器控制、日志记录、避障、定位、路径规划和地图绘制。

CLARAty

CLARAty 是一个用于可重用机器人软件的集成框架。它为常见的机器人功能定义了接口,并集成了任何给定功能的多种实现。此类功能的示例包括姿态估计、导航、运动和规划。除了支持多种算法外,它还提供对多种机器人平台的适配。

这是 NASA 火星探测车项目中使用的部分代码的公开发布版本。它在非商业用途的免费许可下发布,包含大量模块和算法以及广泛的文档。

GNU 机器人 (GNU Robots)

GNU 机器人是一个游戏/消遣,您可以在其中为一个小型机器人构建程序,然后观看它探索世界。世界充满了会伤害你的坏人、你可以撞到的物体以及你可以吃的食物。游戏的目标是在被坏人杀死或耗尽能量之前收集尽可能多的奖品。机器人可以用 Guile scheme 语言或使用 GUI 编写。

Infon 战斗竞技场 (Infon Battle Arena)

Infon 战斗竞技场是一个联网的多人实时编程游戏,其中小生物为食物而战。您可以使用 telnet 接口将您的生物代码(用 Lua 编写)上传到游戏服务器。然后游戏服务器运行您的代码。图形客户端可用于观看正在运行的游戏或重放录制的游戏。

Khepera 模拟器 (Khepera Simulator)

Khepera 模拟器是由 Olivier MICHEL 在法国尼斯-索菲亚安提波利斯大学 CNRS 的 URA 1376 实验室 I3S 准备博士论文期间编写的公共领域软件包。它允许您使用 C 或 C++ 语言为移动机器人 Khepera 编写自己的控制器,在模拟环境中对其进行测试,并具有漂亮的多彩 X11 图形界面。此外,如果您拥有 Khepera 机器人,它可以使用相同的控制算法驱动真实的机器人。它主要面向研究自主代理的研究人员。

MRPT

移动机器人编程工具包 (Mobile Robot Programming Toolkit, MRPT) 是一个广泛的、跨平台的开源 C++ 库,旨在帮助机器人研究人员设计和实现同步定位与地图构建 (Simultaneous Localization and Mapping, SLAM)、计算机视觉和运动规划(避障)领域的算法。

尼禄 (Nero)

神经进化机器人特工 (Neuro-Evolving Robotic Operatives),简称 NERO,是一款独特的电脑游戏,可让您亲身体验自适应智能代理。通过调整您自己的机器人军队的人工大脑以应对具有挑战性的任务来进化它们,然后在在线竞赛中让他们与您朋友的团队对抗!

该项目的目标是:(1) 展示最先进的机器学习技术的强大功能,(2) 创建一个基于此技术的引人入胜的游戏,以及 (3) 为人工智能研究人员提供一个强大且具有挑战性的开发和基准测试领域。

闭源但可以免费下载。他们正在开发 OpenNERO,它将是开源的,并且更倾向于作为研究平台。

奥卡 (Orca)

奥卡 (Orca) 是一个用于开发基于组件的机器人系统的开源框架。它提供了定义和开发构建块的方法,这些构建块可以组合在一起,形成任意复杂的机器人系统,从单个车辆到分布式传感器网络。

播放器 (Player)

Player 是一个设备服务器,为各种传感器和执行器(例如,机器人)提供强大而灵活的接口。由于 Player 使用基于 TCP 套接字的客户端/服务器模型,因此可以使用任何编程语言编写机器人控制程序,并且可以在任何具有网络连接到机器人的计算机上执行。此外,Player 支持与设备的多个并发客户端连接,为分布式和协作式传感和控制创造了新的可能性。

实时战斗 (RealTimeBattle)

RealTimeBattle 是一款编程游戏,其中由程序控制的机器人相互战斗。目标是摧毁敌人,使用雷达检查环境并使用加农炮射击。

Robocode

一款基于 Java 的机器人战斗编程游戏。它提供了一个简单的 API 和类框架。它被设计为学习 Java 的一种手段,并且易于开始使用,同时又不会限制程序员使用更高级的技术。它具有内置的安全管理器,可以安全地运行其他人的机器人。

Robodeb

Robodeb 是一个完整的机器人技术仿真环境,用于教授并发性和并行性。它为探索并发性和机器人技术提供了一个独特的环境。它为 occam-pi 编程语言提供了一个完整的 IDE,并利用 Transterpreter,我们为该语言提供的可移植且灵活的运行时。这种组合至关重要,因为它为 Player/Stage API(一组广泛使用的用于控制 Pioneer3 机器人平台的库)提供了原则性的接口。

RobotFlow

RobotFlow 是一个基于 FlowDesigner 项目的移动机器人工具包。FlowDesigner 是一种面向数据流的架构,类似于 Simulink (Matlab) 或 Labview,它是免费的 (LGPL) 且通用的。FlowDesigner 项目中提供的可视化编程界面将通过使用图形探针和实时调试,帮助人们更好地可视化和理解机器人的控制回路、传感器、执行器中真正发生的事情。

RoboTournament

RoboTournament 是一款受 RoboRally 启发的游戏,玩家在其中编程他们的机器人来击败对手。RoboTournament 的功能包括:多种游戏类型:死亡竞赛、拉力赛和夺旗赛。通过 TCP/IP 进行多人游戏,包括 BFG 在内的六种武器、地图编辑器以及各种各样的棋盘元素。

ROS

ROS 是您机器人的操作系统。它提供您期望从操作系统获得的服务,包括硬件抽象、低级设备控制、常用功能的实现、进程间消息传递和包管理。它还提供用于获取、构建、编写和跨多台计算机运行代码的工具和库。

Simbad

Simbad 是一个用于科学和教育目的的 Java 3D 机器人模拟器。它主要面向希望为研究情境化人工智能、机器学习以及更广泛的人工智能算法奠定简单基础的研究人员/程序员,背景是自主机器人技术和自主代理。它不打算提供真实世界的模拟,并且有意保持可读性和简单性。

Simbad 使程序员能够编写自己的机器人控制器,修改环境并使用可用的传感器。不要将其视为最终产品,而仅仅是一个开放的框架,用于测试您自己的想法。

SimRobot

SimRobot 是一个用于在 3D 环境中模拟基于传感器的机器人的程序。它用 C++ 编写,在 UNIX 和 X11 下运行,并且需要图形工具包 XView。

TclRobots

TclRobots 是一款编程游戏,类似于“Core War”。要玩 TclRobots,您必须编写一个控制机器人的 Tcl 程序。机器人的任务是在与其他机器人的战斗中幸存下来。两、三或四个机器人在一场战斗中竞争,每个机器人运行不同的程序(或可能在不同的机器人中运行相同的程序)。每个机器人都配备了扫描仪、加农炮、驱动机构。一场比赛持续到只剩下一个机器人运行。机器人可以单独竞争,也可以在团队导向的战斗中结合。锦标赛可以使用任意数量的机器人程序运行,每个机器人在循环赛中与其他机器人一对一比赛。战斗模拟器可用于帮助调试机器人程序。

TclRobots 程序提供了一个物理环境,施加了所有机器人必须遵守的某些游戏参数。TclRobots 还提供了战斗的视图和控制用户界面。TclRobots 要求:从 Tcl 7.4 和 Tk 4.0 构建的 wish 解释器。

URBI

URBI 是通用实时行为接口 (Universal Real-time Behavior Interface),它为您提供了一种简单而强大的方式来控制任何机器人或复杂系统(如视频游戏),使用方便易用的脚本语言,该语言可以与几种流行的编程语言(C++、Java、Matlab 等)和操作系统(Windows、Mac OSX、Linux)连接。URBI 基于客户端/服务器架构,这提供了很大的灵活性。与现有的脚本解决方案相比,URBI 包含强大的功能:命令的并行执行、事件编程、命令标记、动态变量等。目前,URBI 也被学术研究实验室、工业界和业余爱好者使用。

VWORLD

Vworld 是一个用于研究自主代理的模拟环境,用 prolog 编写。它目前处于 beta 阶段。它与 SWI-prolog 配合良好,但只需稍作更改即可与 Quitnus-prolog 配合使用。它被设计为课堂项目中处理 prolog 和自主代理的教育工具。它带有三个演示世界或环境,以及它们的示例代理。现在有两个版本。一个为 SWI-prolog 编写,一个为 LPA-prolog 编写。文档大致完成(考虑到学生/教授框架)。

Yampa

FRP 系统,带有机器人库和图形交互式机器人模拟器。

函数式反应式编程 (Functional reactive programming),或 FRP,是一种用于以高级声明方式对混合系统(即包含连续和离散组件组合的系统)进行编程的范例。FRP 的关键思想是其连续、随时间变化的值以及离散事件的时间排序序列的概念。Yampa 是 FRP 作为嵌入在 Haskell 中的特定领域语言的实例化。

YARP

YARP 是机器人软件的管道。它是一组库、协议和工具,用于保持模块和设备之间的清晰解耦。它是勉强的中间件,不渴望或期望控制您的系统。

更具体地说,YARP 支持将机器人控制系统构建为以对等方式通信的程序集合,具有一系列连接类型,可满足高级机器人技术多样化、有时矛盾且始终变化的需求。我们还鼓励以面向未来的方式编译和使用硬件设备。我们的战略目标是提高机器人软件项目的寿命。


7. 统计与机器学习 (Statistical & Machine Learning)

所有关于让机器学习做某事,而不是显式编程来做某事。倾向于处理大量模式匹配,并且在很大程度上基于数学和统计。从技术上讲,连接主义 (Connectionism) 属于这一类,但它是一个如此庞大的子领域,我将其放在单独的部分中。

7.1 库 (Libraries)

用于编写机器学习系统的库或框架。

认知铸造厂 (CognitiveFoundry)

认知铸造厂 (Cognitive Foundry) 是一个模块化的 Java 软件库,用于认知系统的研究和开发。它包含许多用于机器学习、统计和认知建模的可重用组件。它主要设计为易于插入应用程序以提供自适应行为。

CompLearn

CompLearn 是一个软件系统,旨在支持各种应用中基于压缩的学习。它以库的形式提供这种支持,该库用高度可移植的 ANSI C 编写,可在大多数现代计算机环境中运行,且不会造成混淆。它还提供了一小组简单的、可组合的命令行实用程序,作为使用此库的简单应用程序。CompLearn 与其他常用的机器学习工具(如 LibSVM 和 GraphViz)一起,构成了机器学习框架和工具包中颇具吸引力的产品。

Elefant

Elefant(高效学习、大规模推理和优化工具包)是一个在 Mozilla 公共许可证 (MPL) 下获得许可的机器学习开源库。我们开发了一个开源机器学习工具包,它提供

最大熵工具包 (Maximum Entropy Toolkit)

最大熵工具包 (Maximum Entropy Toolkit) 提供了一组工具和库,用于在 Python 或 C++ 中构建最大熵 (maxent) 模型。

最大熵模型 (Maxent Entropy Model) 是一个通用的机器学习框架,已被证明在统计自然语言处理、统计物理、计算机视觉和许多其他领域中具有高度的表达性和强大功能。

Milk

Milk 是 Python 中的一个机器学习工具包。它的重点是有监督分类,其中有几种可用的分类器:SVM(基于 libsvm)、k-NN、随机森林、决策树。它还执行特征选择。这些分类器可以以多种方式组合以形成不同的分类系统。对于无监督学习,milk 支持 k 均值聚类和亲和力传播。

NLTK

NLTK,自然语言工具包 (Natural Language Toolkit),是一套用于符号和统计自然语言处理的 Python 库和程序。NLTK 包括图形演示和示例数据。它附带了广泛的文档,包括教程,这些教程解释了工具包支持的语言处理任务背后的基本概念。

NLTK 非常适合学习 NLP(自然语言处理)或在 NLP 或密切相关领域(包括经验语言学、认知科学、人工智能、信息检索和机器学习)进行研究的学生。NLTK 已成功用作教学工具、个人学习工具以及原型设计和构建研究系统的平台。

peach

Peach 是一个纯 Python 模块,基于 SciPy 和 NumPy 来实现计算智能和机器学习的算法。实现的方法包括但不限于人工神经网络、模糊逻辑、遗传算法、群体智能等等。

该库的主要目的是教育。尽管如此,我们还是注意使所实现的方法也非常高效。

pebl

Pebl 是一个 python 库和命令行应用程序,用于在给定先验知识和观察的情况下学习贝叶斯网络的结构。Pebl 包括以下功能

PyBrain

PyBrain 是一个用于 Python 的模块化机器学习库。它的目标是为机器学习任务提供灵活、易于使用但功能仍然强大的算法,以及各种预定义的环境来测试和比较您的算法。

PyBrain 包含用于神经网络、强化学习(以及两者的结合)、无监督学习和进化的算法。由于当前的大多数问题都涉及连续状态和动作空间,因此必须使用函数逼近器(如神经网络)来处理高维度。我们的库围绕内核中的神经网络构建,并且所有训练方法都接受神经网络作为要训练的实例。这使得 PyBrain 成为解决实际任务的强大工具。

MBT

MBT 是一个基于内存的标记生成器和标记器合二为一的工具。标记生成器部分可以根据标记序列的训练集生成序列标记器;标记器部分可以标记新序列。例如,MBT 可用于生成自然语言处理的词性标记器或分块器。它也已用于命名实体识别、特定领域文本中的信息提取以及转录语音中的语塞分块。

MLAP 书籍示例 (MLAP book samples)

不是一个库本身,而是 Stephen Marsland 的书《机器学习:算法视角》中的大量机器学习算法示例。所有代码都用 python 编写。

scikits.learn

scikits-learn 是一个 Python 模块,它将经典的机器学习算法集成到紧密结合的科学 Python 包世界(numpy、scipy、matplotlib)中。它旨在为每个人都可访问并在各种环境中可重用的学习问题提供简单而有效的解决方案:机器学习作为科学和工程的通用工具。

Shogun

机器学习工具箱的重点是大规模核方法,尤其是支持向量机 (Support Vector Machines, SVM)。它提供了一个通用的 SVM 对象,可以与几种不同的 SVM 实现进行接口,其中包括最先进的 LibSVM 和 SVMLight。每个 SVM 都可以与各种内核组合使用。该工具箱不仅提供了最常见内核(如线性、多项式、高斯和 Sigmoid 内核)的高效实现,而且还提供了一些最新的字符串内核,例如局部性改进内核、Fischer 内核、TOP 内核、频谱内核、加权度内核(带有偏移)。对于后者,实现了高效的 LINADD 优化。此外,SHOGUN 还提供了使用自定义预计算内核的自由。它的主要功能之一是组合内核,它可以由多个子内核的加权线性组合构建,每个子内核不一定在同一域上工作。可以使用多核学习来学习最佳子内核权重。目前,可以处理 SVM 二分类和回归问题。但是,SHOGUN 还实现了一些线性方法,如线性判别分析 (Linear Discriminant Analysis, LDA)、线性规划机 (Linear Programming Machine, LPM)、(内核)感知器,并具有训练隐马尔可夫模型的算法。输入特征对象可以是密集的、稀疏的或字符串,并且类型为 int/short/double/char,并且可以转换为不同的特征类型。预处理器链(例如,减去平均值)可以附加到每个特征对象,从而允许进行即时预处理。

SHOGUN 用 C++ 实现,并与 Matlab(tm)、R、Octave 和 Python 接口。

timbl

蒂尔堡基于内存的学习器 (Tilburg Memory Based Learner),TiMBL,是用于 NLP 研究以及许多其他从示例中学习分类任务的领域的工具。它是 k 近邻分类器的高效实现。

TiMBL 的功能包括

7.2 应用 (Applications)

实现各种面向通用学习的机器学习或统计系统的完整应用程序(即,没有垃圾邮件过滤器等)。

dbacl

dbacl 项目由一组轻量级的 UNIX/POSIX 实用程序组成,这些实用程序可以直接或在 shell 脚本中使用,根据贝叶斯统计原理自动对文本文档进行分类。

Torch5

Torch5 为最先进的机器学习算法提供了类似 matlab 的环境。它易于使用,并提供了非常高效的实现,这要归功于简单快速的脚本语言 (Lua) 和底层的 C++ 实现。它在 BSD 许可下分发。

这是 Torch3 项目的后继者。

Vowpal Wabbit

Vowpal Wabbit 是一种快速的在线学习算法。它具有以下特点

核心算法是损失函数(有几种可用)上的专家梯度下降 (GD)。代码应该易于使用。


8. 缺失与已失效 (Missing & Dead)

这是我存放旧条目或坏条目的区域。“MIA”部分用于我不再有有效主页的条目。如果您有关于现在可以在哪里找到这些条目的任何信息,请告诉我。“Dead”部分用于似乎已失效的项目。将它们移动到这里使我可以保持主要部分的清洁,同时允许感兴趣的各方纠正我,在这种情况下,我可以将其移回。

8.1 MIA - 链接丢失的项目 (MIA - Projects missing linkage.)

AntWars

Ant Wars 是一项竞赛,它让聪明的程序相互对抗,在虚拟世界中战斗并争夺食物。每位参赛者都是一种蚂蚁,它只能看到他周围的世界以及同伴和敌方蚂蚁留下的信息素。使用这些信息,蚂蚁大脑(一个简单的状态机)必须引导蚂蚁在其家乡蚁丘收集食物,同时击退或攻击敌人。

当许多蚂蚁合作时,巧妙地使用信息素和细微的行为可以创建大规模的战术,例如袭击、防御、收割和侦察。

CASE

CASE(细胞自动机模拟环境)是一个 C++ 工具包,用于可视化二维离散模型:所谓的细胞自动机。该项目的目标是创建一个集成框架,以使用当今最好的标准化技术来创建广义细胞自动机。

CLEARS

CLEARS 系统是一个用于计算语义学的交互式图形环境。该工具允许探索和比较不同的语义形式主义及其与语法的交互。这使用户可以了解语义构造的各种可能性,以及理论之间真正趋同的地方。

CLIG

CLIG 是一个交互式的、可扩展的图形器,用于可视化语言数据结构,如树、特征结构、话语表示结构 (Discourse Representation Structures, DRS)、逻辑公式等。所有这些都可以自由混合并相互嵌入。该图形器被设计为既可以独立使用,也可以用作语言应用程序的附加组件,这些应用程序以图形方式显示其输出。

Corewar VM

这是一个用 Java 编写的虚拟机(因此它是另一个虚拟机的虚拟机!),用于 Corewar 游戏。

DAI

Python 编程语言的库,它为 CLIPS 专家系统工具提供面向对象的接口。它包括一个 COOL(CLIPS 面向对象语言)的接口,允许

DHARMI

DHARMI 是一种高级空间、tinker-toy 类型的语言,其组件由一个名为 Habitat 的后台进程透明地管理。顾名思义,该语言旨在制作建模原型并处理实时数据。程序可以在运行时修改。这是通过模糊源代码、程序和数据之间的区别来实现的。

Dunce

Dunce 是一个简单的聊天机器人(会话式 AI)和一种用于编程此类聊天机器人的语言。它使用基本的正则表达式模式匹配和半神经规则/响应触发机制(具有兴奋/衰减周期)。

Dunce 在页面大约一半的位置列出。

EcoSim

注意:以上网站包含有关 EcoSim 的信息,但没有代码可供下载。

在 EcoSim 中,生态系统由系统中涉及的个体的所有静态和动态属性以及环境随时间变化的属性来描述。个体随时间或由于内部和外部事件而改变其状态。环境也通过可以更改的动态对象来定义。支持对生成的数据进行动态分析和动画处理。它是一个 C++ 类库,旨在支持面向个体的生态系统建模和模拟。

Evo

Evo 是一个软件开发框架,允许开发人员构建复杂的 alife 模拟。使用 Evo,研究人员可以轻松构建相互交互以及与环境交互的独立代理系统。Evo 实现了生物学操作符,例如基因重组和突变,以进化代理的行为,使其更适应其环境。

Grany-3

Grany-3 是一个功能齐全的细胞自动机模拟器,用 C++ 和 Gtk--、flex++/bison++、doxygen 和 gettext 制作,对颗粒介质物理学家很有用。

IBAL

IBAL(发音为“eyeball”)是一种通用的语言,用于概率建模、参数估计和决策制定。它概括了贝叶斯网络、隐马尔可夫模型、随机上下文无关文法、马尔可夫决策过程,并允许许多新的可能性。它还提供了一个方便的编程语言框架,其中包含库、自动类型检查等等。

IDEAL

IDEAL 是一个用于影响图和贝叶斯网络工作的测试平台。它包含用于信念网络的各种推理算法和用于影响图的评估算法。它包含用于创建和编辑影响图和信念网络的工具。

IDEAL 用纯 Common Lisp 编写,因此它将在任何平台上的 Common Lisp 中运行。编写 IDEAL 的重点是代码清晰度和提供高级编程抽象。因此,它非常适合需要或扩展信念网络技术的实验性实现。

在最高级别,IDEAL 可以用作子例程库,它将信念网络推理和影响图评估作为一个包提供。该代码在详细的手册中进行了记录,因此也可以在较低级别上进行信念网络方法的扩展工作。

IDEAL 附带一个用 CLIM 编写的可选图形界面。如果您的 Common Lisp 也具有 CLIM,则可以运行图形界面。

Illuminator

Illuminator 是一套用于开发 OCR 和图像理解应用程序的工具集。Illuminator 有两个主要部分:一个用于表示、存储和检索 OCR 信息的库,这里称为 dafslib,以及一个 X-Windows “DAFS” 文件查看器,称为 illum。Illuminator 和 DAFS lib 旨在取代现有的 OCR 格式并成为行业标准。它们尤其可以扩展以处理英语以外的语言。

此版本的特性

Jet 的神经架构

Jet 的神经架构是一个用于进行神经网络项目的 C++ 框架。该项目的目标是创建一个快速、灵活的神经架构,它不局限于一种类型的网络,并确保最终用户可以轻松编写有用的应用程序。所有文档也易于阅读。

触手可及的神经网络

一组 ANSI C 包,用于演示 Adaline 网络、反向传播、Hopfield 模型、BAM、Boltzman、CPN、SOM 和 ART1。用可移植、自包含的 ANSI C 编写。包含来自各种知名应用领域的完整示例应用程序。

Neureka ANS (nn/xnn) (神经网络系统)

nn 是一种高级神经网络规范语言。当前版本最适合前馈网络,但循环模型也可以并且已经实现,例如 Hopfield 网络、Jordan/Elman 网络等。在 nn 中,可以轻松更改网络动力学。nn 编译器可以生成 C 代码或可执行程序(因此必须有 C 编译器),并具有强大的命令行界面(但一切也可以通过图形界面 xnn 控制)。用户可以编写 C 例程,这些例程可以从 nn 规范内部调用,也可以将 nn 规范用作从 C 程序调用的函数。请注意,为了使用系统附带的网络模型 (`netpack`),无需进行编程。

xnn 是由 nn 编译器生成的网络以及编译器本身的图形前端。xnn 图形界面直观且易于初学者使用,但功能强大,具有可视化网络数据的多种可能性。

注意:您必须运行随附的安装程序才能安装许可证密钥。默认情况下,它会被放在 /usr/lib 中。如果您(像我一样)想将软件包安装在 /usr 目录结构之外的其他位置(安装程序会为您提供此选项),则必须设置一些环境变量(NNLIBDIR 和 NNINCLUDEDIR 是必需的)。您可以在文档的附录 A(第 113 页)中阅读有关这些变量(以及其他一些可选变量)的信息。

NEURObjects

NEURObjects 是一组用于神经网络开发的 C++ 库类。该库的主要目标是支持研究人员和从业人员开发新的神经网络方法和应用程序,利用面向对象的设计和编程的潜力。NEURObjects 还为分类问题提供通用应用程序,并可用于归纳机器学习应用程序的快速原型设计。

OSCAR

OSCAR 项目的目标是制定通用理性理论,并将其在人工理性主体中实现。人工主体的功能是根据提供给它们的信息得出结论并做出决策。OSCAR 是一个完全实现的人工理性主体架构,基于通用的可撤销推理器。OSCAR 使用 Common Lisp 编写,可免费用于教育和研究目的。

PAI

AI(可编程人工智能)是一个能够用其母语英语进行对话的程序。用 C++ 编写。

pygene

pygene 是一个简单易懂的库,用于在 Python 中进行遗传算法和遗传编程。包括诸如旅行商问题之类的示例。

PyIE

PyIE 是一个基于假设、议程驱动、面向对象的推理引擎,用 Python 编写。推理模式包括反向链接、机会主义前向链接和显式前向链接。一流对象库支持元类、类、对象和多重动态继承。所有对象都是一流对象,所有属性都是槽值,即附加到某些对象的数据成员。

PyIE 使用 TMS(真值维护系统)进行第一级(条件更改)非单调推理。正在探索用户定义的元类以支持第二级(信念更改)非单调推理。

简单神经网络(Python 版)

简单神经网络代码,它实现了一个用于 3 层网络(输入层、隐藏层和输出层)的类。唯一实现的学习规则是简单的反向传播。完全没有文档(甚至没有注释),因为这只是我用来实验的代码。包括包含 Carl G. Looney 的 NN 书籍中的示例数据集的模块。需要 Numeric 扩展。

Python 模糊逻辑模块

一个简单的 Python 模糊逻辑模块。文件是此目录中的 'fuz.tar.gz'。作者还计划编写一个简单的遗传算法和一个神经网络库。查看此目录中的 00_index 文件以获取发布信息。

QUANT1

这个项目似乎已经变成专有的了。我通过 Google 找到的唯一痕迹是在 http://www.zurich.co.uk/strategicrisk/softwaresupport/Quant1.htm。

QUANT/1 代表类型量词 (QUANTifier)。它旨在成为类似 Prolog(类似归结)系统的替代方案。主要功能包括无需消除量词、Skolem 化、易于理解、大规模公式运算、接受非 Horn 公式以及迭代加深。此项目中实现的实际库名为 ATPPCF(正构造公式演算中的自动定理证明器)。

ATPPCF 将是一个库(推理引擎),并且是谓词演算语言作为一种新的逻辑语言的扩展。该库可以合并到其他软件中,例如 TCL、Python、Perl。引擎的主要推理方法将是“在正构造公式 (PCF) 语言中搜索推理”(谓词演算的一个子集,在两个方向上都得到了很好的翻译)。该语言将用作引擎的脚本语言。但是,有可能用主软件的扩展语言替换它。

SCNN

SCNN 是用于细胞神经网络 (CNN) 的通用模拟系统。CNN 是具有规则和局部互连的模拟处理神经网络,由一组非线性常微分方程控制。由于其局部连接性,CNN 被实现为 VLSI 芯片,以非常高的速度运行。

符号概率推理 (SPI)

包含 Common Lisp 函数库,用于实现 SPI 类型的贝叶斯网络。文档非常有限。功能

SPRLIB/ANNLIB

SPRLIB(统计模式识别库)的开发旨在支持模式分类器的轻松构建和模拟。它由一个函数库(用 C 编写)组成,可以从您自己的程序中调用。大多数著名的分类器都存在(k-nn、Fisher、Parzen 等),以及误差估计和数据集生成例程。

ANNLIB(人工神经网络库)是一个基于 SPRLIB 奠定的数据架构的神经网络模拟库。该库包含用于创建、训练和测试前馈网络的众多函数。训练算法包括反向传播、伪牛顿法、Levenberg-Marquardt 算法、共轭梯度下降法、BFGS... 此外,由于数据结构的一般适用性,可以使用相同的数据类型构建 Kohonen 映射和其他更奇特的网络架构。

Sugal

Sugal [soo-gall] 是 SUnderland 遗传算法系统。Sugal 的目的是在通用软件平台上支持遗传算法的研究和实施。因此,Sugal 支持大量遗传算法的变体,并具有广泛的功能来支持自定义和扩展。

ThoughtTreasure

ThoughtTreasure 是一个创建常识规则数据库的项目,用于任何应用程序中。它包含一个略多于 10 万条规则的数据库和一个 C API,用于将其与您的应用程序集成。Python、Perl、Java 和 TCL 包装器已可用。

TIN

该程序在一个由细胞组成的 2D 环境中模拟原始生命形式,这些生命形式配备了一些基本本能和能力。通过变异,新一代可以证明它们的成功,从而传递“良好的家庭价值观”。

TIN 的大脑可以看作是过程的集合,每个过程代表以某种方式行为的驱动力或冲动,具体取决于环境的状态/感知(例如,食物、墙壁、邻居、气味痕迹的存在)。这些行为过程目前是:进食、移动、交配、放松、追踪其他生物、收集食物和杀死。具有最高冲动值的过程取得控制权,或者换句话说:TIN 将根据其最迫切的需求采取行动。

Ummon

Ummon 是一个先进的开源聊天机器人。该机器人的主要原则是它对单词或语法没有任何初始知识;它“动态地”学习一切。Ummon 的开发将探索众多 AI 技术,以实现逼真的“人类”交流,并支持不同的、可定制的个性。

虚拟秘书项目 (ViSe)

(Tcl/Tk)

虚拟秘书项目的动机是构建基于用户模型的智能软件代理,在大多数情况下,基于现代移动计算和计算机网络,这些代理可以取代人类完成秘书任务。该项目包括两个不同的阶段:第一阶段 (ViSe1) 侧重于信息过滤和进程迁移,其目标是使用用户模型的概念为软件代理创建安全环境;第二阶段 (ViSe2) 侧重于代理在分布式环境中的智能和高效协作,其目标是构建协作代理以实现高智能。(使用 Tcl/TclX/Tix/Tk 实现)

Zeus

多代理系统的构建涉及较长的开发时间,并且需要解决一些相当大的技术难题。这促使了 ZEUS 工具包的开发,该工具包提供了一个软件组件和工具库,有助于代理系统的快速设计、开发和部署。

8.2 已停止的项目。

FIPA-OS

FIPA-OS 是 FIPA 规范中代理互操作性的强制性元素的开源实现。除了支持 FIPA 互操作性概念外,FIPA-OS 还提供了一个基于组件的架构,以支持领域特定代理的开发,这些代理可以使用 FIPA 平台代理的服务。它用 Java 实现。

PDKB

公共领域知识库 (PDKB) 是一个人工智能知识库,包含常识规则和事实。它基于 Cyc 上层本体和 MELD 语言。

RobocodeNG

自 1.1 版本起,已与原始 Robocode 合并。

Robocode 的扩展,这是一款战斗机器人 AI 编程游戏。与其父项目一样,它用 Java 编写,旨在作为一个学习环境。

Sulawesi

一个名为 Sulawesi 的框架已被设计和实现,以应对可穿戴用户界面中被认为重要的挑战。能够接受来自任意数量模式的输入,并在必要时执行到任意数量模式输出的转换。它主要通过一组主动代理来对输入进行操作来实现这一点。

TresBel

这个项目似乎已被 Pulcinella 取代。

包含 (Allegro) Common Lisp 代码的库,用于将信念函数(又名 Dempster-Shafer 证据推理)作为不确定性的表示。文档非常少。有一个有限的 GUI。