目录
北卡罗来纳大学遗传算法工具箱 gaot 重要函数如下
1.initializega函数介绍
2.ga函数介绍
3.initializega求解一元函数
注:本文的代码可用于matlab 2012a版本
·optimtool(matlab内部封装函数)
·initializega
·ga
·normGeomSelect
·arithXover
·nonUnifMutation
本文主要介绍 initializega 和 ga 两个函数
函数组如下:
pop = initializega(populationSize, variableBounds, evalFN,evalOps,options)
参数 意义
Pop 随机生成的初始种群
populationSize 种群大小即种群中个体的数目
variableBounds 变量边界的矩阵
evalFN 适应度函数的名称
evalOps 适应度函数的参数
options 精度及编码形式,1为浮点编码,0为二进制编码
[x,endPop,bPop,tracelnfo]=ga(bounds,evalFN,evalOps,startPop,opts,termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)
参数 意义
Bounds 变量上下界的矩阵
evalFN 适应度函数的名称
evalOps 适应度函数的参数
startPop 初始种群
opts 精度、编码形式及显示方式,1为浮点编码,0为二进制编码,默认为[1e-61 0]
termFN 终止函数的名称
termOps 终止函数的参数
selectFN 选择函数的名称
sefeectOps 选择函数的参数
xOverFNs 交叉函数的名称
xOverOps 交叉函数的参数
mutFNs 变异函数的名称
mutOps 变异函数的参数
x 优化计算得到的最优个体
endPop 优化终止时的最终种群
bPop 最优种群的进化轨迹
traceInfo 每代的最优适应度函数值和平均适应度函数值矩阵
适应度函数
function [sol, fitnessVal] = fitness(sol, options)
x = sol(1);
fitnessVal = x + 10*sin(5*x)+7*cos(4*x);
end
主函数
%% I. 清空环境变量
clear all
clc
%% II. 绘制函数曲线
x = 0:0.01:9;
y = x + 10*sin(5*x)+7*cos(4*x);
figure
plot(x, y)
xlabel('自变量')
ylabel('因变量')
title('y = x + 10*sin(5*x) + 7*cos(4*x)')
%% III. 初始化种群
initPop = initializega(50,[0 9],'fitness'); % (种群大小, 变量边界的矩阵,适应度函数名称)
%% IV. 遗传算法优化
[x endPop bpop trace] = ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,...
'normGeomSelect',0.08,'arithXover',2,'nonUnifMutation',[2 25 3]);
%% V. 输出最优解并绘制最优点
x
hold on
plot (endPop(:,1),endPop(:,2),'ro')
%% VI. 绘制迭代进化曲线
figure(2)
plot(trace(:,1),trace(:,3),'b:')
hold on
plot(trace(:,1),trace(:,2),'r-')
xlabel('Generation'); ylabel('Fittness');
legend('Mean Fitness', 'Best Fitness')
函数曲线如下:
迭代进化曲线: