在我们进行Web项目开发时,经常需要预测一些离散的数据,那么灰色模型预测算法是可选的方案之一,以下算法我是根据一本教材中的流程图写得,应该算是比较早期写的东东了,以下是GM(1,1)算法,稍微改造一下即可变成GM(1,N)算法,源代码如下:
public class GM1_1
{
private int T;//样本数量
private int M;
private double[] X;//原始数列
private double[] XF;//预测值
private double[] WC;//误差值
private double[][] B; //B矩阵
private double[][] YN; //YN矩阵
private double[] X1; //AGO结果
private double a=0,u=0;//[a,u]T向量
protected DataSet observedData = new DataSet();
public GM1_1()
{
}
/**
* 取预测类型
* @return
*/
public String getForecastType(){
return "longshine.epdsm.forecase.GM1_1";
}
/**
* 取预测模型名称
* @return
*/
public String toString(){
return "灰色模型GM(1,1)";
}
/**
* 取预测模型代码
* @return
*/
public String getForecastModelNo(){
return "mypack.GM1_1";
}
public double forecast( IDataPoint dataPoint ){
int x= (int)Math.round(dataPoint.getIndependentValue("x"));
Matrix M_YN;
Matrix M_B;
Matrix M_Reverse;
try{
M_YN= new Matrix(YN);
M_B=new Matrix(B);
Matrix tmp=M_B.transpose().multiply(M_B).inverse();
//利用最小二乘法求a系数向量a~=(B'B)-1B'YN
M_Reverse=GMUtils.getGrayModelModulus(M_B,M_YN);
a=M_Reverse.getEntry(1,1);
u=M_Reverse.getEntry(2,1);
}catch(Exception e)
{
e.printStackTrace();
}
//开始预测
try
{
XF[0]=X[0];
for(int i=1;i<XF.length;i++)
{
XF[i]=GMUtils.getT1Time(a,u,X[0],i);
}
}catch(Exception e)
{
e.printStackTrace();
}
WC=GMUtils.getRelativeError(X,XF);
if(x<T) return X[x];
else
{
try
{
double res=GMUtils.getT1Time(a,u,X[0],x);
return res;
}catch(Exception e)
{
e.printStackTrace();
return 0.;
}
}
}
public void init( DataSet dataSet )
{
this.observedData = dataSet;
setT(dataSet.size());
X=new double[T];
initX();
setT(X.length);
this.M=X.length-1;
XF=new double[X.length];
WC=new double[X.length];
B=new double[M][2];
YN=new double[M][1];
X1=GMUtils.sumArray(X);
a=0;u=0;
//初始化B,Yn
for(int i=0;i<M;i++)
{
B[i][0]=-(X1[i]+X1[i+1])/2;
B[i][1]=1;
}
for(int i=0;i<M;i++)
{
YN[i][0]=X[i+1];
}
}
public int getM()
{
return this.M;
}
private void initX() //X赋值
{
for (int i=1 ;i<=T ;i++ )
{
IDataPoint dp = (IDataPoint)observedData.get(i-1);
X[i-1] = dp.getDependentValue();
}
}
public int getT()
{
return T;
}
public void setT(int T)
{
this.T = T;
}
public static void main(String[] args)
{
final double[] powers={
124.8,
110.7,
129.0,
155.3,
219.03
};
DataSet dataset = new DataSet();
IDataPoint dp;
int count = 1;
for (int i=0 ;i<powers.length ;i++ )
{
dp = new Observation( powers[i] );
dp.setIndependentValue( "x", i+1 );
dp.setTitle("xxx");
dataset.add( dp );
};
GM1_1 aa = new GM1_1();
aa.init(dataset);
dp = new Observation(0);
dp.setIndependentValue( "x", 5);
System.out.println("7="+aa.forecast(dp));
dp.setIndependentValue( "x", 6);
System.out.println("8="+aa.forecast(dp));
dp.setIndependentValue( "x", 7);
System.out.println("9="+aa.forecast(dp));
dp.setIndependentValue( "x", 8);
System.out.println("10="+aa.forecast(dp));
dp.setIndependentValue( "x", 9);
System.out.println("11="+aa.forecast(dp));
}
}
分享到:
相关推荐
粒子群优化算法优化灰色预测模型GM(1,1)+matlab源代码
计算灰色预测中数据的关联度 以及灰色模型的算法实现
算法源码-预测与预报:离散灰色预测模型和AR预测模型的组合预测.zip
2.内容:基于GM灰色预测模型的污水排放量增长预测matlab仿真+代码操作视频 3.用处:用于GM灰色预测模型算法编程学习 4.指向人群:本硕博等教研学习使用 5.运行注意事项: 使用matlab2021a或者更高版本测试,...
2.领域:智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,更多内容可点击博主头像 3.内容:标题所示,对于介绍可点击主页搜索博客 4.适合人群:本科,硕士...
基于matlab 2014b平台的灰色预测法资料和源码,数学建模可用。
亲测可用的matlab代码
模型算法讲义讲解程序源代码插值拟合灰色预测回归分析马尔可夫预测神经网络预测中国人口增长预测.zip
运用matlab工具加上灰色马尔科夫模型算法对湖北省用水量数据进行拟合
用粒子群算法优化灰色预测模型,程序可以运行,自己编写的,如有问题,可以联系我沟通
在预测模型方面,MATLAB 提供了丰富的工具箱和函数库,支持用户构建各种复杂的预测模型,如时间序列预测、回归分析、机器学习模型等。 在 MATLAB 中,构建预测模型的一般步骤如下: 数据准备:首先,用户需要收集...
介绍了灰色预测方法以及Matlab实现该算法的具体步骤,(由于有些质料是在网上下载的,有些质料是网页版的 或者直接看附带的10.ppt); 进行了大量的实验 效果好! 得出的结果进行关联度分析和后验差检验!并对模型...
针对深海行走机构在海底复杂作业环境下行走所呈现的随机性、非线性、时变性,难以建立精确数学模型等特点,提出将灰色预测、模糊控制与常规PID控制相结合的灰色预测模糊PID控制算法.灰色预测根据少量的速度检测数值...
1、资源内容:基于灰色预测模型的Matlab仿真(完整源码).rar 2、代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 3、适用对象:计算机,电子信息工程、数学等专业的大学生课程设计和毕业设计...
2.领域:智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,更多内容可点击博主头像 3.内容:标题所示,对于介绍可点击主页搜索博客 4.适合人群:本科,硕士...
资源名:混沌扰动算法_pso算法早熟问题_训练灰色预测模型参数_matlab 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 ...
2.领域:智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,更多内容可点击博主头像 3.内容:标题所示,对于介绍可点击主页搜索博客 4.适合人群:本科,硕士...
数学建模MATLAB必备程序源代码数学建模十大算法程序详解...灰色模型预测.txt 灰色预测 神经网络 穷举法求解0-1整数规划的matlab程序.txt 类比法 组合算法 网上matlab 聚类算法 蒙特卡洛 贪婪算法 遗传算法 遗传退火法
毕业设计,基于Matlab元胞自动机模拟和遗传算法改进的动态网络分配模型分析,内含完整源代码、毕业论文、毕业答辩PPT、开题报告 加入列车交路方案优化遗传算法程序,解释说明文章:地铁大小交路优化模型的遗传算法...