MATLAB利用遗传算法求取最优解

编程入门 行业动态 更新时间:2024-10-23 21:35:15

MATLAB利用遗传算法求取<a href=https://www.elefans.com/category/jswz/34/1768745.html style=最优解"/>

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

更多推荐

MATLAB利用遗传算法求取最优解

本文发布于:2023-06-11 23:30:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/645282.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:最优   算法   求取   MATLAB

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!