前言
遗传算法是机器学习的一个子集。在实践中,遗传算法通常不是唯一的最佳算法,你可以用来解决一个单一的,特定的问题。对于任何单独的问题,几乎总有更好、更有针对性的解决方案!所以,为什么要找麻烦呢?遗传算法是一个优秀的多工具,可以应用于许多不同类型的问题。这是瑞士军刀和正规的棘轮螺丝刀之间的区别。如果你的工作是加强300螺丝,你会想春天的螺丝刀,但如果你的工作是拧紧几个螺丝,削减一些布,一个洞在一块皮,然后打开一个冷瓶汽水奖励自己努力工作,瑞士军刀是更好的选择。另外,我认为遗传算法是机器学习的最佳入门。如果说机器学习是一座冰山,那么遗传算法就是冰山的一部分。遗传算法是有趣的,令人兴奋的,新颖的。以自然生物过程为模型的遗传算法,在计算世界和自然世界之间建立了联系。写你的第一个遗传算法,看着惊人的结果出现在混乱和随机的许多学生是令人惊叹的。处于机器学习冰山一角的其他研究领域也同样令人兴奋,但它们往往更狭隘,更难以理解。另一方面,遗传算法很容易理解,实现起来也很有趣,而且它们引入了许多被所有机器学习技术所使用的概念。如果你对机器学习感兴趣,但不知道从哪里开始,那就从遗传算法开始吧。您将学习重要的概念,您将继续到其他领域,您将构建不,您将获得一个伟大的多工具,您可以使用它来解决许多类型的问题,而且您不需要学习高等数学来理解它。 关于本书这本书给你一个简单,直接介绍遗传算法。本书没有数学、数据结构或算法方面的先决条件,但我们希望您熟悉计算机编程的水平在中级以上。虽然这里使用的编程语言是Java,但我们不使用任何特定于Java的高级语言构造或第三方库。只要您熟悉面向对象编程,遵循这里的示例就没有问题。在本书结束时,您将能够轻松地用您所选择的语言实现遗传算法,无论是面向对象语言、函数语言还是过程语言。这本书将带你通过使用遗传算法解决四个不同的问题。在此过程中,您将获得许多技术,在未来构建遗传算法时可以混合和匹配。当然,遗传算法是一个庞大而成熟的领域,它也有一个潜在的数学形式,它不可能在一本书中涵盖该领域的所有内容。所以我们划清界限:我们不讨论迂腐,我们避免数学形式,我们不进入高级遗传算法的领域。这本书是关于让你快速运行实际例子,并给你足够的基础继续学习高级主题。
关于源码本书中介绍的代码是全面的;使示例运行所需的所有内容都打印在这些页面中。然而,为了节省空间和纸张,我们经常在显示示例时省略代码注释和Java docblock。请访问http://www.apress.com/9781484203293 并打开SourceCode/Downloads tab来下载附带的Eclipse项目,其中包含本书中的所有示例代码。您将发现许多有用的注释和docblock,这些注释和docblock是您在这些页面中找不到的。通过阅读这本书和它的例子,你向最终成为机器学习专家迈出了第一步。它可能会改变你的职业生涯,但这取决于你。我们只能尽我们最大的努力来教育你们,给你们创造你们自己未来所需要的工具。祝你好运!
目录
第一章:Introduction(介绍)
第二章:Implementation of a Basic Genetic Algorithm(基本遗传算法实现)
第三章:Robotic Controllers(机器人控制)
第四章:Traveling Salesman(旅行推销商)
第五章:Class Scheduling (类调度)
第六章:Optimization(优化)
关于作者
Lee Jacobson是一名来自英国布里斯托尔的职业自由软件开发者,他在15岁时开始编写代码,并尝试编写自己的游戏。他的兴趣很快转向了软件开发和计算机科学,这使他进入了人工智能领域。在大学学习了遗传算法和其他优化技术后,他对这门学科产生了热情。他经常喜欢利用晚上的时间学习优化算法,比如遗传算法,以及如何利用这些算法解决各种问题。
Burak Kanber是土生土长的纽约人,曾参加库珀联盟(Cooper Union)促进科学与艺术的发展。他拥有机械工程学士和硕士学位,主要研究控制系统、机器人、汽车工程和混合动力汽车系统工程。然而,软件却是他毕生的热情,并且贯穿了他的一生。布拉克在参加库珀联盟(Cooper Union)时开始为纽约的初创企业提供咨询,帮助企业在各种平台和不同行业开发核心技术。在库珀联盟的艺术和设计经历也帮助布拉克培养了对产品设计的眼光和品味。自2009年创办Tidal Labs以来,Burak一直在DevOps、产品开发和机器学习方面磨砺着自己的技能。Tidal Labs是一家为企业影响力管理和内容营销提供获奖软件的科技公司。
部分截图