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

📄 main.cpp

📁 自己做的小波与神经网络组合方法实现负荷预测程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            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 + -