8.5.3.1 计算流程
根据投影寻踪回归模型的原理及其算法实现过程,设计基于遗传优化算法的投影寻踪回归模型计算流程如图8.1 所示。
8.5.3.2 程序代码
投影寻踪回归模型计算程序包括矩阵运算、投影寻踪、预报、遗传算法等程序。分别介绍如下。
图8.1 投影寻踪回归模型计算流程图
(1)投影寻踪参数率定及模拟计算子程序。程序输入预报因子X(N,M)、预报对象Y(N,1)、Hermit岭函数阶数R、遗传算法种群规模NN、建模样本数N、预报因子数M、数据归一化参数dMax(序列最大值);输出模拟序列Y0(N,1)及投影指标TouYZB。其VisualBasic6.0程序代码如下:
(2)遗传算法子程序。程序输入预报因子X(N,M)、预报对象Y(N,1)、Hermit岭函数阶数R、遗传算法种群规模NN 及建模样本数N、预报因子数M;输出最佳投影方向FangX(M)、R阶Hermite岭函数参数B(R,1)、预报对象的模拟序列Y0(N,1)及投影指标TouYZB。程序代码如下:
该子程序需要调用投影寻踪、遗传算法、矩阵算法等子程序,分别介绍如下。
(3)随机投影方向选择子程序。该子程序产生NP 维空间的一个随机方向。程序输入预报因子数NP,输出NP 维空间的随机方向FangX(NP)。
(4)Hermit多项式曲线拟合子程序。程序输入预报因子X(N,M)、预报对象Y(N,1)、Hermit岭函数阶数R 及建模样本数N、预报因子数M、投影方向FangX(M),输出R 阶Hermite岭函数参数B(R,1)、预报对象的模拟序列Y0(N,1)。该子程序需要调用投影子程序TouYing、R 阶Hermit 函数产生子程序HERMIT 以及最小二乘子程序Least_square和矩阵相乘子程序Matrix_Multiplying。
(5)投影子程序。该子程序计算HN 个NP 维向量在随机方向FangX 上的投影。程序输入投影方向FangX(NP)、预报因子XI(NH,NP)及建模样本数NH、预报因子数NP;输出投影值Z(NH)。
(6)Hermit函数产生子程序。该程序产生R 阶Hermit函数,程序需要调用阶乘子程序JieCheng和高斯函数产生子程序FAI。输入数据序列ZX(HR)和Hermit函数的阶数R;输出Hermit函数HR(0toR-1)。代码如下:
阶乘函数(子程序)及高斯函数产生函数(子程序)代码如下:
(7)最小二乘子程序。输入矩阵AY(N0,1)、AX(N0,M0)及N0、M0;输出B(M0,1)。程序代码如下:
该子程序需要调用求转置矩阵子程序Matrix_Transposing、矩阵相乘子程序Matrix_Multiplying、矩阵求逆子程序Matrix_Inverting。其代码分别如下:
(8)求目标函数子程序(函数)。程序输入模拟序列Y0(N,1)、预报对象序列Y(N,1)及序列长度N,输出目标函数值(倒数)。
(9)排序子程序。程序将数组X 的元素快速从大到小排序。输入待排序数组X(NH)及数组长度NH,输出从大到小排序的数组bx1(NH)。
(10)选择概率计算子程序。该程序计算染色体的选择概率,输入染色体F0(NN),输出染色体的选择概率PS(NN)及累计概率P(NN)。
(11)染色体选择子程序。该程序选择子代群体(其中5 个优秀父代个体被保留),输入父代染色体NNFang0(NN,M)、父代染色体的序号bx0(NN)、染色体的累计概率P(NN)以及染色体群体规模NN 和每个染色体的分量个数(这里是预报因子数)M,输出选择的子代染色体NNFang1(NN,M)。
(12)染色体杂交子程序。程序输入染色体的累计概率P(NN)、父代染色体的序号bx0(NN)、父代染色体NNFang0(NN,M)以及染色体群体规模NN 和每个染色体的分量个数M,输出杂交后的子代染色体NNFang2(NN,M)。
(13)染色体变异子程序。程序输入染色体的选择概率PS(NN)、父代染色体的序号bx0(NN)、父代染色体NNFang0(NN,M)以及染色体群体规模NN 和每个染色体的分量个数M,输出变异后的子代染色体NNFang3(NN,M)。
(14)预报计算子程序。投影寻踪回归模型参数率定以后,就可以使用模型参数进行预报计算。程序输入因子序列值AX(N,M)、预报因子序列长度N(N ≥1)、因子数M、最佳投影方向FangX(M)、Hermite岭函数参数B(R)、Hermite岭函数的阶数R 及归一化计算参数dMax (与参数率定时相同),输出预报序列Y0(N)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。