本资源提供MATLAB遗传算法(GA)工具箱(GATBX)及其RAR压缩包下载,适用于科研与工程优化问题求解。
最近开始研究遗传算法的例子,在网上找到了一个示例代码:
```matlab
clc; clear all; close all;
% 画出函数图
figure;
lb = 0; ub = 9; % 自变量x的取值范围[-2,2]
ezmesh(@(x) x.^7.*cos(x), [lb, ub]); % 画出函数曲线
hold on;
% 定义遗传算法参数
ps = 10; % 种群大小
mds = 50; % 最大遗传代数
gt = 20; % 个体长度
dg = 0.95; % 代沟
px = 0.95; % 交叉概率
pm = 0.08; % 变异概率
trace = zeros(1, mds); % 寻优结果的初始值
FD = [gt lb ub]; % 区域描述器
Chrom = crtbp(ps, gt, FD); % 创建任意离散随机种群
% 优化过程开始
gen = 0; % 代计数器
X = bs2rv(Chrom); % 初始种群的十进制转化
ObjV = X .* 10 * sin(X) + 7 * cos(X); % 计算目标函数值
while gen < mds
FitnV = ranking; % 分配适应度值
SelCh = select(Chrom, FitnV, sus, ps-dg*ps); % 选择
SelCh = recombin(SelCh, px); % 重组
SelCh = mut(SelCh, pm, [lb; ub]); % 变异
X = bs2rv(SelCh); % 子代个体的十进制转换
ObjVSel = X .* 10 * sin(X) + 7 * cos(X);% 计算子代的目标函数值
[Chrom,ObjV] = reins(Chrom, SelCh, min, ObjV, ObjVSel);
X = bs2rv(Chrom);
gen = gen+1; % 获取每代的最优解及其序号,Y为最优解,I为个体序号
[Y,I] = max(ObjV);
trace(gen) = Y;
end
plot(trace, b-o); grid on;
hold off;
% 画进化图
figure; plot(X, ObjV,bo);
grid on;
xlabel(X)
ylabel(Objective Function Value)
title([Evolution Plot: Best Fitness=,num2str(Y)])
```
这个代码示例使用了MATLAB的遗传算法工具箱gatbx。之前尝试用另一个gaot_ga工具箱时,由于缺少`crtbp.m`函数而无法运行成功。后来找到了gatbx工具箱,并且现在可以顺利得到结果。
分享给大家一个包含完整功能的gatbx资源包(名为:gatbx.rar)。