Multiregression(String forecastname, String forecastid, int frequency, int lastingtime,int datanum,int refCycle)
{ Multiregression m = new Multiregression();
for (int t = 0; t < N; t++) {
(1) 以当前时间点为基点,往前以“周”(这里设为默认值)为单位进行数据选取,直到选取的数据数为datanum strdate[i]=time;
(2) 从数据库中获取预测对象的历史数据
(3) 算法计算: 首先是参数估算, 接着获取当前时间点 数据库中T、P、H的值
(4) 根据公式进行预测
(5) 将预测结果保存到数据库
(6) 最小二乘法参数估计
根据多元回归法的理论计算与分析,系统利用最小二乘法进行参数估计,最后可以总结为求解方程组,其具体的实现代码如下:
class Multiregression {
A 定义四个矩阵matrix1,matrix2,matrix3,matrix4用于存储方程组中未知项系数。
B 定义四个矩阵newmatrix1,newmatrix2,newmatrix3,newmatrix4用于存储变换(除以首项)后的未知项系数
C 最小二乘法参数估计,定义一个一文矩阵存储最后估计的参数结果
paramEvaluate(double T[],double H[],double P[],double c[],int datanum,boolean mark){
D 矩阵matrix1赋值:
matrix1[0][0] = datanum*1.0;//将datanum转为double
for(int i=0;i<datanum;i++){...}
E 矩阵变换,newmatrix1矩阵赋值:
newmatrix1[i][j] = matrix1[i][j]/matrix1[i][0];
F 矩阵matrix2赋值:
matrix2[i][j] = newmatrix1[0][j+1]-newmatrix1[i+1][j+1];
G 同(5),(6),分别对newmatrix2、matrix3、newmatrix3、matrix4赋值
H 解出方程组,求得参数
5.4 查询界面的实现
5.4.1 生成及查询阈值表功能的实现
阈值表是在中间数据库(即断面每五分钟的流量和速度数据)的基础上进一步生成15分钟,30分钟和一个小时的各路段及断面的数据信息。同时生成的阈值表可以供用户查询,查询的数据在初始阈值表的基础上进行了细微的变动,所有的查询数据都是路段的数据而非断面数据。其中每个路段的速度或流量的最大值,最小值和平均值都是根据该路段包含的所有断面的数据产生的,这是查询时的阈值表和初始生成的阈值表的一个小小不同。查询出的结果直接显示在datagrid中,限于篇幅,这里仅列出查询时间间隔为一小时的流量数据的方法,其核心代码如下所示。
此外,在阈值查询的过程中为方便数据的可用性,系统特意增加了导出excel报表的功能。在datagrid中显示的数据可以完全导出到excel表格中用作其它用途。导出excel的代码实现如下(仅以流量数据为例):
Excel.Application xlApp = new Excel.Application();//调用导出excel的类
xlApp.Application.Workbooks.Add(true);
DataTable table = db.getTable(sql);
for (int i = 0; i < table.Columns.Count; i++) C#交通数据采集及整理方法的设计与实现(23):http://www.youerw.com/jisuanji/lunwen_274.html