MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB软件是一个功能很强大的工具,其中可以使用GA工具箱进行遗传算法的数据优化,下面给出具体的操作简单的实例。
①利用GUI打开并使用MATLAB遗传算法工具箱。
打开MATLAB选择应用程序,点击Optimization。
打开后显示优化界面第一个solver选择ga
函数(注意是单目标只能有一个函数输出值)的MATLAB代码填入Fitness Funtion,输入变量值为2,其它设置options可以使用自定义,也可以使用默认,这里我的种群设置为200。设置完后点击start
我优化的函数代码:
1 2 3 4 |
function f=GA_demo(x) f1=4*x(1).^3+4*x(1)*x(2)+2*x(2).^2-42*x(1)-14; f2=4*x(2).^3+4*x(1)*x(2)+2*x(1).^2-26*x(1)-22; f=f1.^2+f2.^2; |
常用的options
选项 | 功能 | 值 |
---|---|---|
CrossoverFraction | 交叉的概率 | 0-1的小数 |
EliteCount | 用于精英原则, 每次遗传中一定会活下来的个体的个数 |
正整数 |
FitnessLimit | 适应度的范围 | 标量/ {-Inf} |
Generations | 迭代遗传的次数 | 正整数 |
InitialPopulation | 初始种群 | 可以用上一次遗传生成的种群 作为下一次GA的初始种群 |
当然MATLAB官方说这个优化工具箱将在未来的版本中去除,请留意。
②利用命令运行GA工具箱
种群大小200
精英解的数量20
交叉率0.75
迭代次数1000
停止代数(stall generations)与适应度函数值偏差(function tolerance)。若在Stallgenerations设定的代数内,适应度函数值的加权平均变化值小于function tolerance,算法停止
优化的函数是上面GUI中给出的函数
1 2 3 4 5 6 7 8 |
clear clc fitnessfcn = @GA_demo; % 适应度函数句柄 nvars = 2;% 个体的变量数目 options = gaoptimset('PopulationSize',200,'EliteCount',20,'CrossoverFraction',0.75,'Generations',1000,'StallGenLimit',500,'TolFun',1e-100,'PlotFcns',{@gaplotbestf,@gaplotbestindiv}); %参数设置 [x_best,fval] =ga(fitnessfcn,nvars,[],[],[],[],[],[],[],options); % 调用ga函数 |
运行时的结果:
二元决策变量该如何进行修改?
你好,我想优化一个具有四个变量的函数方程式,但是我用遗传算法工具箱时,他总提示我输入变量不足,我想向你请教,希望你可以教教我·
我也不大清楚呀,你可以仔细研读MATLAB文档