《进化设计模式精选文档.ppt》由会员分享,可在线阅读,更多相关《进化设计模式精选文档.ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、进化设计模式本讲稿第一页,共三十页兰州大学总结和展望总结和展望生命进化的程序性解释及计算机程序模拟生命进化的程序性解释及计算机程序模拟 传统进化算法介绍传统进化算法介绍生命进化理论生命进化理论研究背景与现状研究背景与现状基于反射的进化程序设计模式基于反射的进化程序设计模式 主主要要内内容容本讲稿第二页,共三十页兰州大学2022/10/203 论文主要工作论文主要工作创新一创新一创新二创新二使用进化程使用进化程序设计模式序设计模式对进化理论对进化理论进行了模拟进行了模拟提出了一提出了一种进化程种进化程序设计模序设计模式式(EPM)(EPM)本讲稿第三页,共三十页兰州大学 进化进化生物从低级简单的
2、状态向高级复杂状生物从低级简单的状态向高级复杂状 态演变的过程。态演变的过程。新的科技突破往往是多种技术甚至是不同学科的新的科技突破往往是多种技术甚至是不同学科的知识交叉、集成与融合的产物。知识交叉、集成与融合的产物。计算机科学与生物科学交叉渗透现象十分普遍新计算机科学与生物科学交叉渗透现象十分普遍新技术、新突破不断涌现。技术、新突破不断涌现。在计算领域我们对生物进化的现象进行模仿,已经发在计算领域我们对生物进化的现象进行模仿,已经发展出许多的算法和策略。展出许多的算法和策略。目前在计算机程序设计领域,对软件的动态自适应能目前在计算机程序设计领域,对软件的动态自适应能力的需求越来越强烈。力的需
3、求越来越强烈。一、研究背景与现状一、研究背景与现状本讲稿第四页,共三十页兰州大学进化算法进化算法基于生物进化理论中的遗传变异和自然选择等生物进化机制产生的一类全局随机搜索算法。遗传算法遗传算法(GA)主要模拟了自然选择和自然遗传过程中所发生的一系列繁殖、交叉和基因突变等现象,从问题域可能存在解的初代种群产生开始,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的近似解。二、传统进化算法介绍二、传统进化算法介绍本讲稿第五页,共三十页兰州大学遗遗 传传 算算 法法 流流 程程 图图编编码码、群群体体初初始始化化、选选择择、遗遗传传操操作作、评评价价、终终止止判判定定 1.传统进化算法介绍传统进
4、化算法介绍本讲稿第六页,共三十页兰州大学与本文模拟算法的比较与本文模拟算法的比较 进化算法进化算法本文算法本文算法 特点特点将问题域抽象成一组将问题域抽象成一组编码迭代求出最优解编码迭代求出最优解是一种求解复杂系统是一种求解复杂系统优化问题的通用框架。优化问题的通用框架。将生物体的基因组编码解将生物体的基因组编码解释成程序编码,通过反射释成程序编码,通过反射计算进行修改计算进行修改 目的目的应用生物学领域的灵应用生物学领域的灵感来解决计算领域的感来解决计算领域的问题问题从程序的角度解释生物进从程序的角度解释生物进化的原理化的原理 编码规则编码规则将问题域抽象成一种将问题域抽象成一种染色体编码串
5、,然后染色体编码串,然后通过计算机程序进行通过计算机程序进行循环迭代处理。需要循环迭代处理。需要编码和解码编码和解码将基因抽象为类,基因组将基因抽象为类,基因组染色体抽象为许多基因类染色体抽象为许多基因类的一个线性序列的一个线性序列 本讲稿第七页,共三十页兰州大学三、基于反射的进化程序设计模式三、基于反射的进化程序设计模式反射反射能够访问、检测和修改它本身状态或行为的一种能力。能够访问、检测和修改它本身状态或行为的一种能力。JAVAJAVA反射机制反射机制(动态动态)程序进入运行状态后,可以得到自己的内在结 构,包括数据的存储和相应的指令码段。通过Java.reflect包中的API方法实现。
6、功能(在运行时):判断任意一个对象所属的类;构造任 意一个类的对象;判断任意一个类所具有的成 员变量和方法;调用任意一个对象的方法;修 改任意一个对象的成员变量;可以生成动态代 理,甚至可以自动编程等。本讲稿第八页,共三十页兰州大学1.JAVA1.JAVA反射原理反射原理本讲稿第九页,共三十页兰州大学2.JAVA字节码工程技术字节码工程技术JAVAJAVA字节码工程技术字节码工程技术(静态静态)将编译好的类程序代码装入并扫描分析,建 立该类的映射数据结构图,从而可以取得该 类的内在结构,包括状态变量和行为方法,并且根据需要可以修改这些状态变量和行为 代码,使程序的功能发生改变。在Javassi
7、st工具中定义CtClass。本讲稿第十页,共三十页兰州大学3.3.字节码工程技术原理字节码工程技术原理本讲稿第十一页,共三十页兰州大学4.基于基于反射的进化程序设计模式反射的进化程序设计模式进化程序设计模式进化程序设计模式 1、对某基本问题域分析、编写解决问题的程序并将 其编译,得到字节码形式的类文件(.class)2、将字节码程序装入JVM中,使其进入进程状态,用 java.lang.reflect包中的Class引用指向运行状 态下的字节码对象。然后由该运行进程创建 CtClass类的对象并装入该字节码程序,注意 CtClass对象存储的字节码程序并未进入JVM的运 行状态,只是将该字节
8、码程序采用面向对象的方 式存储在内存中。本讲稿第十二页,共三十页兰州大学4.基于反射的进化程序设计模式基于反射的进化程序设计模式进化程序设计模式进化程序设计模式 3、在程序运行过程中,采用反射技术得到程序的“元 级”抽象即程序自身的结构描述,然后根据具体的 环境进行感知处理得到相应的感知结果并调整自 身组织结构和逻辑算法。4、最后最关键的一步是根据前面的感知结果,在 CtClass对象指向的非运行字节码程序代码中定位 和修改相应的代码段,并将修改后的程序码段以 字节码文件(NewProgram.class)的形式保存,从而实现了程序的一次进化。根据需要可以重复 这一过程,类似于大自然中的物种进
9、化过程。本讲稿第十三页,共三十页兰州大学ClassObjectinstanceOfmetalevelbaselevelEditProgram.classNewProgram.classCtClassLoadedreflection程序进化原理图程序进化原理图问题域字节码进程分析及编码分析及编码生成生成反射反射5.进化进化模式程序设计原理模式程序设计原理本讲稿第十四页,共三十页兰州大学15过去运行过去运行现在运行现在运行未来运行未来运行运运行行阶阶段段存存储储阶阶段段01101101110001100110110100110110110100110110110100110110101011000
10、10101010110110111000110装入运行装入运行修改代码修改代码011011010011011011010011正在运行正在运行修改代码修改代码未来装入未来装入程序进化过程示意图程序进化过程示意图本讲稿第十五页,共三十页兰州大学拉马克进化理论拉马克进化理论 用进废退用进废退环境变化导致变异,变异有目标和意 义的,且具有获得性状的遗传特性。达尔文进化理论达尔文进化理论 自然选择自然选择变异是随机无意义的,自然环境选 择保留和它相适应的物种。综合进化理论综合进化理论 进化的基本单位是群体而非个体,自然选择是生物进化方向的决定力量,生物进化的实质是种群基因频率的改变。四、生命进化理论四
11、、生命进化理论本讲稿第十六页,共三十页兰州大学将生命体中将生命体中DNADNA序列看成一套程序编码序列。序列看成一套程序编码序列。我们假设有一种单性繁殖的生物我们假设有一种单性繁殖的生物-抽象狗。抽象狗抽象狗。抽象狗 基因组中的每一个基因我们抽象为一个基因组中的每一个基因我们抽象为一个JAVAJAVA类,将类,将 染色体抽象为许多染色体抽象为许多JavaJava类的线性组合。类的线性组合。首先抽象出了首先抽象出了1111个基因类,每一个基因类都代表一种个基因类,每一个基因类都代表一种 特定的器官或功能,前特定的器官或功能,前9 9个基因类是抽象狗原来的染个基因类是抽象狗原来的染 色体中就存在的
12、基因,色体中就存在的基因,Gene9Gene9和和Gene10Gene10是准备用来模是准备用来模 拟达尔文进化用的。拟达尔文进化用的。五、生命进化的程序性解释五、生命进化的程序性解释 及计算机程序模拟及计算机程序模拟本讲稿第十七页,共三十页兰州大学1.生命进化的程序性解释生命进化的程序性解释狗的染色体对象模型图狗的染色体对象模型图本讲稿第十八页,共三十页兰州大学2.拉拉马克进化原理图马克进化原理图DogdoginstanceOfmetalevelbaselevel狗的染色体对象狗的染色体对象chromsome.datFood:分泌唾液dog固定模式Bell,Food训练Bell:分泌唾液Fo
13、od:分泌唾液狗后代的染色体对象狗后代的染色体对象chromsomeson.dat修改狗修改狗DNA代码代码繁殖行为本讲稿第十九页,共三十页兰州大学geng5gene4gene3gene2gene0*DNA链链gene1geng6gene7gene83.狗狗的进化程序模型抽象的进化程序模型抽象模拟拉马克进化机制进化后,基因组如下:模拟拉马克进化机制进化后,基因组如下:表达神经系统的表达神经系统的0 0号基因发生了改变,完成了进化!号基因发生了改变,完成了进化!本讲稿第二十页,共三十页兰州大学4.达尔文达尔文进化原理进化原理DogdoginstanceOfmetalevelbaselevel狗的
14、染色体对象狗的染色体对象chromsomex.datLoading狗后代的染色体对象狗后代的染色体对象chromsomesonx.dat修改狗修改狗DNA代码代码基因突变繁殖行为新的能力本讲稿第二十一页,共三十页兰州大学5.狗的狗的进化程序模型抽象进化程序模型抽象geng5gene4gene3gene2gene0DNA链链gene1geng6gene7gene8gene9适合江湖生存能适合江湖生存能力的基因力的基因geng5gene4gene3gene2gene0DNA链链gene1geng6gene7gene8gene10适合山地生存能适合山地生存能力的基因力的基因模拟达尔文进化机制进化后基
15、因组如下:模拟达尔文进化机制进化后基因组如下:本讲稿第二十二页,共三十页兰州大学DogdoginstanceOfmetalevelbaselevel狗的染色体对象狗的染色体对象chromsome.dat狗后代的染色体对象狗后代的染色体对象chromsomeson.dat修改狗修改狗DNA代码代码随机的基因突变新的能力dogson新的能力DogSoninstanceOf“使用”行为导致基因突变6.一种一种统一的进化机制统一的进化机制本讲稿第二十三页,共三十页兰州大学狗后代的染色体对象狗后代的染色体对象chromsomeson.datDoginstanceOfmetalevelbaseleveld
16、ogBell:分泌唾液Food:分泌唾液游泳能力或飞行能力装入达尔文基因突变进化拉马克获得性进化7.一种统一的进化机制一种统一的进化机制本讲稿第二十四页,共三十页兰州大学8.结结 论论通过我们的程序模型,可以看到拉马克的进化通过我们的程序模型,可以看到拉马克的进化 和达尔文的进化在程序上都有其可实现的机制和达尔文的进化在程序上都有其可实现的机制实际上有些条件反射也可以遗传给后代,只要实际上有些条件反射也可以遗传给后代,只要 将这些条件反射的有关代码写到用于遗传的生将这些条件反射的有关代码写到用于遗传的生 殖细胞中就可以了,通过交配时的特殊反应机殖细胞中就可以了,通过交配时的特殊反应机 制就可以
17、实现,这是我们制就可以实现,这是我们“野生变家养,野兽野生变家养,野兽 变家畜变家畜”的理想才成为可能。的理想才成为可能。本讲稿第二十五页,共三十页兰州大学创新点之一创新点之一 基于基于JavaJava语言中的反射机制和字节码工程技语言中的反射机制和字节码工程技术,提出了一种新的程序设计模式,我们称为术,提出了一种新的程序设计模式,我们称为“进进化程序设计模式化程序设计模式”,该模式结合了面向对象程序,该模式结合了面向对象程序设计的基本技巧、运行时的程序反射技巧以及程序设计的基本技巧、运行时的程序反射技巧以及程序运行前的静态反射技巧,在三个层面同时编程,如运行前的静态反射技巧,在三个层面同时编
18、程,如果设计良好,则该程序会自动演化和进化,就象生果设计良好,则该程序会自动演化和进化,就象生物领域中生物物种的自动进化一样,这是本文的第物领域中生物物种的自动进化一样,这是本文的第一个创新点。一个创新点。六、总结与展望六、总结与展望本讲稿第二十六页,共三十页兰州大学总结与展望总结与展望创新点之二创新点之二 利用我们的利用我们的“进化程序设计模式进化程序设计模式”设计了一设计了一系列的模拟程序分别模拟了拉马克的进化原理系列的模拟程序分别模拟了拉马克的进化原理和达尔文的进化原理。通过本文的程序模型,和达尔文的进化原理。通过本文的程序模型,我们指出拉马克的进化理论和达尔文的进化理我们指出拉马克的进
19、化理论和达尔文的进化理论在程序上都有其可实现的机制。论在程序上都有其可实现的机制。本讲稿第二十七页,共三十页兰州大学总结与展望总结与展望展望展望 1 1、进一步优化所提出的进化程序设计模式,、进一步优化所提出的进化程序设计模式,使之更完善。可以用来模拟各学科中与进使之更完善。可以用来模拟各学科中与进 化主题相关的一类问题,可以将其应用在化主题相关的一类问题,可以将其应用在 程序的动态自适应系统中,人工智能领域程序的动态自适应系统中,人工智能领域 和机器人的设计当中。和机器人的设计当中。2 2、通过程序建模来仿真模拟其他的生命现象、通过程序建模来仿真模拟其他的生命现象 尝试用计算机进程的原理来解释生命现象尝试用计算机进程的原理来解释生命现象。本讲稿第二十八页,共三十页兰州大学感谢我的导师马义忠教授给我提出了许多宝贵感谢我的导师马义忠教授给我提出了许多宝贵的建议,并给予悉心的指导。的建议,并给予悉心的指导。感谢学院各位领导和老师对我的关心和帮助。感谢学院各位领导和老师对我的关心和帮助。感谢我的家人给我莫大的理解与支持、鼓励与感谢我的家人给我莫大的理解与支持、鼓励与帮助帮助 。致致 谢谢本讲稿第二十九页,共三十页兰州大学本讲稿第三十页,共三十页
限制150内