亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? bpnet.cpp

?? 演示程序: CMMATools.exe 神經(jīng)網(wǎng)絡(luò)類(BP算法): BpNet_src.rar 作者:同濟(jì)大學(xué)材料學(xué)院 張純禹 email:chunyu_79@hotmail.com
?? CPP
字號(hào):
// BpNet.cpp : implementation file
////////////////////////////////////////////////////////////////////
/////////////////人工神經(jīng)網(wǎng)絡(luò)BP算法/////////////////////////////////
//1、動(dòng)態(tài)改變學(xué)習(xí)速率
//2、加入動(dòng)量項(xiàng)
//3、運(yùn)用了Matcom4.5的矩陣運(yùn)算庫(kù)(可免費(fèi)下載,頭文件matlib.h),
//   方便矩陣運(yùn)算,當(dāng)然,也可自己寫矩陣類
//4、可暫停運(yùn)算
//5、可將網(wǎng)絡(luò)以文件的形式保存、恢復(fù)
///////////////作者:同濟(jì)大學(xué)材料學(xué)院   張純禹//////////////////////
///////////////email:chunyu_79@hotmail.com//////////////////////////
///////////////QQ:53806186//////////////////////////////////////////
///////////////歡迎不斷改進(jìn)!歡迎討論其他實(shí)用的算法!/////////////////

#include "BpNet.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CBpNet
IMPLEMENT_SERIAL( CBpNet, CObject, 1 )

CBpNet::CBpNet()
{initM(MATCOM_VERSION);//啟用矩陣運(yùn)算庫(kù)
}

CBpNet::~CBpNet()
{exitM();
 delete this;
}




/////////////////////////////////////////////////////////////////////////////
// CBpNet message handlers
//創(chuàng)建新網(wǎng)絡(luò)
void CBpNet::Create(Mm mInputData, Mm mTarget, int iInput, int iHidden, int iOutput)
{ int i,j;
  mSampleInput=zeros(mInput.rows(),mInput.cols());
  mSampleTarget=zeros(mTarget.rows(),mTarget.cols());  
  mSampleInput=mInputData;
  mSampleTarget=mTarget;
  this->iInput=iInput;
  this->iHidden=iHidden;
  this->iOutput=iOutput;
  //創(chuàng)建計(jì)算用的單個(gè)樣本矩陣
  mInput=zeros(1,this->iInput);
  mHidden=zeros(1,this->iHidden);
  mOutput=zeros(1,this->iOutput);
  //創(chuàng)建權(quán)重矩陣,并賦初值
  mWeighti=zeros(this->iInput,this->iHidden);
  mWeighto=zeros(this->iHidden,this->iOutput); 
  //賦初值
  for(i=1;i<=this->iInput;i++)
	  for(j=1;j<=this->iHidden;j++)
		  mWeighti.r(i,j)=randab(-1.0,1.0);
  for(i=1;i<=this->iHidden;i++)
	  for(j=1;j<=this->iOutput;j++)
		  mWeighto.r(i,j)=randab(-1.0,1.0);
  
  //創(chuàng)建闕值矩陣,并賦值
  mThresholdi=zeros(1,this->iHidden);
  for(i=1;i<=this->iHidden;i++)
	  mThresholdi.r(i)=randab(-1.0,1.0);
  mThresholdo=zeros(1,this->iOutput);
  for(i=1;i<=this->iOutput;i++)
	  mThresholdo.r(i)=randab(-1.0,1.0);
  //創(chuàng)建權(quán)重變化矩陣
  mChangei=zeros(this->iInput,this->iHidden);
  mChangeo=zeros(this->iHidden,this->iOutput);
  
  mInputNormFactor=zeros(iInput,2);
  mTargetNormFactor=zeros(iOutput,2);
  //誤差矩陣
   mOutputDeltas=zeros(iOutput);
   mHiddenDeltas=zeros(iHidden);
  //學(xué)習(xí)速率賦值
  dblLearnRate1=0.5;
  dblLearnRate2=0.5;
  dblMomentumFactor=0.95;
  
  m_isOK=false;
  m_IsStop=false;
  dblMse=1.0e-6;//誤差限
  dblError=1.0;
  lEpochs=0;

}
//根據(jù)已有的網(wǎng)絡(luò)進(jìn)行預(yù)測(cè)
Mm CBpNet::simulate(Mm mData)
{int i,j;
 Mm mResult;
 Mm data=zeros(mData.rows(),mData.cols());
 data=mData;
 if(mData.cols()!=iInput)
 {::MessageBox(NULL,"輸入數(shù)據(jù)變量個(gè)數(shù)錯(cuò)誤!","輸入數(shù)據(jù)變量個(gè)數(shù)錯(cuò)誤!",MB_OK);
  return mResult;
 }
 mResult=zeros(data.rows(),iOutput); 
 //正規(guī)化數(shù)據(jù)
 for(i=1;i<=data.rows();i++)
	 for(j=1;j<=data.cols();j++) 
         data.r(i,j)=(data.r(i,j)-mInputNormFactor.r(j,1))/(mInputNormFactor.r(j,2)-mInputNormFactor.r(j,1));
 //計(jì)算
	 int iSample;
	 Mm mInputdata,mHiddendata,mOutputdata;
	 mInputdata=zeros(1,iInput);
	 mHiddendata=zeros(1,iHidden);
	 mOutputdata=zeros(1,iOutput);
	 double sum=0.0;
   for(iSample=1;iSample<=data.rows();iSample++){ 
	 //輸入層數(shù)據(jù)
	    for(i=1;i<=iInput;i++)
		  mInputdata.r(i)=data.r(iSample,i);
	 //隱層數(shù)據(jù)	
		for(j=1;j<=iHidden;j++){
		  sum=0.0;
		 for(i=1;i<=iInput;i++)
			sum+=mInputdata.r(i)*mWeighti.r(i,j);
		 sum-=mThresholdi.r(j); 
		 mHiddendata.r(j)=1.0/(1.0+exp(-sum));
		}
    
  //輸出數(shù)據(jù)
	for(j=1;j<=iOutput;j++){
		sum=0.0;
		for(i=1;i<=iHidden;i++)
			sum+=mHiddendata.r(i)*mWeighto.r(i,j);
		sum-=mThresholdo.r(j); 
		mOutputdata.r(j)=1.0/(1.0+exp(-sum));
	}
	
	//轉(zhuǎn)換
	for(j=1;j<=iOutput;j++)
        mResult.r(iSample,j)=mOutputdata.r(j)*(mTargetNormFactor.r(j,2)-mTargetNormFactor.r(j,1))+mTargetNormFactor.r(j,1);
 }
  
 return (mResult);
}

void CBpNet::LoadBpNet(CString &strNetName)
{CFile file;
 
 if(file.Open(strNetName,CFile::modeRead)==0)   
 {MessageBox(NULL,"無法打開文件!","錯(cuò)誤",MB_OK);
  return;
 }
 else{
	 CArchive myar(&file,CArchive::load);
	 Serialize(myar); 
	 myar.Close();
 }
 file.Close(); 
}

bool CBpNet::SaveBpNet(CString &strNetName)
{CFile file;
 if(strNetName.GetLength()==0)
	 return(false);
 if(file.Open(strNetName,CFile::modeCreate|CFile::modeWrite)==0)   
 {MessageBox(NULL,"無法創(chuàng)建文件!","錯(cuò)誤",MB_OK);
  return(false);
 }
 else{
	 CArchive myar(&file,CArchive::store);
	 Serialize(myar); 
	 myar.Close();
 }
 file.Close(); 
 return(true);
}
//網(wǎng)絡(luò)學(xué)習(xí)
void CBpNet::learn()
{ int iSample=1;
  double dblTotal;
  MSG msg;
  if(m_IsStop)
	  m_IsStop=false;
  //數(shù)據(jù)正規(guī)化處理
  normalize();

  while(dblError>dblMse&&!m_IsStop){
   dblTotal=0.0;
   for(iSample=1;iSample<=mSampleInput.rows();iSample++){
	forward(iSample);
    backward(iSample);
	dblTotal+=dblErr;//總誤差
  }
   if(dblTotal/dblError>1.04){//動(dòng)態(tài)改變學(xué)習(xí)速率
	   dblLearnRate1*=0.7;
       dblLearnRate2*=0.7;
   }
   else{
       dblLearnRate1*=1.05;
       dblLearnRate2*=1.05;
   }
   lEpochs++;
   dblError=dblTotal;

   ::PeekMessage(&msg,NULL,0,0,PM_REMOVE);
   ::DispatchMessage(&msg);
     msg.message=-1;
   ::DispatchMessage(&msg);//這樣可以消除屏閃和假死機(jī)
  }
if(dblError<=dblMse)
 m_isOK=true;
else
 m_isOK=false;

}

void CBpNet::stop()
{
 m_IsStop=true;
}

double CBpNet::randab(double a, double b)
{ //注意,如果應(yīng)用矩陣庫(kù),頭文件matlib.h對(duì)rand()函數(shù)重新定義,只產(chǎn)生(0,1)
  //之間的隨機(jī)數(shù)
  return((b-a)*rand()+a);
}

//將數(shù)據(jù)轉(zhuǎn)化到(0,1)區(qū)間
void CBpNet::normalize()
{
 
 int i,j;
  //輸入數(shù)據(jù)范圍
  mInputNormFactor=scope(mSampleInput);
  //目標(biāo)數(shù)據(jù)范圍
  mTargetNormFactor=scope(mSampleTarget);

 for(i=1;i<=mSampleInput.rows();i++)
	 for(j=1;j<=mSampleInput.cols();j++)
		 mSampleInput.r(i,j)=(mSampleInput.r(i,j)-mInputNormFactor.r(j,1))/(mInputNormFactor.r(j,2)-mInputNormFactor.r(j,1));
 
 for(i=1;i<=mSampleTarget.rows();i++)
	 for(j=1;j<=mSampleTarget.cols();j++)
		 mSampleTarget.r(i,j)=(mSampleTarget.r(i,j)-mTargetNormFactor.r(j,1))/(mTargetNormFactor.r(j,2)-mTargetNormFactor.r(j,1));
 
}

//前向計(jì)算 
void CBpNet::forward(int iSample)
{//根據(jù)第iSample個(gè)樣本,前向計(jì)算
	if(iSample<1||iSample>mSampleInput.rows()){
		MessageBox(NULL,"無此樣本數(shù)據(jù):索引出界!","無此樣本數(shù)據(jù):索引出界!",MB_OK);
		return;
	}
	int i,j;
	double sum=0.0;
	
	//輸入層數(shù)據(jù)
	for(i=1;i<=iInput;i++)
		mInput.r(i)=mSampleInput.r(iSample,i);
	
	//隱層數(shù)據(jù)
    
	for(j=1;j<=iHidden;j++){
		sum=0.0;
		for(i=1;i<=iInput;i++)			
			sum+=mInput.r(i)*mWeighti.r(i,j);
		
		sum-=mThresholdi.r(j); 
		mHidden.r(j)=1.0/(1.0+exp(-sum));
	}
    	
	//輸出數(shù)據(jù)
	for(j=1;j<=iOutput;j++){
		sum=0.0;
		for(i=1;i<=iHidden;i++)
			sum+=mHidden.r(i)*mWeighto.r(i,j);
		sum-=mThresholdo.r(j); 
		mOutput.r(j)=1.0/(1.0+exp(-sum));
	}
   	
}

//后向反饋
void CBpNet::backward(int iSample)
{
	if(iSample<1||iSample>mSampleInput.rows()){
		MessageBox(NULL,"無此樣本數(shù)據(jù):索引出界!","無此樣本數(shù)據(jù):索引出界!",MB_OK);
		return;
	}
    int i,j;
	
    //輸出誤差
	for(i=1;i<=iOutput;i++)
		mOutputDeltas.r(i)=mOutput.r(i)*(1-mOutput.r(i))*(mSampleTarget.r(iSample,i)-mOutput.r(i));
	
	//隱層誤差
	double sum=0.0;
	for(j=1;j<=iHidden;j++){
		sum=0.0;
		for(i=1;i<=iOutput;i++)
			sum+=mOutputDeltas.r(i)*mWeighto.r(j,i);
		mHiddenDeltas.r(j)=mHidden.r(j)*(1-mHidden.r(j))*sum;
	}
	//更新隱層-輸出權(quán)重
	
	double dblChange;
	for(j=1;j<=iHidden;j++)
		for(i=1;i<=iOutput;i++){
			dblChange=mOutputDeltas.r(i)*mHidden.r(j);
			mWeighto.r(j,i)=mWeighto.r(j,i)+dblLearnRate2*dblChange+dblMomentumFactor*mChangeo.r(j,i);
			mChangeo.r(j,i)=dblChange;
		}
    
	//更新輸入-隱層權(quán)重
    for(i=1;i<=iInput;i++)
		for(j=1;j<=iHidden;j++){
			dblChange=mHiddenDeltas.r(j)*mInput.r(i);
            mWeighti.r(i,j)=mWeighti.r(i,j)+dblLearnRate1*dblChange+dblMomentumFactor*mChangei.r(i,j); 
			mChangei.r(i,j)=dblChange;
		}
	//修改闕值
	for(j=1;j<=iOutput;j++)
	    mThresholdo.r(j)-=dblLearnRate2*mOutputDeltas.r(j);  
	for(i=1;i<=iHidden;i++) 
	    mThresholdi.r(i)-=dblLearnRate1*mHiddenDeltas.r(i); 
   	//計(jì)算誤差
	dblErr=0.0;
	for(i=1;i<=iOutput;i++)
		dblErr+=0.5*(mSampleTarget.r(iSample,i)-mOutput.r(i))*(mSampleTarget.r(iSample,i)-mOutput.r(i));
	
   
}

//求數(shù)據(jù)列的范圍
Mm CBpNet::scope(Mm mData)
{Mm mScope;
 mScope=zeros(mData.cols(),2);
 double  min,max;
 for(int i=1;i<=mData.cols();i++){
	 min=max=mData.r(1,i); 
	 for(int j=1;j<=mData.rows();j++){
		 if(mData.r(j,i)>=max)
			 max=mData.r(j,i);
		 if(mData.r(j,i)<=min)
			 min=mData.r(j,i);
	 }
	 if(min==max)
		 min=0.0;
	 mScope.r(i,1)=min;
	 mScope.r(i,2)=max;
 }
 return(mScope);

}

//顯示矩陣數(shù)據(jù),方便調(diào)試
void CBpNet::display(Mm data)
{CString strData,strTemp;
 int i=1,j=1;
 for(i=1;i<=data.rows();i++){
	 for(j=1;j<=data.cols();j++){
	 strTemp.Format("%.3f ",data.r(i,j));
	 strData+=strTemp;
	 }
	 strData=strData+"\r\n";
 }
 ::MessageBox(NULL,strData,"",MB_OK);

}

void CBpNet::Serialize(CArchive &ar)
{CObject::Serialize(ar);
 ///////////////////////////////////// 
if(ar.IsStoring()){
     int i,j;
	 double dblData;
	 CString strTemp="Bp";
	 ar<<strTemp;//寫入標(biāo)志
	//紀(jì)錄神經(jīng)元個(gè)數(shù)
	 ar<<iInput<<iHidden<<iOutput;
    //紀(jì)錄權(quán)值
	 for(i=1;i<=iInput;i++)
		 for(j=1;j<=iHidden;j++){
			 dblData=mWeighti.r(i,j);
		     ar<<dblData;
		 }
     for(i=1;i<=iHidden;i++)
		 for(j=1;j<=iOutput;j++){
			 dblData=mWeighto.r(i,j);
			 ar<<dblData;
		 }
	
      //記錄權(quán)值變化
	 for(j=1;j<=iHidden;j++)
		for(i=1;i<=iOutput;i++)
			ar<<mChangeo.r(j,i);
	
    //輸入-隱層權(quán)重變化
     for(i=1;i<=iInput;i++)
		for(j=1;j<=iHidden;j++)
			ar<<mChangei.r(i,j);
		
      //紀(jì)錄闕值
	 for(i=1;i<=iHidden;i++){
              dblData=mThresholdi.r(i);
			  ar<<dblData;
			  }
     for(i=1;i<=iOutput;i++){
		      dblData=mThresholdo.r(i);
			  ar<<dblData;
			  }
     //紀(jì)錄輸入輸出的極值
	 for(i=1;i<=iInput;i++){
		  dblData=mInputNormFactor.r(i,1);
		  ar<<dblData; //極小值
		  dblData=mInputNormFactor.r(i,2);
		  ar<<dblData; //極大值
         }
	 for(i=1;i<=iOutput;i++)
		 {dblData=mTargetNormFactor.r(i,1);
		  ar<<dblData; //輸出數(shù)據(jù)極小值
		  dblData=mTargetNormFactor.r(i,2);
		  ar<<dblData; 
		 }
	 //誤差范圍
	 ar<<dblMse; 
	 //學(xué)習(xí)速率
	 ar<<dblLearnRate1<<dblLearnRate2;
	 
}
         
 else{
	 int i,j;
	 CString strTemp="";
	 double dblTemp;
	 ar>>strTemp;//讀入標(biāo)志
	//讀入神經(jīng)元個(gè)數(shù)
	 ar>>iInput>>iHidden>>iOutput;
	 mChangei=zeros(iInput,iHidden);
     mChangeo=zeros(iHidden,iOutput);
	 mWeighti=zeros(iInput,iHidden);
	 mWeighto=zeros(iHidden,iOutput);
    //讀入權(quán)值
	 for(i=1;i<=iInput;i++)
		  for(j=1;j<=iHidden;j++)
		  { ar>>dblTemp;
		    mWeighti.r(i,j)=dblTemp;
		  }
	 	  
     for(i=1;i<=iHidden;i++)
		 for(j=1;j<=iOutput;j++)
		 { ar>>dblTemp;
		   mWeighto.r(i,j)=dblTemp;
		 }
	
	 //讀入權(quán)值變化
	 for(j=1;j<=iHidden;j++)
		for(i=1;i<=iOutput;i++)
			ar>>mChangeo.r(j,i);
	
     //輸入-隱層權(quán)重
     for(i=1;i<=iInput;i++)
		for(j=1;j<=iHidden;j++)
			ar>>mChangei.r(i,j);
	
     //讀入闕值
     mThresholdi=zeros(1,iHidden);
	 for(i=1;i<=iHidden;i++)
	 {ar>>dblTemp;
	  mThresholdi.r(i)=dblTemp;
	 }
	 mThresholdo=zeros(1,iOutput);
     for(i=1;i<=iOutput;i++)
	 {ar>>dblTemp;
	  mThresholdo.r(i)=dblTemp;
	 }
     //讀入輸入輸出的極值
     mInputNormFactor=zeros(iInput,2);
	 for(i=1;i<=iInput;i++){
		  ar>>dblTemp;
		  mInputNormFactor.r(i,1)=dblTemp; //極小值
		  ar>>dblTemp;
		  mInputNormFactor.r(i,2)=dblTemp; //極大值
         }
	 mTargetNormFactor=zeros(iOutput,2);
	 for(i=1;i<=iOutput;i++)
		 {ar>>dblTemp;
	      mTargetNormFactor.r(i,1)=dblTemp; //輸出數(shù)據(jù)極小值
		  ar>>dblTemp;
		  mTargetNormFactor.r(i,2)=dblTemp; 
		 }
	 //讀入誤差范圍
	 ar>>dblMse; 
	 //讀入學(xué)習(xí)速率
	 ar>>dblLearnRate1>>dblLearnRate2;
	 

	 //創(chuàng)建計(jì)算用的單個(gè)樣本矩陣
     mInput=zeros(1,iInput);
     mHidden=zeros(1,iHidden);
     mOutput=zeros(1,iOutput);
	 //誤差矩陣
	 mOutputDeltas=zeros(iOutput);
	 mHiddenDeltas=zeros(iHidden);
     
 }

}

//如果不是新網(wǎng)絡(luò),比如從文件恢復(fù)的網(wǎng)絡(luò),調(diào)用此函數(shù)構(gòu)建學(xué)習(xí)樣本
void CBpNet::LoadPattern(Mm mIn, Mm mOut)
{ if(mIn.cols()!=iInput||mOut.cols()!=iOutput){
	::MessageBox( NULL,"學(xué)習(xí)樣本格式錯(cuò)誤!","錯(cuò)誤",MB_OK);
	return;
}
  mSampleInput=zeros(mIn.rows(),mIn.cols());
  mSampleTarget=zeros(mOut.rows(),mOut.cols());  
  mSampleInput=mIn;
  mSampleTarget=mOut;
    
  m_isOK=false;
  m_IsStop=false;
  lEpochs=0;
  dblMomentumFactor=0.95;
  dblError=1.0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
懂色av一区二区夜夜嗨| 国产91露脸合集magnet| 7777精品伊人久久久大香线蕉完整版 | 中文一区一区三区高中清不卡| 精品一区二区三区的国产在线播放| 久久久国产精华| 成人av免费在线| 丝袜a∨在线一区二区三区不卡| 欧美丰满嫩嫩电影| 国产一区二区在线看| 亚洲私人影院在线观看| 欧美日本一区二区| 国产99久久久久久免费看农村| 亚洲私人黄色宅男| 欧美一卡二卡三卡| 成人成人成人在线视频| 亚洲色图视频网| 日韩欧美国产综合在线一区二区三区| 久久精品国产一区二区三 | 久久久久综合网| 91丨九色丨国产丨porny| 日本成人在线视频网站| 日本一区二区视频在线| 欧美性猛交xxxx乱大交退制版 | 1区2区3区国产精品| 91久久线看在观草草青青| 久久综合综合久久综合| 亚洲最新视频在线播放| 久久久久9999亚洲精品| 欧美精品aⅴ在线视频| 99天天综合性| 精品伊人久久久久7777人| 一区二区三区欧美视频| 日本一区二区免费在线| 日韩午夜av一区| 欧美午夜影院一区| 99这里只有精品| 国产精品一区免费视频| 美女精品自拍一二三四| 亚洲成在人线免费| 亚洲色图19p| 欧美韩国日本综合| 久久综合久久综合亚洲| 日韩三级视频在线看| 欧美系列一区二区| www.日韩精品| 国产69精品一区二区亚洲孕妇| 精品一区二区三区不卡| 蜜臀av一区二区三区| 午夜视频在线观看一区二区 | 中文字幕日韩精品一区| 久久免费看少妇高潮| 欧美成va人片在线观看| 欧美系列日韩一区| 色综合婷婷久久| 99免费精品视频| 一本到不卡精品视频在线观看 | 91精品婷婷国产综合久久竹菊| 色综合天天综合在线视频| 菠萝蜜视频在线观看一区| 高清不卡在线观看| 国产麻豆成人精品| 激情小说欧美图片| 国产在线精品一区二区不卡了| 免费在线视频一区| 亚洲图片欧美一区| 亚洲电影一级黄| 午夜精品aaa| 日韩激情一二三区| 日本特黄久久久高潮| 亚洲成av人片在www色猫咪| 亚洲午夜一区二区| 一区二区欧美精品| 亚洲一区二区美女| 日韩在线一区二区| 亚洲aⅴ怡春院| 婷婷国产v国产偷v亚洲高清| 日韩电影在线看| 狠狠色综合色综合网络| 国产精品自拍网站| 懂色中文一区二区在线播放| 成熟亚洲日本毛茸茸凸凹| 国产成人a级片| 成人福利视频网站| 91在线国内视频| 99v久久综合狠狠综合久久| 97se亚洲国产综合在线| 一本色道**综合亚洲精品蜜桃冫| 一本色道久久综合精品竹菊| 欧美日韩精品免费| 日韩欧美黄色影院| 日本一区二区视频在线| 亚洲综合色视频| 日本中文在线一区| 国产最新精品精品你懂的| 国产69精品一区二区亚洲孕妇| 日本电影欧美片| 欧美日韩国产精品成人| 日韩一区二区三| 国产欧美日本一区视频| 亚洲欧美视频在线观看| 午夜私人影院久久久久| 国产精品资源站在线| 91网址在线看| 欧美一区二区在线视频| 国产日韩成人精品| 有坂深雪av一区二区精品| 日本欧美一区二区| 国产精品亚洲第一区在线暖暖韩国| 成人av在线一区二区| 欧美日韩在线直播| 久久婷婷国产综合国色天香| 亚洲色图欧洲色图| 另类小说一区二区三区| 国产盗摄女厕一区二区三区| 91亚洲永久精品| 精品嫩草影院久久| 日欧美一区二区| 国产成人午夜高潮毛片| 欧美色男人天堂| 精品99999| 亚洲精品成人精品456| 国产精品自在在线| 欧美日韩国产综合视频在线观看| 国产欧美一区视频| 日本伊人精品一区二区三区观看方式 | 婷婷亚洲久悠悠色悠在线播放| 波波电影院一区二区三区| 欧美一级欧美三级| 一区二区三区四区在线| 国产成人精品亚洲日本在线桃色| 欧美剧在线免费观看网站| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 99国产精品久久久久久久久久久| 精品久久久久99| 丝袜美腿一区二区三区| 91免费国产在线观看| 国产日韩欧美一区二区三区综合| 日韩福利视频导航| 欧美四级电影网| 亚洲色图在线播放| 高清不卡在线观看| 久久久夜色精品亚洲| 久久精品久久久精品美女| 56国语精品自产拍在线观看| 亚洲国产精品自拍| 91浏览器入口在线观看| 中文字幕一区二区三区在线播放 | 亚洲成人tv网| 99精品国产热久久91蜜凸| 国产夜色精品一区二区av| 麻豆精品精品国产自在97香蕉| 欧美又粗又大又爽| 亚洲女与黑人做爰| av成人老司机| 国产精品国产三级国产aⅴ入口| 成人性生交大片免费看中文| 国产欧美日本一区视频| 久久久久久久电影| 天堂蜜桃91精品| 欧美美女直播网站| 一区二区欧美国产| 欧美午夜精品一区| 亚洲国产精品欧美一二99| 久久99日本精品| 激情偷乱视频一区二区三区| 自拍偷拍国产精品| 亚洲四区在线观看| 成人91在线观看| 亚洲国产高清aⅴ视频| 懂色av一区二区三区蜜臀| 久久九九久久九九| 国产一区二区福利视频| 欧美福利电影网| 日韩中文字幕av电影| 日韩欧美国产系列| 精品亚洲免费视频| 国产日韩精品一区二区三区在线| 国产成人亚洲精品狼色在线| 中文字幕制服丝袜成人av| av中文一区二区三区| 国产精品福利在线播放| 一本大道av一区二区在线播放| 一区二区三区日韩精品视频| 欧美老年两性高潮| 国产资源精品在线观看| 欧美α欧美αv大片| 91久久久免费一区二区| 高清久久久久久| 欧美精品一级二级三级| 日韩一区二区三区三四区视频在线观看| 成人av一区二区三区| 久久国产生活片100| 一区二区三区久久| 亚洲午夜日本在线观看| 亚洲高清免费一级二级三级| 日韩精品一卡二卡三卡四卡无卡| 国产麻豆精品视频| 色综合久久综合网欧美综合网| 欧美精品视频www在线观看|