MATLAB利用遗传算法求取最优解
MATLAB利用遗传算法求取最优解
MATLAB内置GA函数,用以求解全局最优化问题,适用于求解目标函数最优解问题。
一、GA函数原型:
二、函数介绍
常用的两种分别是:
1.X = ga(fitnessfcn,nvars)
2.X = ga(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)
其中,fitnessfcn为适应度函数(也就目标函数),其参数为向量,nvars是参数向量的维度,函数返回值X为适应度函数最小值时的参数向量。
其它参数,像A,b,Aeq,beq,lb,ub,nonlcon,IntCon用于约束X的取值,这里不多讲述,有需要可详细学习《MATLAB遗传算法工具箱及应用》,文末附本书电子版链接,供学习参考。
三、应用实例
如,适应度函数为,
f = (339-0.01x1-0.003x2)x1 + (399-0.004x1-0.01x2)x2 -(400000+195x1+225x2)
求该函数的最大值。
代码:
此时执行,X =ga(@myfit, 2)
结果显示: Optimization terminated: maximum number of generations exceeded.
说明迭代达到最大次数仍未求得最优解。因此下面通过options增大迭代次数。
结果显示: Optimization terminated: average change in the fitness value less than options.TolFun.
在命令行窗口输出X,FVAL
这个结果与对目标函数 x1、x2 分别求偏导得到的结果(x1=4735, x2=7043, y=553641)是一致的,表明结果正确。
四、optimoptions函数
首先,函数原型:options = optimoptions(SolverName,Name,Value)
附调用遗传算法函数代码,
options = optimoptions(‘ga’);
options = optimoptions(options,‘PopulationSize’, PopulationSize_Data);
options = optimoptions(options,‘CrossoverFraction’, CrossoverFraction_Data);
options = optimoptions(options,‘MigrationFraction’, MigrationFraction_Data);
options = optimoptions(options,‘MaxGenerations’, MaxGenerations_Data);
options = optimoptions(options,‘SelectionFcn’, @selectionroulette);
options = optimoptions(options,‘CrossoverFcn’, @crossovertwopoint);
options = optimoptions(options,‘MutationFcn’, { @mutationgaussian,scale,shrink });
1.PopulationSize:种群规模,初始化种群的数目
2.CrossoverFraction:交叉概率,种群产生下一代的比例,默认是0.8
3.MigrationFraction:编译概率,种群发生变异的比例
4.MaxGenerations:最多进化的代数
5.SelectionFcn:进化的方式,可供选择的函数有五种,最常用的是’selectionroulette’,即轮盘赌方式,感兴趣的可以查阅相关资料来学习
6.CrossoverFcn:交叉的方式,决定了子代的由来,可供选择函数有六种,
‘crossoverscattered’、‘crossoversinglepoint’、‘crossovertwopoint’、
‘crossoverintermediate’、‘crossoverheuristic’、‘crossoverarithmetic’
7.MutationFcn:变异的方式,用以扩大GA算法的搜索空间,默认为mutationgaussian,此变异函数服从均值为0的高斯分布,其标准差由参数scale、shrink、以及InitialPopulationRange option共同决定。
附电子文档《MATLAB遗传算法工具箱及应用》
链接:=pof8
提取码:pof8
- 类继承接口?
- ConcurrentHashMap原理,在JKD7和JDK8版本的区别
- BlockingQueue Interface In Java学习
- [OpenGL] 小游戏
- MarkdownPad2 解决“HTML渲染错误”
- 最优解问题
- 均衡负载
- flink1.14.0+mysql5.7+mysqlcdc2.2.1报错org.apache.flink.shaded.guava18.com.google.common.util.concurren
- C语言实现LZW编码
- JAVA方法SQL语句执行顺序
- 业务消息中心系统设计与实现(一)
- 强制应用横竖屏的简单设置
- 判断升序
- 【janus 】openresty +janus
- 20:计算2的幂
- UDS服务简易教程
- 视频编解码入门知识