《Java遗传算法编程》—— 1.10 终止

简介: 遗传算法可以继续进化出新的候选解,无论需要多长时间。根据问题的性质,遗传算法的运行时间可以从几秒钟到几年!我们将遗传算法完成搜索的条件称为终止条件。

本节书摘来异步社区《Java遗传算法编程》一书中的第1章,第1.10节,作者: 【英】Lee Jacobson(雅各布森) , 【美】Burak Kanber(坎贝尔),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.10 终止

遗传算法可以继续进化出新的候选解,无论需要多长时间。根据问题的性质,遗传算法的运行时间可以从几秒钟到几年!我们将遗传算法完成搜索的条件称为终止条件。

一些典型的终止条件是:

  • 到达世代的最大数目;
  • 超过分配给它的时间;
  • 发现一个满足所需条件的解;
  • 该算法已经达到了一个稳定阶段。

有时也许最好有多个终止条件。例如,如果设置最大的时间限制,并在找到适当的解时能提前终止,就非常方便。

相关文章
|
人工智能 算法 Java
50道JAVA基础算法编程题【内含分析、程序答案】【建议收藏】【建议收藏】【建议收藏】
非常基础的题目,但是想学好Java它真的是基础,基础有多重要我就不再废话,重要的事情说三遍【建议收藏】【建议收藏】【建议收藏】。
|
人工智能 Java 机器人
《Java遗传算法编程》—— 导读
目录 第1章 简介 1.1 什么是人工智能 1.2 生物学类比 1.3 进化计算的历史 1.4 进化计算的优势 1.5 生物进化 1.6 基本术语 1.7 搜索空间
2144 0
|
算法 Java
《Java遗传算法编程》—— 2.10 练习
1.运行遗传算法几次,观察进化过程的随机性。它通常需要多少代来找到这个问题的一个解? 2.扩大和减小种群规模。减小种群规模如何影响算法的速度?它是否也影响找到一个解需要的世代数?扩大种群规模如何影响算法的速度?它如何影响找到一个解需要的世代数?
1352 0
|
Java
《Java遗传算法编程》—— 2.9 小结
在本章中,你已经学会了实现遗传算法的基本知识。本章开头的伪代码提供了一个通用的概念模型,针对本书其余部分所有要实现的遗传算法:每个遗传算法将初始化并评估种群,然后进入一个循环,进行交叉、变异和再评估。仅当终止条件满足时,才退出循环。
1468 0
|
算法 Java Android开发
《Java遗传算法编程》—— 2.8 交叉实现
为了实现轮盘赌选择,在GeneticAlgorithm类的任意位置增加一个selectParent( )方法。selectParent( )方法基本上是反着玩轮盘赌。在赌场,轮盘上已经有标记,然后旋转的轮盘,等待球落入位置。
1775 0
|
Java
《Java遗传算法编程》—— 2.7 交叉伪代码
既然有了选择和交叉的方法,让我们来看一些伪代码,其中概述了要实现的交叉过程。
1825 0
|
Java
《Java遗传算法编程》—— 2.6 交叉方法
在交叉过程中,除了用不同的选择方法,还有可用不同的方法在两个个体之间交换遗传信息。不同的问题具有不太一样的特点,采用特定的交叉方法更好。例如,“全一”问题只要求完全由1构成的字符串。字符串“00111”与字符串“10101”具有相同的适应度值,因为它们都包含3个1。
1486 0
|
Java
《Java遗传算法编程》—— 2.5 轮盘赌选择
轮盘赌选择(也称为适应度比例选择)是用轮盘赌为类比,从种群中选择个体的方法。这种想法是根据种群中个体的适应值,将它们放置在一个假想的轮盘上。个体的适应度越高,在轮盘上占据的空间就越多。图2-1展示了在这个过程中,个体通常如何放置。
3262 0
|
存储 算法 Java
《Java遗传算法编程》—— 2.4 基本实现
为了消除所有不必要的细节,保持最初的实现容易尝试,本书中介绍的第一个遗传算法将是简单的二进制遗传算法。 二进制遗传算法比较容易实现,对于解决许多种优化问题,它可能是非常有效的工具。你可能还记得第1章提到,二进制遗传算法是由Holland(1975)提出的原创的遗传算法。
3322 0
|
Java Android开发
《Java遗传算法编程》—— 2.3 关于本书的代码示例
本书中的每一章都作为一个包,放在附带的Eclipse项目中。每个包都至少有4个类。 GeneticAlgorithm类,它抽象了遗传算法本身,为接口方法提供了针对问题的实现,如交叉、变异、适应度评估和终止条件检查。
1767 0

热门文章

最新文章