Matlab 遗传算法及实例_第1页
Matlab 遗传算法及实例_第2页
Matlab 遗传算法及实例_第3页
Matlab 遗传算法及实例_第4页
Matlab 遗传算法及实例_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MatlabMatlab 遗传算法及实例遗传算法及实例 Matlab 遗传算法工具箱函数及实例讲解 转 最近研究了一下遗传算法 因为要用遗传算法来求解多元非线性模型 还 好用遗传算法的工具 箱予以实现了 期间也遇到了许多问题 借此与大家分享一下 首先 我们要熟悉遗传算法的基本原理与运算流程 基本原理 遗传算法是一种典型的启发式算法 属于非数值算法范畴 它是模 拟达尔文的自然 选择学说和自然界的生物进化过程的一种计算模型 它是采用简单的编码技术 来表示各种复杂 的结构 并通过对一组编码表示进行简单的遗传操作和优胜劣汰的自然选择来 指导学习和确定 搜索的方向 遗传算法的操作对象是一群二进制串 称为染色体 个体 即 种群 每一个染 色体都对应问题的一个解 从初始种群出发 采用基于适应度函数的选择策略 在当前种群中选 择个体 使用杂交和变异来产生下一代种群 如此模仿生命的进化进行不断演 化 直到满足期 望的终止条件 运算流程 Step 1 对遗传算法的运行参数进行赋值 参数包括种群规模 变量个数 交 叉概率 变异概 率以及遗传运算的终止进化代数 Step 2 建立区域描述器 根据轨道交通与常规公交运营协调模型的求解变量 的约束条件 设 置变量的取值范围 Step 3 在 Step 2 的变量取值范围内 随机产生初始群体 代入适应度函数计 算其适应度值 Step 4 执行比例选择算子进行选择操作 Step 5 按交叉概率对交叉算子执行交叉操作 Step 6 按变异概率执行离散变异操作 Step 7 计算 Step 6 得到局部最优解中每个个体的适应值 并执行最优个体保 存策略 Step 8 判断是否满足遗传运算的终止进化代数 不满足则返回 Step 4 满足 则输出运算结果 其次 运用遗传算法工具箱 运用基于 Matlab 的遗传算法工具箱非常方便 遗传算法工具箱里包括了我们需 要的各种函数库 目前 基于 Matlab 的遗传算法工具箱也很多 比较流行的有英国设菲尔德大 学开发的遗传算 法工具箱 GATBX GAOT 以及 Math Works 公司推出的 GADS 实际上 GADS 就是 大家所看到的 Matlab 中自带的工具箱 我在网上看到有问为什么遗传算法函数不能调用的问 题 其实 主要 就是因为用的工具箱不同 因为 有些人用的是 GATBX 带有的函数 但 MATLAB 自带的遗传算法 工具箱是 GADS GADS 当然没有 GATBX 里的函数 因此运行程序时会报错 当你 用 MATLAB 来编写 遗传算法代码时 要根据你所安装的工具箱来编写代码 以 GATBX 为例 运用 GATBX 时 要将 GATBX 解压到 Matlab 下的 toolbox 文件夹 里 同时 set path 将 GATBX 文件夹加入到路径当中 最后 编写 Matlab 运行遗传算法的代码 这块内容主要包括两方面工作 1 将模型用程序写出来 M 文件 即目标 函数 若目标函 数非负 即可直接将目标函数作为适应度函数 2 设置遗传算法的运行参数 包括 种群规 模 变量个数 区域描述器 交叉概率 变异概率以及遗传运算的终止进化代 数等等 为方便大家理解 以下为例 求解模型 TC x1 2 x2 3 x3 4 x4 1 x 0 根据上面的求解模型 可以写出模型的 M 文件如下 即适应度函数 function TC TotalCost x TC 0 for i 1 4 TC TC i x i end 然后 可以利用遗传算法工具箱来写出遗传算法运行的主要程序 如下 定义遗传算法参数 NIND 20 个体数目 MAXGEN 200 最大遗传代数 NVAR 4 变量维数 PRECI 20 变量的二进制位数 GGAP 0 9 代沟 trace zeros MAXGEN 2 算法性能跟踪 建立区域描述器 FieldD rep PRECI 1 NVAR rep 1 0 1 NVAR rep 1 0 1 1 1 NVAR Chrom crtbp NIND NVAR PRECI 创建初始种群 gen 0 代计数器 ObjV TotalCost bs2rv Chrom FieldD 计算初始种群个体的目 标函数值 while gen MAXGEN FitnV ranking ObjV 分配适应度值 SelCh select sus Chrom FitnV GGAP 选择 SelCh recombin xovsp SelCh 0 7 重组 SelCh mut SelCh 0 07 变异 ObjVSel TotalCost bs2rv SelCh FieldD 计算子代目标函数值 Chrom ObjV reins Chrom SelCh 1 1 ObjV ObjVSel 重插入 gen gen 1 输出最优解及其对应的 10 个变量的十进制值 Y I min ObjVSel Y X bs2rv Chrom I FieldD trace gen 1 min ObjV trace gen 2 sum ObjV length ObjV end plot trace 1 hold on plot trace 2 grid legend 种群均值的变换 最优解的变化 显然 根据模型的特征 最优解应该是 10 自变量分别取 1 1 1 1 大 家可以安装 GATBX 在 Matlab 中建立目标函数的 M 文件以及遗传算法主程序的文件来进行 试验 希望以上内容对学习和运用遗传算法的同仁有所帮助 因为本人也是初学 因 此有不详之处请 见谅 matlab 遗传算法工具箱函数及实例讲解 转引 gaotv5 核心函数 1 function pop initializega num bounds eevalFN eevalOps options 初始种群的生 成函数 输出参数 pop 生成的初始种群 输入参数 num 种群中的个体数目 bounds 代表变量的上下界的矩阵 eevalFN 适应度函数 eevalOps 传递给适应度函数的参数 options 选择编码形式 浮点编码或是二进制编码 precision F or B 如 precision 变量进行二进制编码时指定的精度 F or B 为 1 时选择浮点编码 否则为二进制编码 由 precision 指定精度 2 function x endPop bPop traceInfo ga bounds evalFN evalOps startPop opts termFN termOps selectFN selectOps xOverFNs xOverOps mutFNs mutOps 遗传 算法函数 输出参数 x 求得的最优解 endPop 最终得到的种群 bPop 最优种群的一个搜索轨迹 输入参数 bounds 代表变量上下界的矩阵 evalFN 适应度函数 evalOps 传递给适应度函数的参数 startPop 初始种群 opts epsilon prob ops display opts 1 2 等同于 initializega 的 options 参数 第三 个参数控制是否输出 一般为 0 如 1e 6 1 0 termFN 终止函数的名称 如 maxGenTerm termOps 传递个终止函数的参数 如 100 selectFN 选择函数的名称 如 normGeomSelect selectOps 传递个选择函数的参数 如 0 08 xOverFNs 交叉函数名称表 以空格分开 如 arithXover heuristicXover simpleXover xOverOps 传递给交叉函数的参数表 如 2 0 2 3 2 0 mutFNs 变异函数表 如 boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation mutOps 传递给交叉函数的参数表 如 4 0 0 6 100 3 4 100 3 4 0 0 注意 matlab 工具箱函数必须放在工作目录下 问题 求 f x x 10 sin 5x 7 cos 4x 的最大值 其中 0 x 9 分析 选择二进制编码 种群中的个体数目为 10 二进制编码长度为 20 交 叉概率为 0 95 变异概率为 0 08 程序清单 编写目标函数 function sol eval fitness sol options x sol 1 eval x 10 sin 5 x 7 cos 4 x 把上述函数存储为 fitness m 文件并放在工作目录下 initPop initializega 10 0 9 fitness 生成初始种群 大小为 10 x endPop bPop trace ga 0 9 fitness initPop 1e 6 1 1 maxGenTerm 25 normGeomSelect 0 08 arithXover 2 nonUnifMutation 2 25 3 25 次遗传迭代 运算借过为 x 7 8562 24 8553 当 x 为 7 8562 时 f x 取最大值 24 8553 注 遗传算法一般用来取得近似最优解 而不是最优解 遗传算法实例 2 问题 在 5 Xi 5 i 1 2 区间内 求解 f x1 x2 20 exp 0 2 sqrt 0 5 x1 2 x2 2 exp 0 5 cos 2 pi x1 cos 2 pi x2 22 71282 的最小值 分析 种群大小 10 最大代数 1000 变异率 0 1 交叉率 0 3 程序清单 源函数的 matlab 代码 function eval f sol numv size sol 2 x sol 1 numv eval 20 exp 0 2 sqrt sum x 2 numv exp sum cos 2 pi x numv 22 71282 适应度函数的 matlab 代码 function sol eval fitness sol options numv size sol 2 1 x sol 1 numv eval f x eval eval 遗传算法的 matlab 代码 bounds ones 2 1 5 5 p endPop bestSols trace ga bounds fitness 注 前两个文件存储为 m 文件并放在工作目录下 运行结果为 p 0 0000 0 0000 0 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论