[0005] 本发明针对现有技术的不足,提供一种基于支持向量机的钱塘江潮时预报方法,目的在于对钱塘江潮时进行准确预报。
[0006] 该方法的具体步骤是:
[0007] 步骤1:读取历史涌潮到达时间td(n)、对应站点和闻家堰的前一次高潮位g(n-1)、gw(n-1),根据连续两日涌潮到达时间计算隔日时间差数据dt(n),以分钟作为单位,[0008] dt(n)=td(n+1)-td(n) n=1,2,3,... (1)
[0009] 步骤2:历史高潮位数据和连续两日隔日时间差数据进行归一化处理[0010] 根据式(2)对历史高潮位数据进行归一化,
[0011]
[0012] 其中xmax为历史高潮位数据中的最大值,xmin为历史高潮位数据中的最小值。x为待处理的历史高潮位数据,为历史高潮位数据归一化处理后的值。
[0013] 连续两日隔日时间差数据归一化处理方法为:
[0014]
[0015] 步骤3:根据预报日从历史数据中挑选同条件下的数据构造训练样本。
[0016] 农历上,不同年相似月的数据可近似认为同条件下的数据,而其他不同月的数据为不同条件下的数据。这里根据预测日期的不同而分别建立训练模型,选择的训练样本同预测日期为同条件下的数据,即选择训练样本与预测日期不同年相似月的数据。另一方面,随着时间延迟增大,不同年相似月数据相关性亦逐渐减小,为保证训练样本与预测日的相关性足够大,选择预测日期近5年内相似月份的隔日时间差数据作为训练样本。
[0017] 利用归一化后的历史数据构造训练样本,将预报日前4个连续两日隔日时间差4日中最后一次涌潮高潮水位 以及相
应的闻家堰高潮水位 作为5个输入,第i日的隔日时间差作为输出值。以此类推可以构建输入矩阵P和目标矩阵T。因此输入矩阵P每行为6个数据,目标矩阵每行为1个数据。
同样,该两矩阵均为N-3行,N为历史数据长度。
[0018]
[0019]
[0020] 其中,i表示预测目标日的农历日序号;k表示预测目标年份序号,例如k=0表示预测年,k=1表示预测年前一年,以此类推。
[0021] 步骤4:利用训练样本训练支持向量机模型。
[0022] 调用Matlab7.10.0函数库中的svmtrain函数进行支持向量机模型训练,主要参数包括核函数选取、损失函数ε和惩罚因子参数C的确定。支持向量机常用核函数包括多项式核函数、径向基函数(RBF)核函数、Sigmoid核函数,通常选用RBF函数;损失函数ε决定了回归误差期望,其取值大小将会影响相应模型的支持向量数量以及泛化能力,ε取值越大,相应模型支持向量减小,预测精度越低,反之亦然,ε一般取为(0.0001~0.01);惩罚因子参数C主要用于平衡逼近误差以及模型复杂度,C的值越大,相应模型拟合误差则越小,对数据的拟合程度越高,但模型复杂程度亦越大,C一般取为(1~1000);
[0023] 步骤5:利用步骤4得到的支持向量机模型结合输入参数得到预测数据。
[0024] 为了预测第j天的隔日时间差,将第j日的前4个连续两日隔日时间差4日中最后一次涌潮高潮水位 以及相
应的闻家堰高潮水位 作为5个输入,调用Matlab7.10.0函数库中的svmpredict函数预测第j日的隔日时间差
[0025] 步骤6:反归一化处理隔日时间差,计算预测潮时。
[0026] 利用公式(5)对预测隔日时间差dt(j)predict进行反归一化处理,通过式(6)得到预测隔日时间差绝对值
[0027]
[0028] td,predict(j)=t(j-1)+dt(j) (6)
[0029] t(j-1)表示第j-1日的涌潮到达时间。
[0030] 本发明的有益效果是:
[0031] 1.本方法根据预报日不同而分别建立训练模型,从历史数据中挑选同条件下的数据构造训练样本,使得预报模型更加准确,预测结果更加可靠。
[0032] 2.支持向量机是一种适用于小样本、泛化能力强的预测模型,使得本方法具有更高泛化能力,同时分析时间较短满足在线分析需求。
[0033] 3.整个分析过程快速方便,容易被使用者掌握,同时易于编程实现。