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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? opticalnetworkdlg.cpp

?? 《Visual C++精彩實(shí)例詳解》第29章 基因算法的VC實(shí)現(xiàn)
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):

// 搜索最小C值
double COpticalNetworkDlg::FindMiniC(double *data, int len)
{ 
	double mini=data[0];
	int mininum=0;
	for(int n=0;n<len;n++)
	{
		if(data[n]<mini)
		{
			mini=data[n];
		    mininum=n;
		}
	}
	return mini;
}

// 基因算法的具體實(shí)現(xiàn)
void COpticalNetworkDlg::OnButtonGa() 
{     
	 // 取得基因算法所需參數(shù) 
	 UpdateData(TRUE);
     // 分配內(nèi)存
     OBD_OLT=(double *)malloc(sizeof(double)*m_nOBDNum);
     ONU_OBD=(double *)malloc(sizeof(double)*m_nONUNum*m_nOBDNum);
     // 根據(jù)群體規(guī)模和交叉概率計(jì)算出交叉?zhèn)€體個(gè)數(shù)
	 nGACrossNum = m_nGroupSize*m_GACrossProb/2;
	 // 根據(jù)群體規(guī)模和變異概率計(jì)算出變異個(gè)體個(gè)數(shù)
     nGAVariNum  = m_nGroupSize*m_GAVariProb;
	 // 設(shè)置已進(jìn)行過(guò)基因算法標(biāo)志
	 m_bIsGa=TRUE;
	 // 為當(dāng)前一代個(gè)體分配內(nèi)存
     for(int k=0;k<m_nGroupSize;k++)
          GeneSerial[k]=(int *) malloc(sizeof(int)*m_nONUNum);
	  // 為當(dāng)前一代個(gè)體交叉和變異后的新產(chǎn)生的個(gè)體分配內(nèi)存
     for(int u=0;u<nGACrossNum*2+nGAVariNum;u++)
          NextGeneSerial[u]=(int *)malloc(sizeof(int)*m_nONUNum);
     // 參數(shù)有效性檢查
	 if(m_nONUNum>=m_nOBDLimit*m_nOBDNum)
	 {
		  AfxMessageBox("ONU數(shù)目過(guò)多,或者OBD數(shù)目過(guò)少,或OBD最大連接數(shù)目過(guò)小!",MB_OK|MB_ICONINFORMATION,NULL);
          return; 
	 }
	 if(m_nGroupSize<nGACrossNum*2+nGAVariNum)
	 {
		  AfxMessageBox("群體規(guī)模過(guò)小,或者交叉概率過(guò)大,或者變異概率過(guò)大!",MB_OK|MB_ICONINFORMATION,NULL);
          return; 
	 }
     for(int n1=0;n1<m_nOBDNum;n1++)
     {
          OBD_OLT[n1]=sqrt((m_OBDX[n1]-m_OLTX)*(m_OBDX[n1]-m_OLTX)+(m_OBDY[n1]-m_OLTY)*(m_OBDY[n1]-m_OLTY));
          nOBDLimit[n1]=m_nOBDLimit;
     } 
     int LimitTotal=0;
     int CurGroupSize=1;
     for(int p=0;p<m_nOBDNum;p++)
          LimitTotal+=nOBDLimit[p];
     for(int q=0;q<m_nONUNum;q++)
     {
          if(CurGroupSize>MAX_GROUPSIZE*10)
          break;
          else
          {
             CurGroupSize=LimitTotal*CurGroupSize;
             LimitTotal--;
          }
     }
     if(m_nGroupSize>CurGroupSize||m_nGroupSize>MAX_GROUPSIZE*10)
          return;	
	 // 計(jì)算ONU和OBD之間距離
     for(int i=0;i<m_nONUNum;i++)
          for(int j=0;j<m_nOBDNum;j++)                                            
		     *(ONU_OBD+i*m_nOBDNum+j)=sqrt((m_ONUX[i]-m_OBDX[j])*(m_ONUX[i]-m_OBDX[j])+(m_ONUY[i]-m_OBDY[j])*(m_ONUY[i]-m_OBDY[j]));
     // 產(chǎn)生初始基因序列   
	 for(int i1=0;i1<m_nGroupSize;i1++)
     {          
          for(int k=0;k<m_nOBDNum;k++)
              nCurOBDLimit[i1][k]=0;
          for(int j1=0;j1<m_nONUNum;j1++)
          {
             int RandInt;
      Random:RandInt=RandomInt(0,m_nOBDNum-1);
             if(nCurOBDLimit[i1][RandInt]<=nOBDLimit[RandInt]-1)
             {
                *(GeneSerial[i1]+j1)=RandInt;
                nCurOBDLimit[i1][RandInt]++; 
             }
             else
                goto Random;   // 不滿足約束條件2時(shí),重新產(chǎn)生基因序列
          } 
     }
	 // 基因算法具體實(shí)現(xiàn)
     for( nCurGANum=0;nCurGANum<m_GANum;nCurGANum++)
     {   
          // 計(jì)算當(dāng)前一代群體中每個(gè)個(gè)體的適應(yīng)度數(shù)值F
		  for(int i=0;i<m_nGroupSize;i++)
          {    
             Cost[i]=0;
			 for(int j=0;j<m_nONUNum;j++)
			 {   
				 Cost[i]=Cost[i]+*(ONU_OBD+j*m_nOBDNum+*(GeneSerial[i]+j))+*(OBD_OLT+*(GeneSerial[i]+j));             
   			     temp[i][j]=*(ONU_OBD+j*m_nOBDNum+*(GeneSerial[i]+j));
			 }  
			 F[i]=1/Cost[i]; 
			 TotalF=F[i]+TotalF;
          }
          // 歸一化F值
		  for(int a=0;a<m_nGroupSize;a++)
             Pm[a]=F[a]/TotalF*100;
          // 將當(dāng)前一代群體中的個(gè)體按F值從大到小排序
		  for(int b=0;b<m_nGroupSize-1;b++)
		  {
			  FindMiniF(Pm,m_nGroupSize-b);
		  }
		  m_CurGANum=nCurGANum;
    	  // 查找當(dāng)前一代中的最小費(fèi)用個(gè)體
		  m_MiniCost=FindMiniC(Cost,m_nGroupSize);
		  // 繪制圖形
		  DrawNetwork();
          // 交叉操作
		  for(int c=0;c<nGACrossNum;c++)
          {  
			 int nExchangePos,temp=0;
             int nNextOBD1;
             int nNextOBD2;
			 int LimitLoop=0;
             int new1=0;     // 發(fā)生交叉?zhèn)€體1在當(dāng)前一代群體中位置
			 int new2=0;     // 發(fā)生交叉?zhèn)€體2在當(dāng)前一代群體中位置
             //int temp=0;
      Limit1:new1=RandomInt(0,m_nGroupSize-1);   
			 temp=RandomInt(0,m_nGroupSize-1);
             // 由于當(dāng)前一代群體中個(gè)體已經(jīng)按照F從大到小排序
			 // 如果new1>temp,則位置new1處個(gè)體F值小于temp處個(gè)體F值
			 // 所以選定new1=temp處個(gè)體進(jìn)行交叉,體現(xiàn)了F值較大的個(gè)體有較多機(jī)會(huì)進(jìn)行交叉
			 if(new1>temp)  
                new1=temp;
             new2=RandomInt(0,m_nGroupSize-1);
             temp=RandomInt(0,m_nGroupSize-1);
             if(new2>temp)
                new2=temp;             
             for(int g=0;g<m_nOBDNum;g++)
             { 
                 nNextOBDLimit[2*c][g]=nCurOBDLimit[new1][g];
                 nNextOBDLimit[2*c+1][g]=nCurOBDLimit[new2][g];
             } 
            
      Limit2:nExchangePos=RandomInt(0,m_nONUNum-1);  // 被選中交叉?zhèn)€體的基因序列中用于交叉的基因位
             nNextOBD1=nNextOBDLimit[2*c][*(GeneSerial[new2]+nExchangePos)]+1;
             nNextOBD2=nNextOBDLimit[2*c+1][*(GeneSerial[new1]+nExchangePos)]+1;
			 LimitLoop++;
             if((nNextOBD1>nOBDLimit[*(GeneSerial[new2]+nExchangePos)])||(nNextOBD2>nOBDLimit[*(GeneSerial[new1]+nExchangePos)]))
                 if(LimitLoop>50)   // 跳轉(zhuǎn)到Limit2重新產(chǎn)生交叉位滿50次,仍未滿足約束條件2,
					goto Limit1;    // 則跳轉(zhuǎn)到Limit1,重新產(chǎn)生交叉?zhèn)€體在當(dāng)前一代群體中位置
				 else
				    goto Limit2;    // 交叉后,不滿足約束條件2,跳轉(zhuǎn)到Limit2重新產(chǎn)生交叉位
             
		     // 交叉成功,產(chǎn)生新的個(gè)體
			 for(int m=0;m<m_nONUNum;m++)
             {   
                 if(m==nExchangePos)
                 {
                    *(NextGeneSerial[2*c]+nExchangePos)=*(GeneSerial[new2]+nExchangePos);
                    *(NextGeneSerial[2*c+1]+nExchangePos)=*(GeneSerial[new1]+nExchangePos);
                    nNextOBDLimit[2*c][*(GeneSerial[new2]+nExchangePos)]++;
                    nNextOBDLimit[2*c][*(GeneSerial[new1]+nExchangePos)]--;
                    nNextOBDLimit[2*c+1][*(GeneSerial[new2]+nExchangePos)]--;
                    nNextOBDLimit[2*c+1][*(GeneSerial[new1]+nExchangePos)]++;                   
                 }
                 else
                 {
                    *(NextGeneSerial[2*c]+m)=*(GeneSerial[new1]+m);
                    *(NextGeneSerial[2*c+1]+m)=*(GeneSerial[new2]+m);
                 }
              }            
           } 

           // 變異操作
		   for(int d=0;d<nGAVariNum;d++)
           {
               int nVariIndividual=0;
               int nVariPos=0;
			   int VariLoop=0;
         Vari1:VariLoop=0;
			   nVariIndividual=RandomInt(0,m_nGroupSize-1); // 發(fā)生變異個(gè)體在當(dāng)前一代群體中位置
			   nVariPos=RandomInt(0,m_nONUNum-1);           // 發(fā)生變異個(gè)體的基因序列中變異的基因位
               for(int z=0;z<m_nOBDNum;z++)
                   nNextOBDLimit[2*nGACrossNum+d][z]=nCurOBDLimit[nVariIndividual][z];
               for(int h=0;h<m_nONUNum;h++)
               {
                   if(h==nVariPos)
                   {
                      int nVariValue;
                      int nNextVari;
               Vari2: nVariValue=RandomInt(0,m_nOBDNum-1);  // 產(chǎn)生變異位變異后的值
                      if(nVariValue==*(GeneSerial[nVariIndividual]+nVariPos))
					  {   
						  VariLoop++;
						  if(VariLoop==100) // 跳轉(zhuǎn)到Vari2滿50次,隨機(jī)產(chǎn)生的變異位的值仍等于待變異位的當(dāng)前值
							  goto Vari1;   // 則跳轉(zhuǎn)到Vair1,重新產(chǎn)生變異個(gè)體在當(dāng)前一代群體中位置
						  else
						      goto Vari2; // 變異位的值等于待變異位的當(dāng)前值,跳轉(zhuǎn)到Vari2,重新產(chǎn)生變異位變異后的值
					  }
                      nNextVari=nNextOBDLimit[2*nGACrossNum+d][nVariValue]+1;
                      if(nNextVari>nOBDLimit[nVariValue])
                      {   
						  VariLoop++;
						  if(VariLoop==100)// 跳轉(zhuǎn)到Vari2重新產(chǎn)生變異位滿50次,仍未滿足約束條件2,
							  goto Vari1;  // 則跳轉(zhuǎn)到Vair1,重新產(chǎn)生變異個(gè)體在當(dāng)前一代群體中位置
						  else
						      goto Vari2;  // 變異后,不滿足約束條件2,跳轉(zhuǎn)到Vari2重新產(chǎn)生變異位
					  }
					  // 變異成功
                      *(NextGeneSerial[2*nGACrossNum+d]+h)=nVariValue;
                      nNextOBDLimit[2*nGACrossNum+d][nVariValue]++;
                      nNextOBDLimit[2*nGACrossNum+d][*(GeneSerial[nVariIndividual]+nVariPos)]--;
                   }
                   else
                      *(NextGeneSerial[2*nGACrossNum+d]+h)=*(GeneSerial[nVariIndividual]+h);
                }
           } 
           
           // 產(chǎn)生下一代群體
		   for(int e=0;e<2*nGACrossNum+nGAVariNum;e++)
           {
               for(int f=0;f<m_nONUNum;f++)
                   *(GeneSerial[m_nGroupSize-e-1]+f)=*(NextGeneSerial[e]+f);
               for(int x=0;x<m_nOBDNum;x++)
                   nCurOBDLimit[m_nGroupSize-e-1][x]=nNextOBDLimit[e][x];
           }
		   Sleep(m_SleepTime);
      }
}

// 產(chǎn)生1~100之間的隨機(jī)整數(shù)
int COpticalNetworkDlg::RandomInt(int low,int high)
{
    int result;
	result=rand();
    return result%(high+1);
}

// 搜索最小F值
void COpticalNetworkDlg::FindMiniF(double *data,int len)
{
   double mini=data[0];
   int    mininum=0;
   int    CurOBDTemp;
   int    *GeneSerTemp;
   double datatemp;   
   for(int n=0;n<len;n++)
      if(mini>data[n])
      {
         mini=data[n];
         mininum=n;
      }
   if(mininum!=len-1)
   {
      datatemp=*(data+len-1);
      *(data+len-1)=*(data+mininum);
      *(data+mininum)=datatemp;
      GeneSerTemp=GeneSerial[len-1];
	  GeneSerial[len-1]=GeneSerial[mininum];
	  GeneSerial[mininum]=GeneSerTemp;	  
	  for(int n2=0;n2<m_nOBDNum;n2++)
	  {
		  CurOBDTemp=nCurOBDLimit[mininum][n2];
	      nCurOBDLimit[mininum][n2]=nCurOBDLimit[len-1][n2];
		  nCurOBDLimit[len-1][n2]=CurOBDTemp; 
	  }
   }
}

void COpticalNetworkDlg::DrawNetwork()
{
     int NetLeft,NetBottom;
	 int x_coordinate=0,y_coordinate=0;
	 char txt[4];
	 CString info;	 
	 CDC* pDC=GetDC();
     CRect RectClient,Workarea;
     GetClientRect(RectClient);
     Workarea.left=RectClient.left+RectClient.right/3-15;
     Workarea.right=RectClient.right;
     Workarea.top=RectClient.top;
     Workarea.bottom=RectClient.bottom;
     pDC->Rectangle(Workarea);
     pDC->SetBkColor(0x00FFFFFF);
	 NetLeft=Workarea.left+25;
	 NetBottom=Workarea.bottom-20;
	 pDC->MoveTo(NetLeft,NetBottom);
     pDC->LineTo(NetLeft+500,NetBottom);
	 pDC->MoveTo(NetLeft,NetBottom);
	 pDC->LineTo(NetLeft,NetBottom-500);	 
	 pDC->TextOut(NetLeft+500,NetBottom-12,"X");
	 pDC->TextOut(NetLeft+5,NetBottom-505,"Y");
	 pDC->SetTextColor(0x000000FF);
	 info.Format("已進(jìn)化代數(shù) %d",m_CurGANum+1);
	 pDC->TextOut(NetLeft+100,NetBottom-520,info);
	 info.Format("最小費(fèi)用 %5.5f",m_MiniCost);
	 pDC->TextOut(NetLeft+250,NetBottom-520,info);
	 pDC->SetTextColor(GetSysColor(COLOR_WINDOWTEXT));
	 for(x_coordinate=0;x_coordinate<=10;x_coordinate++)
	 {
	    char xn[4];
		wsprintf(xn,"%d",x_coordinate*10);
		pDC->TextOut(NetLeft+x_coordinate*50-8,NetBottom+2,xn);
	 }
	 for(y_coordinate=1;y_coordinate<=10;y_coordinate++)
	 {
	    char yn[4];
		wsprintf(yn,"%d",y_coordinate*10);
		if(y_coordinate==10)
		pDC->TextOut(NetLeft-24,NetBottom-y_coordinate*50,yn);
		else
		pDC->TextOut(NetLeft-22,NetBottom-y_coordinate*50,yn);
	 }

	 PtrOldPen=pDC->SelectObject(&PenOBD);
	 for(int b1=0;b1<m_nOBDNum;b1++)
	 {   
		 pDC->MoveTo(NetLeft+m_OBDX[b1]*5,NetBottom-m_OBDY[b1]*5);
		 pDC->LineTo(NetLeft+m_OLTX*5,NetBottom-m_OLTY*5);
	 }
	 for(int b2=0;b2<m_nONUNum;b2++)
	 {  
		 pDC->SelectObject(&PenONU[colornum]);
		 pDC->MoveTo(NetLeft+m_ONUX[b2]*5,NetBottom-m_ONUY[b2]*5);
		 pDC->LineTo(NetLeft+m_OBDX[*(GeneSerial[0]+b2)]*5,NetBottom-m_OBDY[*(GeneSerial[0]+b2)]*5);
		 colornum++;
		 if(colornum==16)
			colornum=0;		 
	 }
	 pDC->SelectObject(PtrOldPen);    
	 pDC->SetTextColor(0x000000FF);
	 pDC->TextOut(NetLeft+m_OLTX*5-7,NetBottom-m_OLTY*5-7,"★");
	 pDC->SetTextColor(0x00FF0000);
	 for(int a1=0;a1<m_nOBDNum;a1++)
	 {
		 wsprintf(txt,"%d",a1+1);
	     pDC->TextOut(NetLeft+m_OBDX[a1]*5-3,NetBottom-m_OBDY[a1]*5-9,txt);
	 }
	 pDC->SetTextColor(0x0000FF00);
	 for(int a2=0;a2<m_nONUNum;a2++)
	 {
         wsprintf(txt,"%d",a2+1);
         pDC->TextOut(NetLeft+m_ONUX[a2]*5-3,NetBottom-m_ONUY[a2]*5-9,txt);
	 }
	 pDC->SetTextColor(0x00FFFFFF);
	 pDC->TextOut(NetLeft+507,NetBottom-508,"c");
	 pDC->SetTextColor(GetSysColor(COLOR_WINDOWTEXT));
	 pDC->SetBkColor(GetSysColor(COLOR_WINDOW));
	 
}

void COpticalNetworkDlg::OnAbout() 
{
     CAboutDlg dlg;
     dlg.DoModal();
}

void COpticalNetworkDlg::OnOK() 
{
	CDialog::OnOK();
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99视频在线精品| 99视频超级精品| 国产精品一卡二| 亚洲男人的天堂一区二区| 日韩欧美精品在线视频| 91视频在线观看| 国产自产高清不卡| 五月婷婷另类国产| 一区二区三区在线视频观看58| 久久久久高清精品| 日韩一区二区三区在线视频| 欧美精品一区二区在线播放| 欧美日韩日本视频| 色菇凉天天综合网| 成人av网站免费| 国产老肥熟一区二区三区| 亚洲超丰满肉感bbw| 亚洲图片另类小说| 国产人伦精品一区二区| 日韩一区二区在线观看视频| 亚洲青青青在线视频| 国产欧美一区视频| 精品国产一区二区三区忘忧草 | 亚洲一区二区三区国产| 中文字幕第一区第二区| 欧美xfplay| 视频一区二区国产| 一区二区三区四区在线免费观看| 中文字幕免费不卡在线| 亚洲精品在线免费观看视频| 欧美一卡二卡在线| 日韩欧美你懂的| 日韩西西人体444www| 884aa四虎影成人精品一区| 在线观看视频一区| 色婷婷狠狠综合| 亚洲欧洲国产日韩| 亚洲色大成网站www久久九九| 国产精品国产a| 亚洲欧洲在线观看av| 国产欧美一区二区精品忘忧草 | 亚洲国产视频a| 亚洲一区二区三区国产| 亚洲一区二区三区不卡国产欧美| 不卡视频在线观看| av成人免费在线| 色综合天天狠狠| 在线观看日韩av先锋影音电影院| 色哟哟欧美精品| 欧美色网一区二区| 欧美老女人第四色| 日韩欧美中文字幕一区| 精品国产欧美一区二区| 精品一区免费av| 国产精品亚洲视频| 91网站视频在线观看| 一本到不卡精品视频在线观看| 色哟哟一区二区在线观看 | 国产女人aaa级久久久级 | 欧美日韩国产免费| 午夜一区二区三区视频| 三级精品在线观看| 韩国女主播成人在线观看| 国产精品一级片| 91黄色免费观看| 91精品国产综合久久精品性色| 精品国产电影一区二区| 国产嫩草影院久久久久| 亚洲一区二区三区中文字幕在线| 日韩主播视频在线| 成人在线综合网| 欧美日韩一区二区在线观看 | 中文字幕一区二区三区视频 | 国产91丝袜在线18| 色综合色综合色综合色综合色综合| 精品视频一区二区不卡| 日韩精品一区二区三区中文精品| 中文一区二区在线观看| 亚洲国产成人tv| 国产精品白丝jk黑袜喷水| 国产精品成人免费在线| 亚洲丶国产丶欧美一区二区三区| 精品制服美女久久| 97久久精品人人做人人爽50路| 欧美一区二视频| 最近中文字幕一区二区三区| 日韩和欧美的一区| 99在线精品观看| 精品少妇一区二区三区免费观看| 最新中文字幕一区二区三区| 欧美一区二区国产| 亚洲欧洲无码一区二区三区| 午夜精品视频一区| 91亚洲精品久久久蜜桃| 欧美成人一区二区三区在线观看| 综合分类小说区另类春色亚洲小说欧美 | 亚洲成在人线免费| 欧美国产欧美综合| 日韩主播视频在线| 91色婷婷久久久久合中文| 欧美成va人片在线观看| 亚洲精品高清视频在线观看| 国产乱码字幕精品高清av| 欧美日韩电影在线播放| 综合久久国产九一剧情麻豆| 国产专区综合网| 日韩一区二区免费高清| 一区二区三区在线观看欧美| 久久久无码精品亚洲日韩按摩| 亚洲成人精品一区| 99久久精品国产一区二区三区| 2021国产精品久久精品| 天天综合色天天综合色h| 在线区一区二视频| 亚洲色图制服丝袜| 波多野洁衣一区| 国产欧美精品日韩区二区麻豆天美| 蜜臀av一区二区在线免费观看| 欧美三级蜜桃2在线观看| eeuss鲁片一区二区三区| 久久久影视传媒| 久久精品国产精品亚洲红杏| 欧美日韩久久久| 亚洲综合丁香婷婷六月香| 岛国精品一区二区| 国产日产欧产精品推荐色| 国产精品一二三在| 国产午夜一区二区三区| 国产麻豆精品theporn| 欧美r级电影在线观看| 久久精品国产在热久久| 欧美一区二视频| 日韩免费高清电影| 狠狠狠色丁香婷婷综合久久五月| 日韩女优av电影| 另类人妖一区二区av| 日韩免费性生活视频播放| 七七婷婷婷婷精品国产| 91精品国产免费| 蜜臀精品一区二区三区在线观看 | 久久亚洲精华国产精华液| 狠狠久久亚洲欧美| 国产人成亚洲第一网站在线播放| 国产自产视频一区二区三区| 欧美经典三级视频一区二区三区| 国产精华液一区二区三区| 国产视频一区二区在线观看| 国产成a人无v码亚洲福利| 亚洲国产电影在线观看| 中文字幕一区二区三区蜜月| 91视频91自| 午夜视频一区二区| 精品毛片乱码1区2区3区| 韩国av一区二区三区在线观看 | 午夜精品影院在线观看| 8x8x8国产精品| 国产一区二区三区美女| 国产精品久久久久天堂| 色88888久久久久久影院按摩| 亚洲在线观看免费视频| 丝袜亚洲精品中文字幕一区| 欧美剧在线免费观看网站| 蜜臂av日日欢夜夜爽一区| 国产偷v国产偷v亚洲高清| 91小视频在线免费看| 天堂av在线一区| 26uuu国产在线精品一区二区| 国产成人亚洲综合a∨婷婷| 亚洲天堂久久久久久久| 欧美日本乱大交xxxxx| 精品一区二区三区视频在线观看 | 亚洲欧美激情一区二区| 欧美日韩aaa| 粉嫩aⅴ一区二区三区四区| 亚洲精品你懂的| 男人操女人的视频在线观看欧美| 久久久精品2019中文字幕之3| 99久久er热在这里只有精品15 | 一区二区三区中文字幕| 日韩一区二区在线观看视频 | 久久久久亚洲蜜桃| 亚洲三级在线免费| 精品欧美乱码久久久久久| 99久久婷婷国产| 久久99蜜桃精品| 一区二区视频在线| 久久综合视频网| 欧美亚一区二区| 国产99久久久精品| 午夜精品久久久久久久99樱桃| 久久久亚洲精品石原莉奈| 欧美日韩一区成人| av福利精品导航| 国产一区二区视频在线播放| 一区二区三区国产精华| 国产亚洲欧美一区在线观看| 亚洲二区在线观看| 中文字幕中文字幕中文字幕亚洲无线| 欧美精选一区二区| 色婷婷精品久久二区二区蜜臂av|