当前位置:首页 > Java >
《Java遗传算法编程》电子书封面

Java遗传算法编程

  • 发布时间:2019年12月20日 11:57:50
  • 作者:雅各布森/坎贝尔
  • 大小:28.8 MB
  • 类别:Java算法电子书
  • 格式:PDF
  • 版本:完整中文版
  • 评分:9.6

    Java遗传算法编程 PDF 完整中文版

      给大家带来的一篇关于Java算法相关的电子书资源,介绍了关于Java、遗传算法方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小28.8 MB,雅各布森/坎贝尔编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.8分

      Tags:java 遗传算法 

      内容介绍

      非常好的入门书,读完对遗传算法了解了很多。

      书中主要是代码,用java编写遗传算法,给了我不少启发

      最近用到,刚买了书就找到了电子版,内容一样。不过,通篇都是翻译(有点非人工翻译)和程序代码。且练习的相应代码沒有。做为入门沒问题。但深入不行。

      就是把遗传算法用java实现了,看着做一遍就能够有一个比较全面的了解,趁着优惠买的,相当于是半价,支持。快递服务态度超级好,书本身质量也好,干净

      编辑推荐

      遗传算法常常用于解决非常复杂的真实世界问题。
      本书是学习如何利用遗传算法来解决问题的入门指南,书中包含了Java语言编写的、能运行的项目和解决方案。本书引导读者一步一步地实现各种遗传算法及一些常见应用场景,帮助读者在实践中加深理解,从而能够解决自己独特的问题。本书首先介绍了基本概念,并在随后的章节中添加了机器人控制、旅行商问题等例子,展示了实现遗传算法的更多知识技能。
      通过阅读本书,你将熟悉遗传算法与编程语言相关的问题和概念,掌握构建自己的算法所需的全部知识,并且将获得用遗传算法解决问题的能力。请拿起本书,进入遗传算法这个迷人的领域,看看真正能工作的Java代码,并运用于你自己的项目和研究中。
      本书具有以下特色:
      ● 引导学习遗传算法背后的理论;
      ● 解释软件开发者如何利用遗传算法来尝试解决一些问题;
      ● 通过简单易行的步骤,提供用Java实现遗传算法的详细指导。

      内容节选

      JVM核心教程之JVM运行与类加载全过程详解

      为什么要使用类加载器?

      Java语言里,类加载都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会给java应用程序提供高度的灵活性。例如:

      1.编写一个面向接口的应用程序,可能等到运行时再指定其实现的子类;

      2.用户可以自定义一个类加载器,让程序在运行时从网络或其他地方加载一个二进制流作为程序代码的一部分;(这个是Android插件化,动态安装更新apk的基础)

      为什么研究类加载全过程?

      • 有助于连接JVM运行过程
      • 更深入了解java动态性(解热部署,动态加载),提高程序的灵活性

      类加载机制

      JVM把class文件加载到内存,并对数据进行校验、解析和初始化,最终形成JVM可以直接使用的java类型的全过程。

      加载

      将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class对象,作为方法区类数据的访问入口,这个过程需要类加载器参与。

      链接

      将java类的二进制代码合并到JVM的运行状态之中的过程

      • 验证: 确保加载的类信息符合JVM规范,没有安全方面的问题
      • 准备: 正式为类变量(static变量)分配内存并设置类变量初始值的阶段,这些内存都将在方法去中进行分配
      • 解析: 虚拟机常量池的符号引用替换为字节引用过程

      初始化

      • 初始化阶段是执行类构造器<clinit>()方法的过程。类构造器<clinit>()方法是由编译器自动收藏类中的所有类变量的赋值动作和静态语句块(static块)中的语句合并产生
      • 当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化
      • 虚拟机会保证一个类的<clinit>()方法在多线程环境中被正确加锁和同步
      • 当范围一个Java类的静态域时,只有真正声名这个域的类才会被初始化

      例1:

      public class Demo01 {
       public static void main(String[] args) {
        A a = new A();
        System.out.println(a.width);
       }
      }
      
      class A{
       public static int width=100; //静态变量,静态域 field
       static{
        System.out.println("静态初始化类A");
        width = 300 ;
       }
       public A() {
        System.out.println("创建A类的对象");
       }
      }

      分析:

      说明:

      内存中存在栈、堆(放创建好的对象)、方法区(实际也是一种特殊堆)

      1、JVM加载Demo01时候,首先在方法区中形成Demo01类对应静态数据(类变量、类方法、代码…),同时在堆里面也会形成java.lang.Class对象(反射对象),代表Demo01类,通过对象可以访问到类二进制结构。然后加载变量A类信息,同时也会在堆里面形成a对象,代表A类。

      2、main方法执行时会在栈里面形成main方法栈帧,一个方法对应一个栈帧。如果main方法调用了别的方法,会在栈里面挨个往里压,main方法里面有个局部变量A类型的a,一开始a值为null,通过new调用类A的构造器,栈里面生成A()方法同时堆里面生成A对象,然后把A对象地址付给栈中的a,此时a拥有A对象地址。

      3、当调用A.width时,调用方法区数据。

      当类被引用的加载,类只会加载一次

      类的主动引用(一定会发生类的初始化)

      • new一个类的对象
      • 调用类的静态成员(除了final常量)和静态方法
      • 使用java.lang.reflect包的方法对类进行反射调用
      • 当虚拟机启动,java Demo01,则一定会初始化Demo01类,说白了就是先启动main方法所在的类
      • 当初始化一个类,如果其父类没有被初始化,则先初始化它父类

      类的被动引用(不会发生类的初始化)

      • 当访问一个静态域时,只有真正声名这个域的类才会被初始化
      • 通过子类引用父类的静态变量,不会导致子类初始化
      • 通过数组定义类的引用,不会触发此类初始化
      • 引用常量不会触发此类的初始化(常量在编译阶段就存入调用类的常量池中了)

      例2:

      public class Demo01 {
       static{
        System.out.println("静态初始化Demo01");
       }
       
       
       public static void main(String[] args) throws Exception {
        System.out.println("Demo01的main方法!");
        System.out.println(System.getProperty("java.class.path"));
        
        //主动引用
      //  new A();
      //  System.out.println(A.width);
      //  Class.forName("com.sinosoft.test.A");
        
        
        //被动引用
      //  System.out.println(A.MAX);
      //  A[] as = new A[10];
        System.out.println(B.width);//B类不会被加载
        
       }
      }
      
      class B extends A {
       static {
        System.out.println("静态初始化B");
       }
      }
      
      class A extends A_Father {
       public static int width=100; //静态变量,静态域 field
       public static final int MAX=100; 
       
       static {
        System.out.println("静态初始化类A");
        width=300;
       }
       public A(){
        System.out.println("创建A类的对象");
       }
      }
      
      class A_Father extends Object {
       static {
        System.out.println("静态初始化A_Father");
       }
      }

      内容简介

      当前,机器学习领域已经变得越来越流行,而遗传算法是机器学习的一个重要子集。
      本书简单、直接地介绍了遗传算法,并且针对所讨论的示例问题,给出了Java代码的算法实现。全书共分灾6章。第1章简单介绍了人工智能和生物进化的知识背景,这也是遗传算法的历史知识背景。第2章给出了一个基本遗传算法的实现;第4章和第5章,分别针对机器人控制器、旅行商问题、排课问题展开分析和讨论,并给出了算法实现。在这些章的末尾,还给出了一些练习供读者深入学习和实践。第6章专门讨论了各种算法的优化问题。
      本书适合机器学习爱好者阅读,尤其适合对遗传算法的理论和实现感兴趣的读者阅读参考。

      作者简介

      Lee Jacobson来自英国布里斯托尔,是一名专业的自由职业软件开发者。在大学期间学习了遗传算法和其他优化技术后,他对这个主题产生了强烈的兴趣。
      Burak Kanber是土生土长的纽约人,他拥有机械工程的学士学位和硕士学位,专注于控制系统、机器人技术、汽车工程和混合动力汽车系统工程。但是,软件一直是他终身的爱好,贯穿着Burak整个生命。

      目录

      • 第1章 简介 1
      • 1.1 什么是人工智能 2
      • 1.2 生物学类比 3
      • 1.3 进化计算的历史 4
      • 1.4 进化计算的优势 5
      • 1.5 生物进化 7
      • 生物进化的一个实例 8
      • 1.6 基本术语 10
      • 术语 10
      • 1.7 搜索空间 11
      • 1.7.1 适应度景观 12
      • 1.7.2 局部最优 14
      • 1.8 参数 17
      • 1.8.1 变异率 17
      • 1.8.2 种群规模 18
      • 1.8.3 交叉率 19
      • 1.9 基因表示 19
      • 1.10 终止 20
      • 1.11 搜索过程 20
      • 1.12 参考文献 22
      • 第2章 实现一个基本遗传算法 23
      • 2.1 实现之前 23
      • 2.2 基本遗传算法的伪代码 24
      • 2.3 关于本书的代码示例 25
      • 2.4 基本实现 26
      • 2.4.1 问题 27
      • 2.4.2 参数 27
      • 2.4.3 初始化 29
      • 2.4.4 评估 35
      • 2.4.5 终止检查 38
      • 2.4.6 交叉 41
      • 2.5 轮盘赌选择 41
      • 2.6 交叉方法 42
      • 2.7 交叉伪代码 43
      • 2.8 交叉实现 44
      • 2.8.1 精英主义 48
      • 2.8.2 变异 50
      • 2.8.3 执行 53
      • 2.9 小结 55
      • 2.10 练习 56
      • 第3章 机器人控制器 57
      • 3.1 简介 57
      • 3.2 问题 58
      • 3.3 实现 59
      • 3.3.1 开始之前 59
      • 3.3.2 编码 60
      • 3.3.3 初始化 64
      • 3.3.4 评估 73
      • 3.3.5 终止检查 87
      • 3.3.6 选择方法和交叉 91
      • 3.4 锦标赛选择 91
      • 3.5 单点交叉 93
      • 执行 99
      • 3.6 小结 101
      • 3.7 练习 102
      • 第4章 旅行商 103
      • 4.1 简介 103
      • 4.2 问题 105
      • 4.3 实现 106
      • 4.3.1 开始之前 106
      • 4.3.2 编码 106
      • 4.3.3 初始化 107
      • 4.3.4 评估 111
      • 4.3.5 终止检查 117
      • 4.3.6 交叉 118
      • 4.3.7 变异 124
      • 4.3.8 执行 126
      • 4.4 小结 131
      • 4.5 练习 132
      • 第5章 排课 134
      • 5.1 简介 134
      • 5.2 问题 135
      • 5.3 实现 136
      • 5.3.1 开始之前 137
      • 5.3.2 编码 137
      • 5.3.3 初始化 138
      • 5.3.4 执行类 158
      • 5.3.5 评估 167
      • 5.3.6 终止 169
      • 5.3.7 变异 172
      • 5.3.8 执行 174
      • 5.4 分析和改进 179
      • 5.5 小结 182
      • 5.6 练习 182
      • 第6章 优化 183
      • 6.1 自适应遗传算法 183
      • 6.1.1 实现 184
      • 6.1.2 练习 188
      • 6.2 多次启发 188
      • 6.2.1 实现 189
      • 6.2.2 练习 190
      • 6.3 性能改进 191
      • 6.3.1 适应度函数设计 191
      • 6.3.2 并行处理 191
      • 6.3.3 适应度值散列 193
      • 6.3.4 编码 197
      • 6.3.5 变异和交叉方法 197
      • 6.4 小结 198

      以上就是本次介绍的Java算法电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

      上一篇:架构探险:轻量级微服务架构(下册)

      下一篇:Elasticsearch集成Hadoop最佳实践

      展开 +

      收起 -

      下载地址:百度网盘下载
      Java算法 相关电子书
      PHP、MySQL与JavaScript学习手册(第4版)
      PHP、MySQL与JavaScript学习手册(第4版) PDF 中文高清版

      本书有借助面向对象的编程基础,深入学习PHP。研究MySQL,从数据库结构到复杂查询。掌握JavaScript语言,以及带有jQuery的增强功能。调用Ajax进行后台浏览器/服务器通信等,欢迎免费下载

      立即下载
      疯狂HTML5+CSS3+JavaScript讲义
      疯狂HTML5+CSS3+JavaScript讲义 PDF 原书第2版 立即下载
      JavaScript网页动画设计
      JavaScript网页动画设计 PDF 高清版

      JavaScript网页动画设计 由业界先进的动画库Velocity。js的作者所著,书中内容共分为8章,简明扼要地总结了在网页上使用动画的技术技巧,让读者掌握如何有效利用动画实现无与伦比的用户体验

      立即下载
      Java Web开发实例大全:基础卷
      Java Web开发实例大全:基础卷 PDF 原书扫描版

      本书筛选、汇集了Java Web开发从基础知识到高级应用各个层面约600个实例及源代码,主要内容有开发环境搭建、Java语言基础、HTML/CSS技术、JSP基础与内置对象、JavaBean技术、Servlet技术、过滤器与监听器技术、JSTL标签库

      立即下载
      Java经典实例
      Java经典实例 PDF 第三版

      Java经典实例(第三版) 从lambda表达式、JavaFX 8,到网络编程和支持移动设备等方面,Java 8都有许多更新。包含了数百个经过实践验证的技巧,内容涵盖了广泛的Java主题,可帮助你快速进入编程

      立即下载
      阿里巴巴Java开发手册
      阿里巴巴Java开发手册 PDF 彩色影印版

      这本书愿景是码出高效,码出质量,提炼阿里巴巴集团技术团队的集体编程经验和软件设计智慧,浓缩成为立体的编程规范和实践,适合计算机相关行业的管理者和研发人员、高等院校的计算机专业师生、求职者等阅读

      立即下载
      Java jdk12 API官方文档(jdk13帮助文档)
      Java jdk12 API官方文档(jdk13帮助文档) PDF 完整版

      Java12 API文档,记录Java12语言中的类、方法、接口信息。目前官方最新版本jdk13,是这里提供 Java12 API官方文档CHM版和jdk13帮助文档html完整版 ,都是官方英文版的,需要的朋友可下载试试! ps:另外请查看右键-属性-解除锁定,否则点击 右边框不会显示相应内容 JDK13到今天已经发布快3个月了,之前有零零散散的试过一些新的特性,但却没有整体的整理一下。想到作为Java开发,连使用的JDK(Java Developerment Kit)有什么特性都不清楚,实在是有些不应

      立即下载
      读者心得
      154小时6分钟前回答

      Java求10到100000之间的水仙花数算法示例

      本文实例讲述了Java求10到100000之间的水仙花数算法。分享给大家供大家参考,具体如下: 水仙花数: 概念:水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153) 算法思路分析:这个算法我们分两个步骤来进行;第一:我们做一个求一个数的位数的函数;第二:我们通过调用此函数来进行10到100000之间素数的计算! 下面给出具体的代码(仅供参考): package javastudy;public class Testit1 { public static void main(String[] args) { for (int number = 100; number = 100000; number++) { //求10到10000之间所有的素数,一个大的循环 int temp = number; //这步代码是为了让Getlength(number)不变 int ……

      116小时26分钟前回答

      详解java数据结构与算法之双链表设计与实现

      在单链表分析中,我们可以知道每个结点只有一个指向后继结点的next域,倘若此时已知当前结点p,需要查找其前驱结点,那么就必须从head头指针遍历至p的前驱结点,操作的效率很低,因此如果p有一个指向前驱结点的next域,那效率就高多了,对于这种一个结点中分别包含了前驱结点域pre和后继结点域next的链表,称之为双链表。本篇我们将从以下结点来分析双链表 双链表的设计与实现 双链表的主要优点是对于任意给的结点,都可以很轻易的获取其前驱结点或者后继结点,而主要缺点是每个结点需要添加额外的next域,因此需要更多的空间开销,同时结点的插入与删除操作也将更加耗时,因为需要更多……

      码农之家

      甄乐和 提供上传

      资源
      48
      粉丝
      20
      喜欢
      174
      评论
      6

      Copyright 2018-2021 www.xz577.com 码农之家

      版权投诉 / 书籍推广:520161757@qq.com