首页 > 编程语言 >m基于GA遗传优化的GRNN广义回归神经网络销售数据预测算法matlab仿真

m基于GA遗传优化的GRNN广义回归神经网络销售数据预测算法matlab仿真

时间:2023-01-19 19:56:33浏览次数:32  
标签:plot hold 销售量 matlab GA GRNN data data0 Result

1.算法描述

      随着市场经济的发展和全球化,国内外企业面临着越来越残酷的市场竞争,要想赢得竞争,赢得市场,从事商品销售的单位必须在短时间内,以最低的成本将产品提供给客户,这使得对市场的变化和本身业务的发展前景进行估计。

 

        制冷压缩机的主要功能是将低压气体提升为高压气体,是制冷设备的核心部件,其广泛应用在空调冰箱等各类电器设备中。因此制冷压缩机有着十分广泛的市场前景,为了获得较为准确的市场预期,我们需要使用已有的理论知识和科学方法,对制冷压缩机的市场发展趋势进行预先估计,从而进一步减少风险,避免企业决策的盲目性。

 

      遗传算法(Genetic Algorithm)是一类借鉴生物界的进化规律演化而来的随机化搜索方法。它是由美国的J.Holland教授1975年首先提出,其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。它是现代有关智能计算中的关键技术。

 

       算法的算法流程图如下图所示:

 

 

 

 

从图1的算法流程图可知,遗传算法,其主要步骤如下所示:

 

        步骤一、选择问题解的一个编码,给出一个包含N个染色体的初始种群。

 

        步骤二、对种群中的每一个染色体 ,分别计算其对应的适应函数值。

 

        步骤三、若停止规则满足,则算法停止,否则计算概率P,并以此概率分布,从中随机选取N个染色体构成一个新的种群。

 

        步骤四、通过交叉(交叉概率为),得到N个染色体的交叉概率值。

 

        步骤五、以较小的变异概率,使得某染色体的一个基因发生变异,形成新的群体重复第步骤二步。

 

       对GRNN网络来说,当确定了学习样本,则相应的网络结构和各神经元之间的连接权值也就确定出来,网络的训练实际上只是确定平滑参数的过程。GRNN网络中的即相当于径向基函数的分布密度SPREAD。一般情况下,SPREAD越大,逼近过程就越平滑,但误差也增大;SPREAD越小,函数逼近越精确,但逼近过程也越不平滑。

 

      平滑参数的取值会在很大程度上影响着广义回归神经网络的预测性能,根据式子:

 

2.仿真效果预览

matlab2022a仿真结果如下

 

 

3.MATLAB核心程序

 

data     = [data2010',data2011',data2012'];
data0    = data;
%归一化
Xmin     = min(data);
Xmax     = max(data);
data     = (data-min(data))/(max(data)-min(data));
 
figure;
plot(data(1:12),'b-x');
hold on
plot(data(13:24),'r-s');
hold on
plot(data(25:36),'k-o');
hold on
legend('2010销售量','2011销售量','2012销售量');
xlabel('Times(month)');
ylabel('销售量');
axis([0,12,0,1]);
grid on;
figure;
plot(data0(1:12),'b-x');
hold on
plot(data0(13:24),'r-s');
hold on
plot(data0(25:36),'k-o');
hold on
legend('2010销售量','2011销售量','2012销售量');
xlabel('Times(month)');
ylabel('销售量');
axis([0,12,0,1500]);
grid on;
%%
%使用遗传算法获得最优的平滑参数
MAXGEN = 30;
NIND   = 50;
Chrom  = crtbp(NIND,1*10);
 
%14个变量的区间
%优化变量如下:
%多边形个数N,1~100
Areas  = [0;
          1];
 
FieldD = [rep([10],[1,1]);Areas;rep([0;0;0;0],[1,1])];
 
alpha  = zeros(NIND,1);
alphas = zeros(MAXGEN,1);
 
 
for a=1:1:NIND 
    a
    alpha(a)= 0.5;       
    %计算对应的目标值
    Result = func_obj(alpha(a),data,Xmax,Xmin);
    E      = mean(abs(Result-data0(25:36)));
    J(a,1) = E;
end
Objv  = J;
gen   = 0; 
 
while gen < MAXGEN;   
      gen
      FitnV=ranking(Objv);    
      Selch=select('sus',Chrom,FitnV);    
      Selch=recombin('xovsp', Selch,0.95);   
      Selch=mut( Selch,0.05);   
      phen1=bs2rv(Selch,FieldD);   
      
      for a=1:NIND  
          alpha(a)= phen1(a,1);      
          %计算对应的目标值
          Result  = func_obj(alpha(a),data,Xmax,Xmin);
          E       = mean(abs(Result-data0(25:36)));
          JJ(a,1) = E;
      end 
      Objvsel      = JJ;    
      [Chrom,Objv] = reins(Chrom,Selch,1,1,Objv,Objvsel);   
      gen          = gen + 1; 
      Error(gen)   = mean(JJ);
      alphas(gen)  = mean(alpha);
end 
Result  = func_obj(alphas(end),data,Xmax,Xmin);
%画图
figure;
subplot(121)
plot(alphas,'b-o');
hold on;
xlabel('迭代次数');
ylabel('平滑因子');
axis square;
grid on;
 
subplot(122)
plot(Error,'b-o');
hold on;
xlabel('迭代次数');
ylabel('Error');
axis square;
grid on;
 
load NET.mat
Result  = sim(net,1:12);
Result  = Result*(Xmax-Xmin)+Xmin;
 
figure
plot(data0(25:36),'b-o');
hold on
plot(Result,'r-s');
legend('2012销售量','预测值');
xlabel('Times(month)');
ylabel('销售量');
grid on;
 
figure
S = [data0(25:36);Result]';
bar(S);
legend('2012销售量','预测值');
xlabel('Times(month)');
ylabel('销售量');
save Rgrnn.mat Result
A = (Result-data0(25:36))./Result;
A = 100*A';
A
02_021m

 

  

 

标签:plot,hold,销售量,matlab,GA,GRNN,data,data0,Result
From: https://www.cnblogs.com/51matlab/p/17062054.html

相关文章

  • 36-ElasticSearch-aggregations(执行聚合)
    聚合提供了从数据中分组和提取数据的能力。最简单的聚合方法大致等于SQLGROUPBY和SQL聚合函数。在Elasticsearch中,您有执行搜索返回hits(命中结果),并且同时返回聚......
  • matlab练习程序(门限回归TR与门限自回归TAR)
    门限回归和门限自回归是对基本的回归和自回归加上一个阈值判断。下面简单的表述一下公式。回归模型可以用下述公式表示:则门限回归可以表示为: 自回归模型可以用下述......
  • 浅谈SpringAOP功能源码执行逻辑
    如题,该篇博文主要是对Spring初始化后AOP部分代码执行流程的分析,仅仅只是粗略的讲解整个执行流程,喜欢细的小伙伴请结合其他资料进行学习。在看本文之前请一定要有动态代理的......
  • Linux服务器 MATLAB 安装
    在Ubuntu安装配置MATLAB开发环境https://muzing.top/posts/52276c1/Linux下基于MobaXterm的无图形界面MatlabR2018a安装https://www.cnblogs.com/Jody9123/p/13447273......
  • 二维图像的原子匹配追踪投影算法的图像重建matlab仿真
    1.算法描述       原子快速匹配追踪信号稀疏分解算法,并将其应用于静态图像编码.多原子匹配追踪通过每次迭代选取多个原子的形式,实现信号的快速稀疏分解.在此基础......
  • m基于遗传优化算法的公式参数拟合matlab仿真
    1.算法描述遗传算法的原理        遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假......
  • m基于效用函数的联合资源分配matlab仿真,对比PF,CUBP以及DUBP三种方法
    1.算法描述 表示基站n到用户m是否连接。 1.1C-CUBP   主要涉及到的公式有: 1.2C-DUBP 主要涉及到的公式有: 2.仿真效果预览matlab2022a仿真......
  • Spring Cloud Gateway 网关限流
    可用性和可靠性对于所有web应用程序和API来说都是至关重要的。当系统流量突然增加时,会影响应用程序的服务质量,甚至可能导致所有用户的服务中断。一种解决方案是为基础......
  • Prometheus Pushgateway数据推送失败(windows)
    环境windows10pushgatewayprometheus问题启动pushgateway及Prometheus后,通过curl往pushgateway推送数据出现以下问题C:\Users\Jruing>echo'cpu2'|curl--da......
  • opengauss 导出导入
     1、导出数据gs_dump-Wgauss@123-Ugaussdb-f/home/omm/admin_schema_data_backup.tar.gz-p5432postgres-nadmin-Ft2、导入表结构gs_restore-U......