网站大量收购独家精品文档,联系QQ:2885784924

基于matlab遗传算法工具箱的设计思路.doc

基于matlab遗传算法工具箱的设计思路.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于matlab遗传算法工具箱的设计思路

基于MATLAB 的遗传算法工具箱设计?? 本文是由北京理工大学的徐瑛和任雪梅同学所作。 2.1遗传算法工具箱的设计思想 工具箱归纳了遗传算法及其各种改进算法的相同之处,建立了一个统一的遗传算法基本流程框架,如下图1所示: ? 遗传算法中最重要的有三个基本操作,我们也称为算子:选择用来决定重组或者交叉的个体,以及被选的个体新产生的个体的个数。首先要计算所有个体的适应函数值,然后得到适应度。适应度可以按适应函数值的比例计算,也可以根据适应函数值排序来得到。交叉将群体内的各个个体随机搭配成对,以某个概率交换它们之间的部分染色体。变异对群体内的每一个个体,以某一概率改变某一个或某一些基因值为其它的基因值。另外,还有编解码运算和个体评价操作。 每一个算子,都可能有多种的具体算法及其实现,组合在一起从而形成了各种各样的遗传算法的改进算法。具体实现时,工具箱将每个算子的不同实现做成标准化的模块,彼此之间可以相互替换,以搭积木的方式组成了遗传算法及其各种改进。 工具箱总体上采用模块式设计,各个模块之间是相互独立的。它包括以下几个模块:命令模块、编解码模块、算子模块、结果显示模块、参数输人模块、监督和参数调整模块。其中命令模块是总控模块,从用户那里得到命令,根据这些命令调度其它模块的运行和停止。编解码是一个互逆的过程,作为一个统一的模块。算子模块由选择、重组或交叉、变异三个子模块组成,是工具箱的核心计算部分。结果显示模块以多种方式如图形、图表等,直观、快捷地显示算法运算的结果,要求做到一边计算、一边显示。参数输人模块负责输人和调整遗传算法的各种选项和参数。为了减少人工干预,工具箱设有基于经验的默认的选项和参数。监督和参数调整模块用于监督算法的运行情况,动态调整参数,使算法始终高效运行。整个工具箱的模块结构和运行过程可以用图2来表示。 ? 我设计的工具箱既具有相当的通用性,又具有相当的灵活性。通用性体现在工具箱基本实现了遗传算法的各种算子的改进及其大多数重要的改进算法。用户不用编程就可以方便地使用工具箱来解决自己特定的问题。灵活性一方面体现在用户可以在多种改进算法中自如地选择,加以组合;另一方面体现在用户还可以很容易地添加自已编写的新算法。因此,我称之为通用遗传算法工具箱。 2.2遗传算法工具箱的具体实现——任务文件和子任务的设计 在系统结构的具体实现上,我借鉴了script的思想,设计了一套以任务文件为核心的运行机制运行遗传算法,首先要定义任务文件。任务文件具有特定的格式,可以使用工具箱的用户界面方便地生成,也可以手工编写。任务文件记录了问题的定义,变量的搜索域,每个算子选用的具体算法及参数,以及其它一些选项。它包括了遗传算法运行所需要的全部信息,指定了一个任务文件,实际上也就指定了一次遗传算法的运行。相应的,执行程序负责读人任务文件的内容,对于用户没有指定的信息,则执行默认的选项或参数,运行这个任务文件所指定的算法来求解问题,并返回所得的结果。运行中还会产生一些动态信息,这些动态信息被记录下来,一方面用于显示给用户,供用户查看和分析:另一方面用于算法的动态调整。随后,在工具箱中又引人了子任务的概念。具体来说,就是在运行一个任务文件的过程中,可以再插人其它的若干个任务文件,称为子任务。甚至子任务还可以再插人下一级的任务文件。这样就形成了任务文件的嵌套。如图3所示。 ? 通过进一步引人子任务的设计,可以实现两类算法。一类是多种群的算法,每个子任务都代表一个种群;另一类则是分层遗传算法,父任务代表高层的遗传算法,子任务代表低层的遗传算法。随着工具箱的发展,甚至可以考虑把不同的任务放到不同的机器上运行,从而实现并行的遗传算法。下面给出一个使用子任务的任务文件例子,其内容及解释如下: Popu:init[50]表示种群需要初始化,种群的规模为50 Bounds:[-1,2]表示单变量优化,变量范围为[-1,2] Coding:Binary表示编码方式为二进制方式 EvalFun:x*sin(10*pi*x)+2.0[]表示目标函数为f(x)=xsin(IOrzx)+2.0 CycleBegin:maxGenTerm40表示循环开始,循环的结束函数及其参数] Select:RouletteSelect[]表示选择函数及其参数 Crossover:SimpleXover[0.8]表示交叉函数及其参数 Mutation:BinaryMutadon[0.05]表示变异函数及其参数 Subtask:one.Task60%表示某一子任务的任务文件和个体所占比例 Subtask:two.Task40%表示某一子任务的任务文件和个体所占比例 ElitistReserve:on表示使用最优保留策略 End表示循环结束 InformCollect:on表示打开运行信息收

文档评论(0)

kakaxi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档