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共同决定。文章来源:https://www.toymoban.com/news/detail-478567.html
附电子文档《MATLAB遗传算法工具箱及应用》
链接:https://pan.baidu.com/s/1tAHX9Rl3RCrTPPRVNFhlcg?pwd=pof8
提取码:pof8文章来源地址https://www.toymoban.com/news/detail-478567.html
到了这里,关于MATLAB利用遗传算法求取最优解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!