📄 main.cpp
字号:
Err_yangben_c(m); ///第m个样本的误差平方和
}
sum_err=Err_Sum_c(); //修正权、阀值后所有样本误差平方和
}
if((sum_err>sum_err1)||(sum_err==sum_err1))
{
niu_c=niu_c*beta_c; //参数修正
qiu_detx_c(); //求det_x (3)
JZ_quanfazhi_c(); ///修正权、阀值 (4)
for (m=0;m<N_c;m++)
{
H_I_O_c(); //第m个学习样本隐层各单元输入、输出值
O_I_O_c(); //第m个学习样本输出层各单元输入、输出值
Err_yangben_c(m); ///第m个样本的误差平方和
}
sum_err=Err_Sum_c();
}
++study;
fprintf(fp,"网络已经学习了%d次,现在的全局误差为:%f\n",study,sum_err);
}
}
///////////////////////////////////////////
///////////////////c3预测程序////////////////
///////////////////////////////////////////
double net_c[1000];
double tmp1[100],tmp2[100],tmp3[100],tmp4[100],tmp5[100]; //存学习样本
double tmp6[100],tmp7[100],tmp8[100],tmp9[100],tmp10[100]; //
double tmp11[100],tmp12[100],tmp13[100],tmp14[100],tmp15[100];//
double tmp16[100],tmp17[100],tmp18[100],tmp19[100],tmp20[100];//
double tmp21[100],tmp22[100],tmp23[100],tmp24[100],tmp25[100];//
double tmp26[100],tmp27[100],tmp28[100],tmp29[100],tmp30[100];//存教师样本
double tmp31[100],tmp32[100],tmp33[100],tmp34[100],tmp35[100]; //存预测样本数据
double c3_yuce[10];
double c_temp[41];
double temp,max_c3,min_c3;
FILE *fpc,*fpd,*fp;
void yuce_c3_time1()
{
net_c[0]=0.00001;
////////////////////////////////////c3训练样本
CString pday;
// pday="c3_day";
int day;
CString strday;
int day1,day2,day3,day4,day5;
int yucetian;
// cout<<"预测的日期(天)为:"<<endl;
//cin>>yucetian;
yucetian=30; /////假设预测第30天的负荷序列
///////////////////////////////
////////////////////////////////预测时刻为1点
day1=yucetian-14; ////////训练样本一预测天为29
day=day1-1; //28
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
//cout<<pday<<endl;
fpc=fopen(pday,"r");
for(int i=0;i<24;i++) //96点的话要修改,这是24点
{
fscanf(fpc,"%lf",&tmp1[i]); //tmp1----28 L(i-1,t)
}
fclose(fpc);
day=day1-2; //27
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
//cout<<pday<<endl;
fpd=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpd,"%lf",&tmp2[i]); //tmp2---27 L(i-1,t-1),L(i-2,t)
}
fclose(fpd);
day=day1-3; //26
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fp=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fp,"%lf",&tmp3[i]); //tmp3---26 L(i-2,t-1)
}
fclose(fp);
net_c[2]=tmp1[0]; //28
net_c[1]=tmp2[23]; //27 //96点的话要修改,这是24点
net_c[4]=tmp2[0]; //27
net_c[3]=tmp3[23]; //26
net_c[5]=tmp1[0]-tmp2[0]; //28-27
day=day1-7; //22
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fpc=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpc,"%lf",&tmp4[i]); //tmp4---22
}
fclose(fpc);
day=day1-14; //15
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fpd=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpd,"%lf",&tmp5[i]); //tmp5---15
}
fclose(fpd);
net_c[7]=tmp4[0];
net_c[6]=tmp5[0];
day2=yucetian-7; ////////训练样本二预测天为28
day=day2-1; //27
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
//cout<<pday<<endl;
fpc=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpc,"%lf",&tmp6[i]); //tmp6----27
}
fclose(fpc);
day=day2-2; //26
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fpd=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpd,"%lf",&tmp7[i]); //tmp7---26
}
fclose(fpd);
day=day2-3; //25
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fp=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fp,"%lf",&tmp8[i]); //tmp8---25
}
fclose(fp);
net_c[9]=tmp6[0];
net_c[8]=tmp7[23];
net_c[11]=tmp7[0];
net_c[10]=tmp8[23];
net_c[12]=tmp6[0]-tmp7[0];
day=day2-7; //21
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fpc=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpc,"%lf",&tmp9[i]); //tmp9---21
}
fclose(fpc);
day=day2-14; //14
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fpd=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpd,"%lf",&tmp10[i]); //tmp10---14
}
fclose(fpd);
net_c[14]=tmp9[0];
net_c[13]=tmp10[0];
day3=yucetian-3; ////////训练样本三预测天为23
day=day3-1; //22
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fpc=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpc,"%lf",&tmp11[i]); //tmp11----22
}
fclose(fpc);
day=day3-2; //21
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
//cout<<pday<<endl;
fpd=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpd,"%lf",&tmp12[i]); //tmp12---21
}
fclose(fpd);
day=day3-3; //20
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fp=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fp,"%lf",&tmp13[i]); //tmp13---20
}
fclose(fp);
net_c[16]=tmp11[0];
net_c[15]=tmp12[23];
net_c[18]=tmp12[0];
net_c[17]=tmp13[23];
net_c[19]=tmp11[0]-tmp12[0];
day=day3-7; //16
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fpc=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpc,"%lf",&tmp14[i]); //tmp14---16
}
fclose(fpc);
day=day3-14; //9
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fpd=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpd,"%lf",&tmp15[i]); //tmp15---9
}
fclose(fpd);
net_c[21]=tmp14[0];
net_c[20]=tmp15[0];
day4=yucetian-2; ////////训练样本四预测天为16
day=day4-1; //15
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
//cout<<pday<<endl;
fpc=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpc,"%lf",&tmp16[i]); //tmp16----15
}
fclose(fpc);
day=day4-2; //14
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fpd=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpd,"%lf",&tmp17[i]); //tmp17---14
}
fclose(fpd);
day=day4-3; //13
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fp=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fp,"%lf",&tmp18[i]); //tmp18---13
}
fclose(fp);
net_c[23]=tmp16[0];
net_c[22]=tmp17[23];
net_c[25]=tmp17[0];
net_c[24]=tmp18[23];
net_c[26]=tmp16[0]-tmp17[0];
day=day4-7; //9
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fpc=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpc,"%lf",&tmp19[i]); //tmp19---9
}
fclose(fpc);
day=day4-14; //2
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fpd=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpd,"%lf",&tmp20[i]); //tmp20---2
}
fclose(fpd);
net_c[28]=tmp19[0];
net_c[27]=tmp20[0];
day5=yucetian-1; ////////训练样本五预测天为27
day=day5-1; //26
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
//cout<<pday<<endl;
fpc=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpc,"%lf",&tmp21[i]); //tmp21----26
}
fclose(fpc);
day=day5-2; //25
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
//cout<<pday<<endl;
fpd=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpd,"%lf",&tmp22[i]); //tmp22---25
}
fclose(fpd);
day=day5-3; //24
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fp=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fp,"%lf",&tmp23[i]); //tmp23---24
}
fclose(fp);
net_c[30]=tmp21[0];
net_c[29]=tmp22[23]; //96点的话要修改,这是24点
net_c[32]=tmp22[0];
net_c[31]=tmp23[23];
net_c[33]=tmp21[0]-tmp22[0];
day=day5-7; //20
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fpc=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpc,"%lf",&tmp24[i]); //tmp24---20
}
fclose(fpc);
day=day5-14; //13
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
fpd=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpd,"%lf",&tmp25[i]); //tmp25---13
}
fclose(fpd);
net_c[35]=tmp24[0];
net_c[34]=tmp25[0];
// fpd=fopen("test.txt","w");
//for(i=29;i<=35;i++)
// fprintf(fpd,"%lf\n",net_c[i]);
//fclose(fpd);
/////////////////////////////////教师样本
day=yucetian-14; ////////训练样本一预测天为29
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
//cout<<pday<<endl;
fpc=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpc,"%lf",&tmp26[i]); //tmp26----29
}
fclose(fpc);
net_c[36]=tmp26[0];
day=yucetian-7; ////////训练样本二预测天为28
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
//cout<<pday<<endl;
fpc=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpc,"%lf",&tmp27[i]); //tmp27----28
}
fclose(fpc);
net_c[37]=tmp27[0];
day=yucetian-3; ////////训练样本三预测天为23
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
//cout<<pday<<endl;
fpc=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpc,"%lf",&tmp28[i]); //tmp28----23
}
fclose(fpc);
net_c[38]=tmp28[0];
day=yucetian-2; ////////训练样本四预测天为16
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
//cout<<pday<<endl;
fpc=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpc,"%lf",&tmp29[i]); //tmp29----16
}
fclose(fpc);
net_c[39]=tmp29[0];
day=yucetian-1; ////////训练样本五预测天为27
pday="c3_day";
strday.Format("%d",day);
pday+=strday;
pday+=".txt";
//cout<<pday<<endl;
fpc=fopen(pday,"r");
for(i=0;i<24;i++)
{
fscanf(fpc,"%lf",&tmp30[i]); //tmp30----27
}
fclose(fpc);
net_c[40]=tmp30[0];
//////////////////////////////////
////////////////数据归一化////////
//////////////////////////////////
double c_temp[41];
double temp,max_c3,min_c3;
for(i=1;i<=40;i++) ///求极大值
c_temp[i]=net_c[i];
for(i=1; i<=40; i++)
{
if(c_temp[1]<c_temp[i])
{
temp=c_temp[1];
c_temp[1]=c_temp[i];
c_temp[i]=temp;
}
}
max_c3=c_temp[1];
for(i=1;i<=40;i++) ////求极小值
c_temp[i]=net_c[i];
for(i=1;i<=40; i++)
{
if(c_temp[1]>c_temp[i])
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -