解决Matlab(R2016a) Sheffield GATBX遗传工具箱的一些问题

  • 简介:学习遗传算法并用Matlab实现算法的时候碰到了如下问题:
    未找到 'gadst'

  • 解决办法:Google了一下解决办法,就是说Matlab自带的Toolbox里面的是GA(另一个),所以我们用的gadst没用balabala…然后呢,当然就是去下载Sheffield的GATBX工具箱咯。然而,下好再配置好后测试一下,又报错:
    error
    打开文件夹看看:

error2

纳尼 ????WTF!!!

虽然Matlab给出了解决办法(要更改文件扩展名,请将目录改变为文件的文件夹,键入:
movefile crtbp.M crtbp.m_bad; movefile crtbp.m_bad crtbp.m,然后改变目录返回。),但是这么多文件怎么改呢??好吧,我直接给改好后的文件吧。重新添加一下路径,然后让我们来测试一下吧!

目标是求 y = x.cos(5pi*x) + 3.5 在[-1,2.5]区间上的最大值。

目标函数文件: fun_sigv.m

% filename: fun_sigv.m
function y = fun_sigv(x)
y = x.*cos(5*pi*x) + 3.5;
end

算法实现脚本文件:yichuan.m

% filename: yichuan.m
% 遗传算法的测试
opt_minmax = 1; %目标优化类型:1 最大化, -1最小化
num_ppu = 50; %种群规模:个体个数
num_gen = 60; %最大遗传代数
len_ch = 20; %基因长度
gap = 0.9; % 代沟
sub = -1; %变量取值下限
up = 2.5; %变量取值上限
cd_gray = 1; % 是否选择格雷编码方式: 1 是; 0 否
sc_log = 0; % 是否选择对数标度: 1 是; 0 否
trace = zeros(num_gen, 2); % 遗传迭代性能跟踪器
fieldd = [len_ch; sub; up; 1-cd_gray; sc_log; 1; 1]; %区域描述器
chrom = crtbp(num_ppu, len_ch); % 初始化生成种群
k_gen = 0;
x = bs2rv(chrom, fieldd); % 翻译初始化种群为十进制
fun_v = fun_sigv(x); % 计算目标函数值
tx = sub:.01:up;
plot(tx, fun_sigv(tx)), xlabel('x'), ylabel('y'), title('一元函数优化结果'), hold on;

while k_gen < num_gen
    fit_v = ranking(-opt_minmax*fun_v); % 计算目标函数的适应度(基于秩的适应度计算)
    selchrom = select('rws', chrom, fit_v, gap); % 使用轮盘赌方式选择
    selchrom = recombin('xovsp', selchrom); % 交叉(单点交叉)
    selchrom = mut(selchrom); % 变异(离散变异)
    x = bs2rv(selchrom, fieldd); % 子代个体翻译
    fun_v_sel = fun_sigv(x); % 计算子代个体对应目标函数值
    [chrom, fun_v] = reins(chrom, selchrom, 1, 1, opt_minmax*fun_v,...
        opt_minmax*fun_v_sel); % 根据目标函数值将子代个体插入新群种
    [f, id] = max(fun_v); % 寻找当前种群最优解
    x = bs2rv(chrom, fieldd); %二进制串到实值的转换
    f = f* opt_minmax;
    fun_v = fun_v * opt_minmax;
    k_gen = k_gen + 1;
    trace(k_gen, 1) = f; % 矩阵的秩,即对角元素之和
    trace(k_gen, 2) = mean(fun_v);
end

plot(x(id), f, 'r*'), figure, plot(trace(:, 1), 'r-*'), hold on;
plot(trace(:, 2), 'b-o'), legend('各子代种群最优解', '各子代种群平均值'),...
    xlabel('迭代次数'), ylabel('目标函数优化情况'), title('一元函数优化过程');
   

在命令行里面输入yichuan.m,就会出现结果:

result

问题终于解决了!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Matlab2016a的神经网络工具箱是一个用于构建和训练神经网络模型的工具。神经网络模型是一种模拟人脑神经元之间相互连接的数学模型,它可以通过学习输入数据的模式来进行预测和分类任务。该工具箱提供了一系列函数和工具,用于创建、训练和测试神经网络模型。 在引用中提到的文章中,作者使用了Matlab2016a和神经网络工具箱来构建一个基于BP(反向传播)算法的神经网络模型。BP神经网络是一种常用的、经典的神经网络模型,它通过不断调整网络中的权重和偏差,以减小预测输出与实际输出之间的误差。 在引用中,作者创建了一个具有10个隐层神经元和1个输出神经元的神经网络模型。这里使用了minmax函数对输入数据进行归一化处理。 在引用中,作者使用了mapminmax函数将测试数据进行正则化处理,以便与训练数据保持一致。 在引用中,作者给出了一些关于隐层神经元的确定、训练算法的选择以及模型拟合效果评估的建议。通过调整这些参数,可以优化神经网络模型的性能。 总结起来,Matlab2016a的神经网络工具箱提供了一个方便易用的平台,用于构建、训练和测试神经网络模型。该工具箱支持各种常用的神经网络算法,如BP算法,并提供了一系列函数和工具,帮助用户完成预测和分类任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值