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

上传人:第*** 文档编号:32750044 上传时间:2018-02-12 格式:DOC 页数:8 大小:316.50KB
返回 下载 相关 举报
基于matlab遗传算法工具箱的设计思路_第1页
第1页 / 共8页
基于matlab遗传算法工具箱的设计思路_第2页
第2页 / 共8页
基于matlab遗传算法工具箱的设计思路_第3页
第3页 / 共8页
基于matlab遗传算法工具箱的设计思路_第4页
第4页 / 共8页
基于matlab遗传算法工具箱的设计思路_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《基于matlab遗传算法工具箱的设计思路》由会员分享,可在线阅读,更多相关《基于matlab遗传算法工具箱的设计思路(8页珍藏版)》请在金锄头文库上搜索。

1、基于 MATLAB 的遗传算法工具箱设计 本文是由北京理工大学的徐瑛和任雪梅同学所作。2.1 遗传算法工具箱的设计思想工具箱归纳了遗传算法及其各种改进算法的相同之处,建立了一个统一的遗传算法基本流程框架,如下图 1 所示:遗传算法中最重要的有三个基本操作,我们也称为算子:选择用来决定重组或者交叉的个体,以及被选的个体新产生的个体的个数。首先要计算所有个体的适应函数值,然后得到适应度。适应度可以按适应函数值的比例计算,也可以根据适应函数值排序来得到。交叉将群体内的各个个体随机搭配成对,以某个概率交换它们之间的部分染色体。变异对群体内的每一个个体,以某一概率改变某一个或某一些基因值为其它的基因值。

2、另外,还有编解码运算和个体评价操作。每一个算子,都可能有多种的具体算法及其实现,组合在一起从而形成了各种各样的遗传算法的改进算法。具体实现时,工具箱将每个算子的不同实现做成标准化的模块,彼此之间可以相互替换,以搭积木的方式组成了遗传算法及其各种改进。工具箱总体上采用模块式设计,各个模块之间是相互独立的。它包括以下几个模块:命令模块、编解码模块、算子模块、结果显示模块、参数输人模块、监督和参数调整模块。其中命令模块是总控模块,从用户那里得到命令,根据这些命令调度其它模块的运行和停止。编解码是一个互逆的过程,作为一个统一的模块。算子模块由选择、重组或交叉、变异三个子模块组成,是工具箱的核心计算部分

3、。结果显示模块以多种方式如图形、图表等,直观、快捷地显示算法运算的结果,要求做到一边计算、一边显示。参数输人模块负责输人和调整遗传算法的各种选项和参数。为了减少人工干预,工具箱设有基于经验的默认的选项和参数。监督和参数调整模块用于监督算法的运行情况,动态调整参数,使算法始终高效运行。整个工具箱的模块结构和运行过程可以用图 2 来表示。 我设计的工具箱既具有相当的通用性,又具有相当的灵活性。通用性体现在工具箱基本实现了遗传算法的各种算子的改进及其大多数重要的改进算法。用户不用编程就可以方便地使用工具箱来解决自己特定的问题。灵活性一方面体现在用户可以在多种改进算法中自如地选择,加以组合;另一方面体

4、现在用户还可以很容易地添加自已编写的新算法。因此,我称之为通用遗传算法工具箱。2.2 遗传算法工具箱的具体实现任务文件和子任务的设计在系统结构的具体实现上,我借鉴了 script 的思想,设计了一套以任务文件为核心的运行机制运行遗传算法,首先要定义任务文件。任务文件具有特定的格式,可以使用工具箱的用户界面方便地生成,也可以手工编写。任务文件记录了问题的定义,变量的搜索域,每个算子选用的具体算法及参数,以及其它一些选项。它包括了遗传算法运行所需要的全部信息,指定了一个任务文件,实际上也就指定了一次遗传算法的运行。相应的,执行程序负责读人任务文件的内容,对于用户没有指定的信息,则执行默认的选项或参

5、数,运行这个任务文件所指定的算法来求解问题,并返回所得的结果。运行中还会产生一些动态信息,这些动态信息被记录下来,一方面用于显示给用户,供用户查看和分析:另一方面用于算法的动态调整。随后,在工具箱中又引人了子任务的概念。具体来说,就是在运行一个任务文件的过程中,可以再插人其它的若干个任务文件,称为子任务。甚至子任务还可以再插人下一级的任务文件。这样就形成了任务文件的嵌套。如图 3 所示。 通过进一步引人子任务的设计,可以实现两类算法。一类是多种群的算法,每个子任务都代表一个种群;另一类则是分层遗传算法,父任务代表高层的遗传算法,子任务代表低层的遗传算法。随着工具箱的发展,甚至可以考虑把不同的任

6、务放到不同的机器上运行,从而实现并行的遗传算法。下面给出一个使用子任务的任务文件例子,其内容及解释如下:Popu:init50表示种群需要初始化,种群的规模为 50Bounds:-1,2表示单变量优化,变量范围为-1,2Coding:Binary 表示编码方式为二进制方式EvalFun:x*sin(10*pi*x)+2.0表示目标函数为 f(x)=xsin(IOrzx)+2.0CycleBegin:maxGenTerm40 表示循环开始,循环的结束函数及其参数Select:RouletteSelect表示选择函数及其参数Crossover:SimpleXover0.8表示交叉函数及其参数Mut

7、ation:BinaryMutadon0.05表示变异函数及其参数Subtask:one.Task60%表示某一子任务的任务文件和个体所占比例Subtask:two.Task40%表示某一子任务的任务文件和个体所占比例ElitistReserve:on 表示使用最优保留策略End 表示循环结束InformCollect:on 表示打开运行信息收集选项2.3 工具箱对自适应性的支持在工具箱中,把自适应的特性加以规范,把自适应性总结为对主要算法参数的调整,即所谓动态参数,并且把对参数的调整与主要算法相分离,使整个程序更为模块化,便于替换和扩充。在工具箱中,可以对选择、交叉和变异这三种主要算子的参数

8、进行自适应调整,方法是选定三个自适应调整函数,在任务文件中分别指定。在程序运行时,如果存在这三个自适应调整函数,则运行这些函数,并将其结果分别作为选择、交叉和变异算子的参数,代人到选择、交叉和变异的算法中运行;否则将使用选择、交叉和变异算子默认的参数。以 Srinvivas 等提出的自适应遗传算法为例。遗传算法的参数中,交叉概率 P 和变异概率凡的选择是影响遗传算法行为和性能的关键参数,直接影响算法的收敛性,P 越大,新个体产生的速度就越快。然而,P 过大时遗传模式被破坏的可能性就越大,使得具有高适应度的个体结构很快就被破坏;但是如果 P 过小,会使搜索过程缓慢,以至停滞不前。对于变异概率 P

9、,如果 P 的过小,就不易产生新结构;如果 P 的取值过大,那么遗传算法就趋向于随机搜索了。为了避免选择合适 P 和 P的麻烦,Srinvivas 提出了自适应遗传算法,让几和凡的值能随适应度自动改变。当种群个体适应值趋于一致或者趋于局部最优时,使 P 和凡的值增加,当群体适应度比较分散时,使 P 和凡的值减少。同时,对于适应值高于群体平均适应值的个体,对应于较低的 P 和凡的值,使该解得以保护进人下一代,而低于群体平均适应度的个体,相对于较高的典和凡,使该解被淘汰掉。因此,自适应的 P 和凡能够提供相对某个问题的最佳的 P 和凡。自适应遗传算法在保持种群多样性的同时,保证遗传算法的收敛性。在

10、自适应遗传算法中,Pc 和 Pm 如下公式进行自适应调整:其图如图 4 和 5 所示。下面我给出使用和不使用自适应变异率的算法运行情况比较:不使用自适应变异率的算法,其变异率固定为 0.05;而使用自适应变异率的算法,其变异率则在0.03,0.1之间自动变动,两种算法的其余参数均相同。下图是其结果的对比,虚线表示最佳个体的适应度,实线表示全部个体平均的适应度。上面一对虚实线是自适应变异率的算法结果;下面一对虚实线是固定变异率的算法结果。可以看出自适应变异率的算法的效果要明显优于固定变异率算法的效果。工具箱还实现了对运行动态参数的支持,可以在任何一个函数运行时将进化代数等运行动态数值作为参数。具

11、体方法是在填写函数参数时,不填写具体数值,而是填写“gen”等变量名,在函数执行时,工具箱会自动将变量名解释为当前变量值,代人函数运行。当然,这些变量的是预置好的,其名称也是固定的。2.4 一种基于距离的 Paret。最优解算法使用遗传算法工具箱还可以实现对多目标优化的支持。现实中经常会遇到在多准则或多设计目标下设计和决策的问题,通常这些目标是无法同时达到最优的,而又需要找到全面满足这些目标的最佳设计方案。解决多目标和多约束的优化问题,即多目标优化。通常的做法是根据某加权评价函数将多目标合成单一目标来进行优化。但大多数情况下,在优化之前这种加权值是难以确知的。这样为了使决策者深人掌握优化问题的

12、特点,有必要提供不同权值情况下相应的最优解,以便于做出合理的最终选择。法国经济学家 VPareto 最早研究经济领域内的多目标优化问题,他的理论被称之为 Pareto 最优性理论。通过优化一组费用函数,其解不是单一点,而是一组点的集合,称之为 Paret 最优集。Pareto 最优集中的点具有这样的特点,没有点在所有目标上都比集里的点好。工具箱提供了一种合理简明的求 Pareto 最优解的算法,基于距离的 Pareto 最优算法。假设已经存在一组 Pareto 解,这些解构成了一个 Pareto 边界以这个边界为基准,赋予所有可行解一个标量,我称之为此可行解的逼近度,这个逼近度表示某一个可行解

13、到 Pareto 边界的距离,有可能是正,也有可能是负。这个距离是这样定义的。把可行解看作是搜索空间里的一个点,搜索空间就是所有可行解的集合。当前 Pareto 边界把整个搜索空间分成了三个部分,一部分称为 Pareto 正空间,这里的点 Pareto 优于当前 Pareto 边界上的至少一个点;另一部分称为 Pareto 负空间,这里的点劣于Pareto 边界上的至少一个点。还有一部分,这里的点即不优于当前 Paret。边界上的某一点,也不劣于当前 Pareto 边界上的某一点,我称为 Paret 边界区。任意一个新个体,必定落在这三个区域中的某一个里。在这三种情况下,分别计算这个可行解到

14、Pareto 边界的逼近度。A)此点落在 Pareto正空间,则逼近度为正,其大小为计算此点到所有当前 Pareto 解的距离,其中最小的一个距离就是逼近度的大小。B)此点落在 Pareto 负空间,则逼近度为负,其大小为计算此点到所有当前 Pareto解的距离,最小的一个距离就是逼近度的大小。C)此点落在 Pareto 边界区,即此点可以作为一个Pareto 边界点,则此点的逼近度为零。此时,已经可以把这个逼近度作尺度变换后全部变换成正值,作为个体的适应度,进行遗传算法的运算了。但是,这么做有一个问题在于 Pareto 边界是不断更新的,一般说来每一代都不一样,于是不同代种群个体的逼近度是无

15、法直接比较的,于是尺度变换后的适应度也无法比较。所以需要找到一个全局标准的适应度,使得可以比较不同代的种群个体的适应度,从而使用户可以直观清楚地观察到种群是如何不断进化的,也就是适应度是如何随着进化的进行而增加的。工具箱采用的方法是每进化一代,计算此代落在 Pareto 正空间的全部点的逼近度的均值,并将这个均值除以了N1/2(N 为目标的个数),以此值作为此代 Pareto 边界近似的进化值。任一可行解的适应度定义为此前全部代 Pareto 边界的进化值的和加上此可行解对当前 Paret。边界的逼近度除以了 N1/2。如图 7所示。 此算法提出了一个全局的表示 Pareto 多目标优化中进化程度的标量,从而使进化过程直观清晰第二是由于有单维的适应度,使得单目标的遗传算法和多目标的遗传算法在程序结构上实现了统一,全部的改进算法无需任何更改就既可以用于单目标,又可以用于多目标,大大简化了工具箱的编写和改进。而且,这种方法得到的适应度具有明确的物理意义,且与目标的个数无关,计算效率较高。 图 8 为一个工具箱的多目标 Pareto 优化结果图,需要最大化的两个目标 X 和 Y 满足如下的关系X*Y=10。实线为理论 Pareto 解,虚线为工具箱求得的 Pareto 解。由图可见,工具箱的解在绝大部分情况下已经非常接近理论解。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号