《Java遗传算法编程》—— 1.2 生物学类比

1.2 生物学类比

当早期的计算机科学家刚开始尝试建立人工智能系统时,他们常常向大自然寻求灵感,思考他们的算法的工作方式。通过创建模型,模仿自然界中发现的过程,计算机科学家能让他们的算法具有进化能力,甚至复制人类大脑的特征。通过实现仿生算法,这些早期开拓者第一次让机器有能力适应、学习和控制其环境的某些方面。

通过使用不同的生物学类比作为指导来开发人工智能系统,计算机科学家开创了不同的研究领域。当然,启发每个研究领域的不同生物学系统,都有自己的优势和应用。这本书中关注的一个成功的领域,就是进化计算,其中遗传算法构成了其主要的研究。其他领域专注于不大相同的方面,如人脑建模。这一领域的研究被称为人工神经网络,它利用了生物学神经系统的模型,来模拟其学习和处理数据的能力。

时间: 2024-09-17 04:42:49

《Java遗传算法编程》—— 1.2 生物学类比的相关文章

《Java遗传算法编程》—— 第2章 实现一个基本遗传算法 2.1 实现之前

第2章 实现一个基本遗传算法 Java遗传算法编程 在本章中,我们将开始探索实现基本遗传算法的技术.本章开发的程序,将在后面的章节中进行修改,加入功能.同时,我们也将探讨基于遗传算法的参数和配置,以及它的性能会如何变化. 要尝试运行本节中的代码,需要先在计算机上安装Java JDK.你可以从Oracle的网站上免费下载并安装Java JDK: oracle.com/technetwork/java/javase/downloads/index.html 除了安装Java JDK,你也可以选择安装

《Java遗传算法编程》—— 第1章 简介 1.1 什么是人工智能

第1章 简介 Java遗传算法编程 数字计算机和信息时代的崛起,已经彻底改变了现代的生活方式.数字计算机的发明,使我们能够让生活的许多领域数字化.这种数字化让我们将许多繁琐的日常任务外包给计算机,而这些任务以前可能需要人来完成.这方面的一个日常例子是字处理应用程序,它们内置拼写检查功能,可以自动检查文档的拼写和语法错误. 随着计算机变得越来越快,计算能力越来越强,我们已经能够用它们来执行越来越复杂的任务,如理解人类语言,甚至比较准确地预测天气.这种不断的创新,让我们能够将越来越多的任务外包给计算

《Java遗传算法编程》—— 导读

目录 第1章 简介1.1 什么是人工智能1.2 生物学类比1.3 进化计算的历史1.4 进化计算的优势1.5 生物进化1.6 基本术语1.7 搜索空间1.8 参数1.9 基因表示1.10 终止1.11 搜索过程1.12 参考文献 第2章 实现一个基本遗传算法2.1 实现之前2.2 基本遗传算法的伪代码2.3 关于本书的代码示例2.4 基本实现2.5 轮盘赌选择2.6 交叉方法2.7 交叉伪代码2.8 交叉实现2.9 小结2.10 练习 第3章 机器人控制器 第4章 旅行商 第5章 排课 第6章

《Java遗传算法编程》—— 1.3 进化计算的历史

1.3 进化计算的历史 20世纪50年代,进化计算首次作为一种优化工具被尝试,当时的计算机科学家将达尔文的生物进化论思想应用于候选解构成的种群.他们建立理论,认为有可能应用进化算子,如交叉(它是生物繁殖的模拟)和变异(这是新的遗传信息添加到基因组中的过程).这些算子和选择压力共同作用,让遗传算法在一段时间后,能够"进化"出新的解. 在20世纪60年代,"进化策略"(应用自然选择和进化思想的一种优化技术)最初由Rechenberg(1965,1973)提出,他的想法后

《Java遗传算法编程》—— 2.4 基本实现

2.4 基本实现 为了消除所有不必要的细节,保持最初的实现容易尝试,本书中介绍的第一个遗传算法将是简单的二进制遗传算法. 二进制遗传算法比较容易实现,对于解决许多种优化问题,它可能是非常有效的工具.你可能还记得第1章提到,二进制遗传算法是由Holland(1975)提出的原创的遗传算法. 2.4.1 问题 首先,让我们回顾一下"全一"问题,它是可以用二进制遗传算法来解决的一个非常基本的问题. 该问题不是很有趣,但作为一个简单的问题,它的作用是强调所涉及的基本技术.顾名思义,该问题就是发

《Java遗传算法编程》—— 2.2 基本遗传算法的伪代码

2.2 基本遗传算法的伪代码 基本遗传算法的伪代码如下: 1: generation = 0; 2: population[generation] = initializePopulation(populationSize); 3: evaluatePopulation(population[generation]); 3: While isTerminationConditionMet() == false do 4: parents = selectParents(population[ge

《Java遗传算法编程》—— 1.9 基因表示

1.9 基因表示 除了这些参数,影响遗传算法表现的另一个因素是所用的基因表示.这是遗传信息在染色体内的编码方式.更好的表示会让解的编码方式既表现力强,又容易进化.Holland(1975)的遗传算法是基于二进制基因表示.他建议染色体用含有0和1的序列.这种二进制表示可能是目前最简单的编码,但对于很多问题表现力不是很够,不是合适的首选.请考虑一个例子,用二进制表示来编码一个整数,它将被优化,用于某函数.在这个例子中,"000"代表0,而"111"代表7,就像通常二进制

《Java遗传算法编程》—— 2.10 练习

2.10 练习 1.运行遗传算法几次,观察进化过程的随机性.它通常需要多少代来找到这个问题的一个解? 2.扩大和减小种群规模.减小种群规模如何影响算法的速度?它是否也影响找到一个解需要的世代数?扩大种群规模如何影响算法的速度?它如何影响找到一个解需要的世代数? 3.将变异率设置为0.这将如何影响遗传算法寻找解的能力?使用高变异率,如何影响算法? 4.使用低交叉率.低交叉率下,算法表现如何? 5.尝试用较短及较长的染色体,减少和增加问题的复杂性.在处理更短或更长的染色体时,不同的参数是否工作得更好

《Java遗传算法编程》—— 2.9 小结

2.9 小结 在本章中,你已经学会了实现遗传算法的基本知识.本章开头的伪代码提供了一个通用的概念模型,针对本书其余部分所有要实现的遗传算法:每个遗传算法将初始化并评估种群,然后进入一个循环,进行交叉.变异和再评估.仅当终止条件满足时,才退出循环. 在本章中,你建立了遗传算法的支持组件,尤其是Individual和Population类,在后面的章节中基本上会复用它们.然后你专门建立了GeneticAlgorithm类,具体解决"全一"问题,并成功地运行了它. 你还了解了以下内容:虽然每