matlab----GA遗传算法
2018-02-03 21:32
756 查看
1.GA的调用:
![](https://img-blog.csdn.net/20180203212555419?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamllamlleGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20180203212743131?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamllamlleGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20180203212801535?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamllamlleGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2.例:当N = 10时
![](https://img-blog.csdn.net/20180203212820827?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamllamlleGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
函数为:
.m为:
最终结果:
![](https://img-blog.csdn.net/20180203213137787?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamllamlleGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3.GA在求解多约束非线性规划问题
注:Lingo也为首选方法; Matlab优化工具箱求解精度不够,穷举法效率太低
3.1:例
![](https://img-blog.csdn.net/20180203215752522?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamllamlleGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
函数为:
%子函数:适应度函数同时也是目标函数,
function f=ch14_2f(x)
g1=1.5+x(1)*x(2)-x(1)-x(2);
g2=-x(1)*x(2);
if(g1>0|g2>10)
f=100;
else
f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
end
.m为:
%主程序:本程序采用遗传算法接力进化,
%将上次进化结束后得到的最终种群作为下次输入的初始种群
clc;
clear all;
%进化的代数
T=100;
optionsOrigin=gaoptimset('Generations',T/2);
[x,fval,reason,output,finnal_pop]=ga(@ch14_2f,2,optionsOrigin);
%进行第二次接力进化
options1=gaoptimset('Generations',T/2,'InitialPopulation',finnal_pop,...
'PlotFcns',@gaplotbestf);
[x,fval,reason,output,finnal_pop]=ga(@ch14_2f,2,options1);
Bestx=x
BestFval=fval
2.例:当N = 10时
函数为:
function f = lbw(x) if x(1)>30 || x(1) <-30 || x(2)>30 || x(2) <-30 || x(3)>30 || x(3) <-30 || x(4)>30 || x(4) <-30 || x(5)>30 || x(5) <-30 || x(6)>30 || x(6) <-30 || x(7)>30 || x(7) <-30 || x(8)>30 || x(8) <-30 || x(9)>30 || x(9) <-30 || x(10)>30 || x(10) <-30 f = 300; else s1 = 0; s2 = 0; for i = 1 : 10 s1 = s1 + x(i)^2; s2 = s2 + cos(2 * pi * x(i)); end f = -2 * pi *exp(-0.2 * sqrt(1/10 * s1)) - exp(1/10 * s2) + 2 * pi; end
.m为:
%调用GA遗传算法 %Generations : 超过800代时停止; StallGenLimit : 超过连续代数300不进化时停止; PlotFcns :绘图函数 options = gaoptimset('Generations',800,'StallGenLimit',300,'PlotFcns',@gaplotbestf); %ga(待求函数,未知变量,选择): 求最小值 [x,f] = ga(@lbw,10,options)
最终结果:
3.GA在求解多约束非线性规划问题
注:Lingo也为首选方法; Matlab优化工具箱求解精度不够,穷举法效率太低
3.1:例
函数为:
%子函数:适应度函数同时也是目标函数,
function f=ch14_2f(x)
g1=1.5+x(1)*x(2)-x(1)-x(2);
g2=-x(1)*x(2);
if(g1>0|g2>10)
f=100;
else
f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
end
.m为:
%主程序:本程序采用遗传算法接力进化,
%将上次进化结束后得到的最终种群作为下次输入的初始种群
clc;
clear all;
%进化的代数
T=100;
optionsOrigin=gaoptimset('Generations',T/2);
[x,fval,reason,output,finnal_pop]=ga(@ch14_2f,2,optionsOrigin);
%进行第二次接力进化
options1=gaoptimset('Generations',T/2,'InitialPopulation',finnal_pop,...
'PlotFcns',@gaplotbestf);
[x,fval,reason,output,finnal_pop]=ga(@ch14_2f,2,options1);
Bestx=x
BestFval=fval
相关文章推荐
- 遗传算法(GA)的matlab实现
- 《遗传算法(GA)的MATLAB实现》
- MATLAB找不到遗传算法工具箱,用不了gatool命令的解决方案
- 基本遗传算法(GA)的算法原理、步骤、及Matlab实现
- GA遗传算法Matlab版本实例注释
- 遗传算法(四)MATLAB GA工具箱使用 附解TSP问题
- 初识Matlab遗传算法工具箱 ga
- 【GA算法】遗传算法原理及其Matlab代码
- 遗传算法实现之python VS matlab
- 遗传算法的简单讲解与matlab实现
- matlab遗传算法工具箱(GADs)
- matlab遗传算法工具箱函数及…
- Matlab遗传算法优化问题求解的演示样例代码
- 遗传算法MATLAB
- matlab遗传算法工具箱的安装
- 遗传算法(一)基本遗传算法(SGA)及MATLAB源码
- 使用MATLAB中遗传算法工具
- MATLAB遗传算法函数总结
- 遗传算法解决路线规划问题(Vehicle Routing Problem based on GA)
- 遗传算法详解(GA)