色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

遺傳算法理論的由來

新機器視覺 ? 來源:泊松比 ? 作者:泊松比 ? 2022-10-27 13:32 ? 次閱讀

幾天前,我著手解決一個實際問題——大型超市銷售問題。在使用了幾個簡單模型做了一些特征工程之后,我在排行榜上名列第 219 名。

c5e34588-55b7-11ed-a3b6-dac502259ad0.jpg

雖然結果不錯,但是我還是想做得更好。于是,我開始研究可以提高分數的優化方法。結果我果然找到了一個,它叫遺傳算法。在把它應用到超市銷售問題之后,最終我的分數在排行榜上一下躍居前列。

c5fa1074-55b7-11ed-a3b6-dac502259ad0.jpg

沒錯,僅靠遺傳算法我就從 219 名直接跳到 15 名,厲害吧!相信閱讀完本篇文章后,你也可以很自如地應用遺傳算法,而且會發現,當把它用到你自己正在處理的問題時,效果也會有很大提升。

目錄

1、遺傳算法理論的由來

2、生物學的啟發

3、遺傳算法定義

4、遺傳算法具體步驟

  • 初始化

  • 適應度函數

  • 選擇

  • 交叉

  • 變異

5、遺傳算法的應用

  • 特征選取

  • 使用TPOT庫實現

6、實際應用

7、結語

1、遺傳算法理論的由來

我們先從查爾斯·達爾文的一句名言開始:

能夠生存下來的往往不是最強大的物種,也不是最聰明的物種,而是最能適應環境的物種。

你也許在想:這句話和遺傳算法有什么關系?其實遺傳算法的整個概念就基于這句話。

讓我們用一個基本例子來解釋:

我們先假設一個情景,現在你是一國之王,為了讓你的國家免于災禍,你實施了一套法案:

  • 你選出所有的好人,要求其通過生育來擴大國民數量。

  • 這個過程持續進行了幾代。

  • 你將發現,你已經有了一整群的好人。

這個例子雖然不太可能,但是我用它是想幫助你理解概念。也就是說,我們改變了輸入值(比如:人口),就可以獲得更好的輸出值(比如:更好的國家)。現在,我假定你已經對這個概念有了大致理解,認為遺傳算法的含義應該和生物學有關系。那么我們就快速地看一些小概念,這樣便可以將其聯系起來理解。

2、生物學的啟發

相信你還記得這句話:「細胞是所有生物的基石。」由此可知,在一個生物的任何一個細胞中,都有著相同的一套染色體。所謂染色體,就是指由 DNA 組成的聚合體。

c6060f1e-55b7-11ed-a3b6-dac502259ad0.jpg

傳統上看,這些染色體可以被由數字0和 1 組成的字符串表達出來。

c61b41fe-55b7-11ed-a3b6-dac502259ad0.png

一條染色體由基因組成,這些基因其實就是組成 DNA 的基本結構,DNA 上的每個基因都編碼了一個獨特的性狀,比如,頭發或者眼睛的顏色。希望你在繼續閱讀之前先回憶一下這里提到的生物學概念。結束了這部分,現在我們來看看所謂遺傳算法實際上指的是什么?

3、遺傳算法定義

首先我們回到前面討論的那個例子,并總結一下我們做過的事情。

  1. 首先,我們設定好了國民的初始人群大小。

  2. 然后,我們定義了一個函數,用它來區分好人和壞人。

  3. 再次,我們選擇出好人,并讓他們繁殖自己的后代。

  4. 最后,這些后代們從原來的國民中替代了部分壞人,并不斷重復這一過程。

遺傳算法實際上就是這樣工作的,也就是說,它基本上盡力地在某種程度上模擬進化的過程。

因此,為了形式化定義一個遺傳算法,我們可以將它看作一個優化方法,它可以嘗試找出某些輸入,憑借這些輸入我們便可以得到最佳的輸出值或者是結果。遺傳算法的工作方式也源自于生物學,具體流程見下圖:

c62b913a-55b7-11ed-a3b6-dac502259ad0.png

那么現在我們來逐步理解一下整個流程。

4、遺傳算法具體步驟

為了讓講解更為簡便,我們先來理解一下著名的組合優化問題「背包問題」。如果你還不太懂,這里有一個我的解釋版本。

比如,你準備要去野游 1 個月,但是你只能背一個限重 30公斤的背包。現在你有不同的必需物品,它們每一個都有自己的「生存點數」(具體在下表中已給出)。因此,你的目標是在有限的背包重量下,最大化你的「生存點數」。

c63a9c34-55b7-11ed-a3b6-dac502259ad0.png

4.1初始化

這里我們用遺傳算法來解決這個背包問題。第一步是定義我們的總體。總體中包含了個體,每個個體都有一套自己的染色體。

我們知道,染色體可表達為二進制數串,在這個問題中,1 代表接下來位置的基因存在,0意味著丟失。(譯者注:作者這里借用染色體、基因來解決前面的背包問題,所以特定位置上的基因代表了上方背包問題表格中的物品,比如第一個位置上是 Sleeping Bag,那么此時反映在染色體的『基因』位置就是該染色體的第一個『基因』。)

c65122ba-55b7-11ed-a3b6-dac502259ad0.png

現在,我們將圖中的 4 條染色體看作我們的總體初始值。

4.2適應度函數

接下來,讓我們來計算一下前兩條染色體的適應度分數。對于 A1 染色體[100110]而言,有:

c65e3734-55b7-11ed-a3b6-dac502259ad0.png

類似地,對于 A2 染色體[001110]來說,有:

c674fd8e-55b7-11ed-a3b6-dac502259ad0.png

對于這個問題,我們認為,當染色體包含更多生存分數時,也就意味著它的適應性更強。

因此,由圖可知,染色體 1 適應性強于染色體 2。

4.3選擇

現在,我們可以開始從總體中選擇適合的染色體,來讓它們互相『交配』,產生自己的下一代了。這個是進行選擇操作的大致想法,但是這樣將會導致染色體在幾代之后相互差異減小,失去了多樣性。因此,我們一般會進行「輪盤賭選擇法」(Roulette Wheel Selection method)。

c67fd998-55b7-11ed-a3b6-dac502259ad0.jpg

想象有一個輪盤,現在我們將它分割成 m 個部分,這里的 m 代表我們總體中染色體的個數。每條染色體在輪盤上占有的區域面積將根據適應度分數成比例表達出來。

c6a6085c-55b7-11ed-a3b6-dac502259ad0.png

基于上圖中的值,我們建立如下「輪盤」。

c6b3fb9c-55b7-11ed-a3b6-dac502259ad0.jpg

現在,這個輪盤開始旋轉,我們將被圖中固定的指針(fixed point)指到的那片區域選為第一個親本。然后,對于第二個親本,我們進行同樣的操作。有時候我們也會在途中標注兩個固定指針,如下圖:

c6d0ff26-55b7-11ed-a3b6-dac502259ad0.jpg

通過這種方法,我們可以在一輪中就獲得兩個親本。我們將這種方法成為「隨機普遍選擇法」(Stochastic Universal Selection method)。

4.4交叉

在上一個步驟中,我們已經選擇出了可以產生后代的親本染色體。那么用生物學的話說,所謂「交叉」,其實就是指的繁殖。現在我們來對染色體 1 和 4(在上一個步驟中選出來的)進行「交叉」,見下圖:

c6dd5672-55b7-11ed-a3b6-dac502259ad0.png

這是交叉最基本的形式,我們稱其為「單點交叉」。這里我們隨機選擇一個交叉點,然后,將交叉點前后的染色體部分進行染色體間的交叉對調,于是就產生了新的后代。

如果你設置兩個交叉點,那么這種方法被成為「多點交叉」,見下圖:

c6fb8e58-55b7-11ed-a3b6-dac502259ad0.png

4.5變異

如果現在我們從生物學的角度來看這個問題,那么請問:由上述過程產生的后代是否有和其父母一樣的性狀呢?答案是否。在后代的生長過程中,它們體內的基因會發生一些變化,使得它們與父母不同。這個過程我們稱為「變異」,它可以被定義為染色體上發生的隨機變化,正是因為變異,種群中才會存在多樣性。

下圖為變異的一個簡單示例:

c7069474-55b7-11ed-a3b6-dac502259ad0.png

變異完成之后,我們就得到了新為個體,進化也就完成了,整個過程如下圖:

c71a61f2-55b7-11ed-a3b6-dac502259ad0.png

在進行完一輪「遺傳變異」之后,我們用適應度函數對這些新的后代進行驗證,如果函數判定它們適應度足夠,那么就會用它們從總體中替代掉那些適應度不夠的染色體。這里有個問題,我們最終應該以什么標準來判斷后代達到了最佳適應度水平呢?

一般來說,有如下幾個終止條件:

  1. 在進行 X 次迭代之后,總體沒有什么太大改變。

  2. 我們事先為算法定義好了進化的次數。

  3. 當我們的適應度函數已經達到了預先定義的值。

好了,現在我假設你已基本理解了遺傳算法的要領,那么現在讓我們用它在數據科學的場景中應用一番。

5、遺傳算法的應用

5.1特征選取

試想一下每當你參加一個數據科學比賽,你會用什么方法來挑選那些對你目標變量的預測來說很重要的特征呢?你經常會對模型中特征的重要性進行一番判斷,然后手動設定一個閾值,選擇出其重要性高于這個閾值的特征。

那么,有沒有什么方法可以更好地處理這個問題呢?其實處理特征選取任務最先進的算法之一就是遺傳算法。

我們前面處理背包問題的方法可以完全應用到這里。現在,我們還是先從建立「染色體」總體開始,這里的染色體依舊是二進制數串,「1」表示模型包含了該特征,「0表示模型排除了該特征」。

不過,有一個不同之處,即我們的適應度函數需要改變一下。這里的適應度函數應該是這次比賽的的精度的標準。也就是說,如果染色體的預測值越精準,那么就可以說它的適應度更高。

現在我假設你已經對這個方法有點一概念了。下面我不會馬上講解這個問題的解決過程,而是讓我們先來用 TPOT 庫去實現它。

5.2用TPOT庫來實現

這個部分相信是你在一開始讀本文時心里最終想實現的那個目標。即:實現。那么首先我們來快速瀏覽一下 TPOT 庫(Tree-based Pipeline Optimisation Technique,樹形傳遞優化技術),該庫基于 scikit-learn 庫建立。下圖為一個基本的傳遞結構。

c7229bf6-55b7-11ed-a3b6-dac502259ad0.jpg

圖中的灰色區域用 TPOT 庫實現了自動處理。實現該部分的自動處理需要用到遺傳算法。

我們這里不深入講解,而是直接應用它。為了能夠使用 TPOT 庫,你需要先安裝一些 TPOT 建立于其上的 python 庫。下面我們快速安裝它們:

# installing DEAP, update_checker and tqdm 

pip install deap update_checker tqdm
# installling TPOT 
pip install tpot

這里,我用了 Big Mart Sales(數據集地址:https://datahack.analyticsvidhya.com/contest/practice-problem-big-mart-sales-iii/)數據集,為實現做準備,我們先快速下載訓練和測試文件,以下是 python 代碼:

# import basic libraries

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
%matplotlib inline 
from sklearn import preprocessing 
from sklearn.metrics import mean_squared_error 
## preprocessing 
### mean imputations 

train['Item_Weight'].fillna((train['Item_Weight'].mean()), inplace=True)
test['Item_Weight'].fillna((test['Item_Weight'].mean()), inplace=True) 
### reducing fat content to only two categories 

train['Item_Fat_Content'] = train['Item_Fat_Content'].replace(['low fat','LF'], ['Low Fat','Low Fat']) 
train['Item_Fat_Content'] = train['Item_Fat_Content'].replace(['reg'], ['Regular']) 
test['Item_Fat_Content'] = test['Item_Fat_Content'].replace(['low fat','LF'], ['Low Fat','Low Fat']) 
test['Item_Fat_Content'] = test['Item_Fat_Content'].replace(['reg'], ['Regular']) 
train['Outlet_Establishment_Year'] = 2013 - train['Outlet_Establishment_Year'] 
test['Outlet_Establishment_Year'] = 2013 - test['Outlet_Establishment_Year'] 

train['Outlet_Size'].fillna('Small',inplace=True)
test['Outlet_Size'].fillna('Small',inplace=True)

train['Item_Visibility'] = np.sqrt(train['Item_Visibility'])
test['Item_Visibility'] = np.sqrt(test['Item_Visibility'])

col = ['Outlet_Size','Outlet_Location_Type','Outlet_Type','Item_Fat_Content']
test['Item_Outlet_Sales'] = 0combi = train.append(test)for i in col:
 combi[i] = number.fit_transform(combi[i].astype('str'))
 combi[i] = combi[i].astype('object')
train = combi[:train.shape[0]]
test = combi[train.shape[0]:]
test.drop('Item_Outlet_Sales',axis=1,inplace=True)
## removing id variables 

tpot_train = train.drop(['Outlet_Identifier','Item_Type','Item_Identifier'],axis=1)
tpot_test = test.drop(['Outlet_Identifier','Item_Type','Item_Identifier'],axis=1)
target = tpot_train['Item_Outlet_Sales']
tpot_train.drop('Item_Outlet_Sales',axis=1,inplace=True)
# finally building model using tpot library

from tpot import TPOTRegressor
X_train, X_test, y_train, y_test = train_test_split(tpot_train, target,
 train_size=0.75, test_size=0.25)

tpot = TPOTRegressor(generations=5, population_size=50, verbosity=2)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export('tpot_boston_pipeline.py')

c74a47e6-55b7-11ed-a3b6-dac502259ad0.jpg

一旦這些代碼運行完成,tpot_exported_pipeline.py 里就將會放入用于路徑優化的 python 代碼。我們可以發現,ExtraTreeRegressor 可以最好地解決這個問題。

## predicting using tpot optimised pipeline

tpot_pred = tpot.predict(tpot_test)
sub1 = pd.DataFrame(data=tpot_pred)
#sub1.index = np.arange(0, len(test)+1)

sub1 = sub1.rename(columns = {'0':'Item_Outlet_Sales'})
sub1['Item_Identifier'] = test['Item_Identifier']
sub1['Outlet_Identifier'] = test['Outlet_Identifier']
sub1.columns = ['Item_Outlet_Sales','Item_Identifier','Outlet_Identifier']
sub1 = sub1[['Item_Identifier','Outlet_Identifier','Item_Outlet_Sales']]
sub1.to_csv('tpot.csv',index=False)

如果你提交了這個 csv,那么你會發現我一開始保證的那些還沒有完全實現。那是不是我在騙你們呢?當然不是。實際上,TPOT 庫有一個簡單的規則。如果你不運行 TPOT 太久,那么它就不會為你的問題找出最可能傳遞方式。

所以,你得增加進化的代數,拿杯咖啡出去走一遭,其它的交給 TPOT 就行。此外,你也可以用這個庫來處理分類問題。進一步內容可以參考這個文檔:http://rhiever.github.io/tpot/。除了比賽,在生活中我們也有很多應用場景可以用到遺傳算法。

6、實際應用

遺傳算法在真實世界中有很多應用。這里我列了部分有趣的場景,但是由于篇幅限制,我不會逐一詳細介紹。

6.1工程設計

工程設計非常依賴計算機建模以及模擬,這樣才能讓設計周期過程即快又經濟。遺傳算法在這里可以進行優化并給出一個很好的結果。

相關資源:

  • 論文:Engineering design using genetic algorithms

  • 地址:http://lib.dr.iastate.edu/cgi/viewcontent.cgi?article=16942&context=rtd

6.2交通與船運路線(TravellingSalesmanProblem,巡回售貨員問題)

這是一個非常著名的問題,它已被很多貿易公司用來讓運輸更省時、經濟。解決這個問題也要用到遺傳算法。

c75d67fe-55b7-11ed-a3b6-dac502259ad0.jpg

c78cde30-55b7-11ed-a3b6-dac502259ad0.jpg

6.3機器人

遺傳算法在機器人領域中的應用非常廣泛。實際上,目前人們正在用遺傳算法來創造可以像人類一樣行動的自主學習機器人,其執行的任務可以是做飯、洗衣服等等。

相關資源:

  • 論文:Genetic Algorithms for Auto-tuning Mobile Robot Motion Control

  • 地址:https://pdfs.semanticscholar.org/7c8c/faa78795bcba8e72cd56f8b8e3b95c0df20c.pdf

7、結語

希望通過本文介紹,你現在已經對遺傳算法有了足夠的理解,而且也會用 TPOT 庫來實現它了。但是如果你不親身實踐,本文的知識也是非常有限的。

所以,請各位讀者朋友一定要在無論是數據科學比賽或是生活中嘗試自己去實現它

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 遺傳算法
    +關注

    關注

    0

    文章

    237

    瀏覽量

    20630
  • 模型
    +關注

    關注

    1

    文章

    3268

    瀏覽量

    48926

原文標題:一文讀懂遺傳算法工作原理!

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于遺傳算法的QD-SOA設計新方法

    了QD-SOA的設計,提出了一種基于遺傳算法的QD-SOA設計新方法。由于具有用于設計的模型是必不可少的,因此在第一步中獲得數值模型。然后,利用從數值模型中采樣的訓練數據建立人工神經網絡模型。實驗表明,該神經模型具有較高的精度和較
    的頭像 發表于 12-17 09:58 ?110次閱讀
    基于<b class='flag-5'>遺傳算法</b>的QD-SOA設計新方法

    SMA連接器的完整名稱及其命名由來

    《德索工程師說道》SMA連接器的完整名稱是“SubMiniature Version A connector”,即迷你型A版本連接器。這個名稱的由來與其設計和應用領域密切相關。SMA連接器最初在20
    的頭像 發表于 12-12 11:12 ?301次閱讀
    SMA連接器的完整名稱及其命名<b class='flag-5'>由來</b>

    半導體的能帶理論

    本文較為詳細地介紹半導體的能帶理論。 ? 半導體能帶理論及結構 半導體技術的持續發展得益于半導體理論在固體電子學(隨著固體器件特別是半導體集成電路的空前發展出現的一門新興學科)基礎上的建立與發展
    的頭像 發表于 11-25 09:31 ?786次閱讀
    半導體的能帶<b class='flag-5'>理論</b>

    【「從算法到電路—數字芯片算法的電路實現」閱讀體驗】+內容簡介

    內容簡介這是一本深入解讀基礎算法及其電路設計,以打通算法研發到數字IC設計的實現屏障,以及指導芯片設計工程師從底層掌握復雜電路設計與優化方法為目標的專業技術書。任何芯片(如WiFi芯片、5G芯片
    發表于 11-21 17:14

    淺談基于儲能電站提高風電消納能力的電源規劃研究

    吳春紅 安科瑞電氣股份有限公司 上海嘉定 201801 摘要: 文章提出了一種基于遺傳算法的電源規劃模型,旨在提高電網對風電的消納能力并保持系統穩定。通過構建不同的規劃方案,分析了儲能電站的引入
    的頭像 發表于 09-29 09:11 ?276次閱讀
    淺談基于儲能電站提高風電消納能力的電源規劃研究

    bq2750x系列中的Impedance Track?電池電量監測算法理論及實現

    電子發燒友網站提供《bq2750x系列中的Impedance Track?電池電量監測算法理論及實現.pdf》資料免費下載
    發表于 08-30 10:21 ?1次下載
    bq2750x系列中的Impedance Track?電池電量監測<b class='flag-5'>算法</b>的<b class='flag-5'>理論</b>及實現

    傳輸線的理論基礎

    電子發燒友網站提供《傳輸線的理論基礎.pdf》資料免費下載
    發表于 08-12 09:32 ?0次下載

    AGV系統設計解析:布局-車體-對接-數量計算-路徑規劃

    AGV是智能制造關鍵設備,廣泛應用于各行業。AGV路徑規劃技術包括A*、Dijkstra和遺傳算法等,各有優劣。AGV軟件系統優化方向包括多傳感器融合、高精度地圖構建、實時路徑更新和深度學習技術。AGV搬運機器人相比傳統叉車具有高效、靈活、滿負荷作業等優勢。
    的頭像 發表于 08-01 17:47 ?418次閱讀
    AGV系統設計解析:布局-車體-對接-數量計算-路徑規劃

    現代控制理論和自動控制原理的區別

    現代控制理論和自動控制原理是控制工程領域的兩個重要概念,它們在很多方面有相似之處,但也存在一些關鍵的區別。 一、定義 自動控制原理 自動控制原理是研究自動控制系統的基本原理和方法的學科。它主要研究
    的頭像 發表于 07-29 10:33 ?2633次閱讀

    機器學習算法原理詳解

    機器學習作為人工智能的一個重要分支,其目標是通過讓計算機自動從數據中學習并改進其性能,而無需進行明確的編程。本文將深入解讀幾種常見的機器學習算法原理,包括線性回歸、邏輯回歸、支持向量機(SVM)、決策樹和K近鄰(KNN)算法,探討它們的
    的頭像 發表于 07-02 11:25 ?1139次閱讀

    干貨!一文詳述BUCK電路的由來

    Buck的由來 電力電子的發展史我不想多說,經過幾十年的發展由最初的線性電源低效率、大體積到目前的高頻、小體積和高效率。下面將介紹三種最基本的拓撲之一Buck變換器是如何演變過來的。 學過電子的應該
    發表于 05-06 16:17

    機器學習六大核心算法深度解析

    算法歷程:線性回歸是一種古老的統計方法,它試圖找到最佳擬合數據的直線或超平面,最早可以追溯到19世紀初的高斯最小二乘法理論
    發表于 04-23 16:25 ?1874次閱讀
    機器學習六大核心<b class='flag-5'>算法</b>深度解析

    基于并行遺傳算法的微電網控制方法研究

    作為一種全新的發電、供電方法,微電網在保障電力供應穩定性、提高電力輸送效率等方面發揮了重要作用。
    的頭像 發表于 03-18 14:44 ?1572次閱讀
    基于并行<b class='flag-5'>遺傳算法</b>的微電網控制方法研究

    淺析基于matlab Parameter Estimation Tool工具箱的電池參數

    確定電池等效電路參數的過程一般被叫做電池模型參數辨識,目前關于電池參數辨識的方法也很多,如基于遺傳算法的電池參數辨識、帶遺忘因子最小二乘法電池參數辨識方法、遞推最小二乘參數辨識方法、在線參數辨識方法等。作者作為門外漢角度來看,相對主流方法為數值計算法和最小二乘法。
    的頭像 發表于 03-11 09:45 ?1.9w次閱讀
    淺析基于matlab Parameter Estimation Tool工具箱的電池參數

    如何開展高光譜成像技術在農業遺傳育種中的應用研究?

    在當今農業領域,遺傳育種是提高作物品質、增加產量和抵抗病蟲害的重要手段之一。然而,傳統的遺傳育種方法存在著時間消耗長、成本高、效率低等問題,難以滿足日益增長的農業需求。隨著科技的不斷發展,高光譜
    的頭像 發表于 02-20 14:54 ?775次閱讀
    如何開展高光譜成像技術在農業<b class='flag-5'>遺傳</b>育種中的應用研究?
    主站蜘蛛池模板: 麻豆国产人妻精品无码AV| chinesedaddy80老年人| 九九视频在线观看视频6| H揉捏娇喘乳叫床NP调教视频| 亚洲精品国产第一区第二区| 欧美高清vivoesosexo18| 果冻传媒在线播放| 超碰最新网站| 综合久久伊人| 亚洲精品久久久久久久蜜臀老牛| 青青热久久综合网伊人| 久久这里只精品国产99re66| 国产在线成人一区二区三区| 澳大利亚剧满足在线观看| 在线免费观看a视频| 亚洲精品不卡在线| 天天靠天天擦天天摸| 青青青视频在线| 美女脱内衣裸身尿口露出来| 挤奶门事件完整照片| 国产精品免费观看视频| 超碰免费视频caoporn| 97一期涩涩97片久久久久久久| 亚洲欧美国产旡码专区| 午夜亚洲WWW湿好爽| 少女10声大哥喊退色狼| 秋霞影院福利电影| 欧美午夜精品A片一区二区HD| 毛片无码免费无码播放| 九色PORNY丨视频入口| 极品内射少妇精品无码视频| 国语自产视频在线| 国产亚洲美女在线视频视频| 国产精品青草久久福利不卡| 国产精品久久久久精品A片软件| 丰满女朋友在线观看中文| 超碰97人人做人人爱网站| FREECHINESE东北女人真爽| 97国产精品久久精品国产| 777久久人妻少妇嫩草AV| 69国产精品人妻无码免费|