⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rbf网络.cpp

📁 利用RBF进行时间序列的预测
💻 CPP
📖 第 1 页 / 共 2 页
字号:
					{77.9,	77.4},
					{77.5,	76.4},
					{76.7,	74.1},
					{75.4,	74.4},
					{75.0,	74.1},
					{74.1,	73.4},
					{72.5,	72.2},
					{72.6,	71.4},
					{71.3,	70.8},
					{70.8,	70.0},
					{70.4,	69.1},
					{69.1,	68.8},
					{69.0,	67.9},
					{68.4,	66.7},
					{67.4,	66.9},
					{66.6,	65.9},
					{66.2,	64.8},
					{65.0,	65.8},
					{64.6,	65.1},
					{64.0,	62.5},
					{64.3,	62.5},
					{63.3,	62.2},
					{63.5,	62.2},
					{62.2,	59.9},
					{62.2,	59.9},
					{61.9,	60.0},
					{60.8,	59.2},
					{60.5,	60.4},
					{60.3,	59.2},
					{59.2,	59.2},
					{59.4,	58.5},
					{58.9,	58.4},
					{58.5,	57.5},
					{57.6,	57.4},
					{57.4,	55.8},
					{57.2,	55.1},
					{57.1,	56.6},
					{55.9,	55.5},
					{56.8,	55.5},
					{55.7,	55.1},
					{55.7,	54.1},
					{55.1,	55.1},
					{54.1,	53.4},
					{54.0,	54.2},
					{53.3,	52.5},
					{53.4,	51.7},
					{53.5,	52.5},
					{52.5,	52.5},
					{52.5,	51.6},
					{53.1,	50.9},
					{51.7,	50.9},
					{52.3,	50.0},
					{51.1,	50.9},
					{50.8,	48.9},
					{50.9,	49.3},
					{51.0,	48.6},
					{50.8,	50.4},
					{50.0,	48.8},
					{49.3,	49.2},
					{50.1,	49.2},
					{48.8,	49.2},
					{48.8,	47.5},
					{48.9,	49.0},
					{48.5,	48.0},
					{49.2,	48.5},
					{47.8,	46.8},
					{48.0,	47.2},
					{47.2,	47.3},
					{47.2,	46.7},
					{47.3,	46.9},
					{46.8,	46.8},
					{46.9,	46.8},
					{46.8,	45.5},
					{45.5,	44.1},
					{46.8,	45.3},
					{45.9,	45.5},
					{45.6,	45.5},
					{45.7,	45.5},
					{46.0,	44.3},
					{45.5,	44.7},
					{44.7,	44.1},
					{44.4,	44.1},
					{44.7,	43.7},
					{44.7,	43.9},
					{43.9,	43.6},
					{43.9,	44.7},
					{43.9,	43.8},
					{43.9,	43.5},
					{43.5,	43.5},
					{43.6,	43.5},
					{43.5,	42.4},
					{43.3,	42.8},
					{42.2,	43.9},
					{42.4,	42.2},
					{43.0,	42.6},
					{42.3,	41.2},
					{42.2,	41.4},
					{42.0,	41.4},
					{41.9,	41.3},
					{42.0,	40.9},
					{41.9,	42.2},
					{41.1,	40.3},
					{42.1,	41.8},
					{41.1,	40.3},
					{41.4,	40.5},
					{41.4,	40.2},
					{40.5,	41.8},
					{40.3,	40.3},
					{40.4,	40.2},
					{40.8,	40.3},
					{41.1,	40.2},
					{40.2,	40.3},
					{39.5,	40.3},
					{40.2,	40.2},
					{40.2,	40.2},
					{40.2,	37.6},
					{39.4,	40.3},
					{38.5,	38.5},
					{38.5,	38.5},
					{38.5,	38.0},
					{38.5,	38.0},
					{38.5,	38.5},
					{38.5,	37.8},
					{38.0,	38.0},
					{38.0,	38.3},
					{38.0,	37.8},
					{38.4,	37.8},
					{38.0,	37.2},
					{38.0,	37.8},
					{37.8,	38.0},
					{37.8,	37.6},
					{37.8,	37.0},
					{37.5,	37.0},
					{37.2,	37.2},
					{37.2,	36.4},
					{37.1,	36.9},
					{37.2,	37.0},
					{37.0,	35.6},
					{36.9,	37.0},
					{37.2,	36.9},
					{36.9,	35.7},
					{36.9,	36.9},
					{36.0,	35.6},
					{36.3,	36.1},
					{37.2,	35.6},
					{36.9,	36.9},
					{36.1,	35.9},
					{35.9,	35.6},
					{37.1,	33.9},
					{36.4,	35.4},
					{36.9,	35.2},
					{36.9,	35.8},
					{35.7,	35.6},
					{36.2,	35.2},
					{35.4,	36.9},
					{35.2,	37.0},
					{35.4,	33.8},
					{35.4,	34.1},
					{34.7,	33.9},
					{34.7,	33.8},
					{34.7,	34.5},
					{35.3,	34.5},
					{34.5,	33.9},
					{34.5,	33.7},
					{33.9,	33.5},
					{33.9,	33.7},
					{34.5,	33.9},
					{34.5,	33.9},
					{34.5,	34.8},
					{33.9,	34.4},
					{33.9,	33.9},
					{33.9,	33.7},
					{33.7,	33.1},
					{33.9,	33.6},
					{33.9,	33.5},
					{34.3,	32.7},
					{33.7,	33.1},
					{33.6,	32.2},
					{33.6,	33.6},
					{33.5,	32.9},
					{33.5,	32.8},
					{33.6,	33.6},
					{33.5,	32.9},
					{32.2,	32.2},
					{33.5,	31.9},
					{33.9,	33.3},
					{32.2,	30.4},
					{32.8,	32.2},
					{33.7,	32.0},
					{32.9,	32.0},
					{33.1,	32.0},
					{32.4,	31.8},
					{33.5,	32.0},
					{32.0,	32.0},
					{32.0,	32.0},
					{32.2,	32.0},
					{32.9,	32.2},
					{32.0,	32.0},
					{32.0,	31.9},
					{32.0,	32.0},
					{32.0,	32.2},
					{32.0,	32.7},
					{32.0,	31.2},
					{31.4,	29.4},
					{31.9,	31.1},
					{31.4,	32.0},
					{31.9,	30.9},
					{31.9,	31.9},
					{31.5,	30.4},
					{31.2,	31.2},
					{31.2,	31.1},
					{31.4,	30.6},
					{30.6,	31.2},
					{31.2,	30.7},
					{31.2,	31.1},
					{30.6,	30.4},
					{31.2,	30.4},
					{30.4,	31.2},
					{30.6,	31.2},
					{30.4,	30.4},
					{31.1,	30.4},
					{31.1,	30.4},
					{31.2,	30.2},
					{31.2,	30.3},
					{30.4,	29.5},
					{30.4,	30.2},
					{30.4,	30.3},
					{30.4,	30.4},
					{30.3,	30.2},
					{30.4,	30.3},
					{30.4,	30.4},
					{30.4,	30.2},
					{30.4,	30.3},
					{30.2,	30.3},
					{30.4,	30.2},
					{30.4,	30.2},
					{30.4,	29.5},
					{30.3,	30.2},
					{30.2,	30.2},
					{29.8,	30.2},
					{30.2,	28.7},
					{30.2,	28.7},
					{30.3,	29.5},
					{29.5,	30.3},
					{30.2,	30.2},
					{30.4,	29.5},
					{30.2,	30.2},
					{30.2,	28.9},
					{30.2,	28.2},
					{30.3,	28.7},
					{29.4,	30.2},
					{28.7,	30.3},
					{28.7,	27.9},
					{29.4,	28.7}};
	for(i=10;i<10+X_Num+T_Num;i++)
	{
		data[i-10] = XX[i][0]/100.0;
	}

//*	double data[X_Num+T_Num] = {1.000000,0.949223,0.823597,0.646973,0.451106,0.269989,0.133986,0.064782,0.071976,0.151836,0.288380,0.456491,0.626501,0.769391,0.861714,0.889400,0.849855,0.752018,0.614463,0.461922,0.320867,0.214948,0.161052,0.166654,0.228850,0.335190,0.466115,0.598519,0.709802,0.781703,0.803265,0.772467,0.696271,0.589144,0.470345,0.360491,0.278001,0.236027,0.240390,0.288828};
//	double data[X_Num+T_Num] = {0.011,0.02,0.03,0.04,0.051,0.06,0.07,0.08,0.09,0.101,0.11,0.12,0.13,0.14,0.151,0.16,0.17,0.18,0.19,0.201,0.21,0.22,0.23,0.24,0.251,0.26,0.27,0.28,0.29,0.301,0.31,0.32,0.33,0.34,0.351,0.36,0.37,0.38,0.39,0.401};

/////////////////////////////////////////////////////////////////////
	while(p>0)
	{
		double datax[T_Num][X_Num];
		double kk;
		j = 0;
		n = 0;

		for(i=0;i<T_Num;i++)      
		{
			for(j=n;j<n+X_Num;j++)
				datax[i][j-n] = data[j];
			n++;
		}

	////////********进行样本训练********////////

			for(i=0;i<T_Num;i++)      //获取训练样本
			{
				for(j=0;j<X_Num;j++)
					x[j][i] = datax[i][j];
			}
			
			for(i=0;i<T_Num;i++)   //获取训练输出
				Y[i][0] = data[i+X_Num];
		
			for(i=0;i<T_Num;i++)
			{
				LL[i] = interval(datax[0],datax[i],X_Num);		//计算每个样本与第1个样本之间的距离
				No[i] = i;
			}
			
			compose(LL,No,T_Num);		//对各距离进行从小到大的排列,并把样本号对应排列好
			
			for(i=0;i<T_Num;i++)
				printf("%f ",LL[i]);
			printf("\n");
			
			for(i=0;i<T_Num;i++)
				printf("%d ",No[i]);
			printf("\n");			
			
			kk = LL[T_Num-1]/((T_Num-1)*pp);		//“计算因子”		
			NC[0] = 0;						// NC 中保存最终初始中心对应的样本号
			i = 1;
			mm = 1;
			while(i<T_Num)
			{
				while(LL[i]-LL[i-1]<kk&&i<T_Num-1)		//***************
					i++;
				NC[mm] = No[i];
				i++;
				mm++;
			}		
			Ix = mm;		//隐层节点个数

			printf("计算出隐层节点数=	%d ",Ix);
			printf("\n");
			
			for(i=0;i<Ix;i++)
				printf("%d ",NC[i]);
			printf("\n");			
			
	/////////////////////////////////////////////////////////////////////		
			
			t = new double[X_Num*Ix];
			t1 = new double[X_Num*Ix];
			w = new double[Ix+1];
			G = new double[T_Num*(Ix+1)];
			uu = new double[Ix+1];
			GT = new double[(Ix+1)*T_Num];
			GM = new double[(Ix+1)*(Ix+1)];
			GD = new double[(Ix+1)*T_Num];

			if(t==NULL)
			{
				printf("Error!!!");
				return;
			}

			for(j=0;j<Ix;j++)    //初始化中心
			{
				for(i=0;i<X_Num;i++)
					t[i*Ix+j] = x[i][NC[j]];
			}

			for(j=0;j<Ix;j++)    
			{
				for(i=0;i<X_Num;i++)
					printf("%f ",t[i*Ix+j]);
				printf("\n");
			}
			printf("\n");
			
			k_means();                          //计算并输出求得的基函数中心——t[][]
			getError();                         //计算并输出方差——g
			wStudy();                           //计算并输出求得的隐含层输出矩阵——G[][]


		////////********计算预测输出********////////

			fputs("预测值:",fp);
			fprintf(fp,"(pp=%f,Ix=%d,p=%d)\n",pp,Ix,p);
//			while(jj<T_Num)                   //预测设定组数的数
//			{
//				for(i=0;i<X_Num;i++)       //预测时的输入向量——xx[][]
//					xx[i][0] = x[i][jj];

				for(i=0;i<X_Num;i++)
					xx[i][0] = data[i+T_Num];
				
				compute_uu();                    //计算隐藏层输出
				multiply(uu,w,*yy,1,Ix+1,1);    //计算预测值

				printf("yy = %f \n",yy[0][0]*100.0);
				fprintf(fp,"%f ",yy[0][0]*100.0);	
				
//				jj++;
//			}

//			printf("\n\n迭代次数:%d\n\n",N_Max);		//输出迭代次数
			
			fputs("\n\n",fp);		

		delete [] t;
		delete [] t1;
		delete [] w;
		delete [] G;
		delete [] uu;
		delete [] GT;
		delete [] GM;
		delete [] GD;

		for(i=0;i<X_Num+T_Num-1;i++)    //连续预测p个数,原样本顺序左移,右端补上最新预测值
			data[i] = data[i+1];
		data[X_Num+T_Num-1] = yy[0][0];

		p--;
	}
	fclose(fp);
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -