免费预览已结束,剩余9页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
遗传算法遗传算法 经典学习经典学习 MatlabMatlab 代码代码 遗传算法实例 也是自己找来的 原代码有少许错误 本人都已更正了 调试运行都通过了的 对于初学者 尤其是还没有编程经验的非常有用的一个文件 遗传算法实例 下面举例说明遗传算法 求下列函数的最大值 f x 10 sin 5x 7 cos 4x x 0 10 将 x 的值用一个 10 位的二值形式表示为二值问题 一个 10 位的二值数提供 的分辨率是每为 10 0 2 10 1 0 01 将变量域 0 10 离散化为二值域 0 1023 x 0 10 b 1023 其中 b 是 0 1023 中的一个二值数 编程 2 1 初始化 编码 initpop m 函数的功能是实现群体的初始化 popsize 表示群体的大小 chromlength 表示染色体的长度 二值数的长度 长度大小取决于变量的二进制编码的长度 在本例中取 10 位 遗传算法子程序 Name initpop m 初始化 function pop initpop popsize chromlength pop round rand popsize chromlength rand 随机产生每个单元为 0 1 行数为 popsize 列数为 chromlength 的矩阵 roud 对矩阵的每个单元进行圆整 这样产生的初始种群 2 2 计算目标函数值 2 2 1 将二进制数转化为十进制数 1 遗传算法子程序 Name decodebinary m 产生 2 n 2 n 1 1 的行向量 然后求和 将二进制转化为十进制 function pop2 decodebinary pop px py size pop 求 pop 行和列数 for i 1 py pop1 i 2 py i pop i end pop2 sum pop1 2 求 pop1 的每行之和 2 2 2 将二进制编码转化为十进制数 2 decodechrom m 函数的功能是将染色体 或二进制编码 转换为十进制 参数 spoint 表示待解码的二进制串的起始位置 对于多个变量而言 如有两个变量 采用 20 为表示 每个变量 10 为 则第 一个变量从 1 开始 另一个变量从 11 开始 本例为 1 参数 1ength 表示所截取的长度 本例为 10 遗传算法子程序 Name decodechrom m 将二进制编码转换成十进制 function pop2 decodechrom pop spoint length pop1 pop spoint spoint length 1 pop2 decodebinary pop1 2 2 3 计算目标函数值 calobjvalue m 函数的功能是实现目标函数的计算 其公式采用本文示例仿 真 可根据不同优化问题予以修改 遗传算法子程序 Name calobjvalue m 实现目标函数的计算 function objvalue calobjvalue pop temp1 decodechrom pop 1 10 将 pop 每行转化成十进制数 x temp1 10 1023 将二值域 中的数转化为变量域 的数 objvalue 10 sin 5 x 7 cos 4 x 计算目标函数值 2 3 计算个体的适应值 遗传算法子程序 Name calfitvalue m 计算个体的适应值 function fitvalue calfitvalue objvalue global Cmin Cmin 0 px py size objvalue for i 1 px if objvalue i Cmin 0 temp Cmin objvalue i else temp 0 0 end fitvalue i temp end fitvalue fitvalue 2 4 选择复制 选择或复制操作是决定哪些个体可以进入下一代 程序中采用赌轮盘选择法 选择 这种方法较易实现 根据方程 pi fi fi fi fsum 选择步骤 1 在第 t 代 由 1 式计算 fsum 和 pi 2 产生 0 1 的随机数 rand 求 s rand fsum 3 求 fi s 中最小的 k 则第 k 个个体被选中 4 进行 N 次 2 3 操作 得到 N 个个体 成为第 t t 1 代种群 遗传算法子程序 Name selection m 选择复制 function newpop selection pop fitvalue totalfit sum fitvalue 求适应值之和 fitvalue fitvalue totalfit 单个个体被选择的概率 fitvalue cumsum fitvalue 如 fitvalue 1 2 3 4 则 cumsum fitvalue 1 3 6 10 px py size pop ms sort rand px 1 从小到大排列 fitin 1 newin 1 while newin px if ms newin fitvalue fitin newpop newin pop fitin newin newin 1 else fitin fitin 1 end end 2 5 交叉 交叉 crossover 群体中的每个个体之间都以一定的概率 pc 交叉 即两个 个体从各自字符串的某一位置 一般是随机确定 开始互相交换 这类似生物进化过程中的基因分裂与重 组 例如 假设 2 个父代个体 x1 x2 为 x1 0100110 x2 1010001 从每个个体的第 3 位开始交叉 交又后得到 2 个新的子代个体 y1 y2 分别为 y1 0100001 y2 1010110 这样 2 个子代个体就分别具有了 2 个父代个体的某些特征 利用交又我们有 可能由父代个体在子代组合成具有更高适合度的个体 事实上交又是遗传算法区别于其它传统优化方法的主要特点之一 遗传算法子程序 Name crossover m 交叉 function newpop crossover pop pc px py size pop newpop ones size pop for i 1 2 px 1 if rand pc cpoint round rand py newpop i pop i 1 cpoint pop i 1 cpoint 1 py newpop i 1 pop i 1 1 cpoint pop i cpoint 1 py else newpop i pop i newpop i 1 pop i 1 end end 2 6 变异 变异 mutation 基因的突变普遍存在于生物的进化过程中 变异是指父代 中的每个个体的每一位都以概率 pm 翻转 即由 1 变为 0 或由 0 变为 1 遗传算法的变异特性可以使求解过程随机地搜索到解 可能存在的整个空间 因此可以在一定程度上求得全局最优解 遗传算法子程序 Name mutation m 变异 function newpop mutation pop pm px py size pop newpop ones size pop for i 1 px if rand pm mpoint round rand py if mpointbestfit bestindividual pop i bestfit fitvalue i end end 2 8 主程序 遗传算法主程序 Name genmain05 m clear clf popsize 20 群体大小 chromlength 10 字符串长度 个体长度 pc 0 6 交叉概率 pm 0 001 变异概率 pop initpop popsize chromlength 随机产生初始群体 for i 1 20 20 为迭代次数 objvalue calobjvalue pop 计算目标函数 fitvalue calfitvalue objvalue 计算群体中每个个体的适应度 newpop selection pop fitvalue 复制 newpop crossover pop pc 交叉 newpop mutation pop pc 变异 bestindividual bestfit best pop fitvalue 求出群体中适应值最大的 个体及其适应值 y i max bestfit n i i pop5 bestindividual x i decodechrom pop5 1 chromlength 10 1023 pop newpop end fplot 10 sin 5 x 7 cos 4 x 0 10 hold on plot x y r hold off z index max y 计算最大值及其位置 x5 x index 计算最大值对应的 x 值 y z 问题 求 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 0055 大家可以直接绘出 f x 的图形来大概看看 f x 的最值是多少 也可是使用优 化函数来验证 matlab 命令行执行命令 fplot x 10 sin 5 x 7 cos 4 x 0 9 evalops 是传递给适应度函数的参数 opts 是二进制编码的精度 termops 是 选择 maxGenTerm 结束函数时传递个 maxGenTerm 的参数 即遗传代数 xoverops 是传递给交叉函数的参数 mutops 是传递给变异函数的参数 问题 求 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 最大代数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 互联网+金融服务模式创新与风险控制
- 农村后备干部合同协议
- 合伙购买泵车协议合同
- 农村林地租地合同范本
- 养别人小孩写合同协议
- 合同新增材料补充协议
- 合伙公司注销合同范本
- 劳务费合同协议书模板
- 叶菜种植收购合同范本
- 俱乐部学员协议书范本
- 《小学劳动教育研究的文献综述》3800字
- 航空器租赁合同模板
- 物业项目开办物资明细表(参考)
- GB/T 44577-2024商用电动洗碗机性能测试方法
- 口腔颌面部间隙感染-颞、舌下、颏下、咽旁间隙感染
- 重度哮喘诊断与处理中国专家共识(2024)解读
- 2024-2030年中国光纤激光器行业发展趋势及投资风险分析研究报告
- 2024广东珠海市强制隔离戒毒所招聘3人易考易错模拟试题(共500题)试卷后附参考答案
- 4.2.1 共面直线(课件)-【中职专用】高二数学(高教版2021拓展模块一上册)
- DL-T-5161.5-2018电气装置安装工程质量检验及评定规程第5部分:电缆线路施工质量检验
- 高校辅导员招聘笔试试题及答案
评论
0/150
提交评论