新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 基于小生境遺傳算法的移動機器人路徑優化

        基于小生境遺傳算法的移動機器人路徑優化

        作者: 時間:2010-05-17 來源:網絡 收藏


        1.3 種群初始化

        執行遺傳的最優設計是必須對種群進行初始化,由于初始隨機產生,各轉向點坐標可能分布在整個規劃區域范圍內,包括可行的和不可行的,這樣便增加了搜索范圍。這里在可行區域內限制初始轉向點,以加快遺傳的收斂速度。具體做法為:判斷該轉向點是否在可行區域內,如果不是,則重新選取,直到坐標點符合條件為止。

        根據規劃環境的復雜度不同,最優中轉向點的個數也是不確定的,一般來說,環境越復雜,轉向點就越多,因此采用變長編碼技術,通過對染色體進行刪除、插入等操作,能夠確定合適的轉向點個數,使路徑達到最優。但是,轉向點數目太多,占用資源也就會太大,它將使運算速度變慢。因此,在運算過程中,設定最大轉向點為Nmax,種群中每個個體的長度n滿足2≤n≤Nmax。

        采用小生境原理,將每一代個體劃分為若干類,每個類中選出若干適應度較大的個體,作為一個類的優秀代表組成一個種群。

        1.4適應度函數

        所謂的路徑規劃,指在起點和終點之間找出一條最短的可行路徑,其約束條件是不與障礙物相交,同時在行走中的轉角不宜太大。該算法以兩個條件作為規劃路徑的可行性評價函數,即路徑總長度和各轉向點拐角的平均大小,對于不可行的路徑,對其適應度進行懲罰,使它的適應度差于可行路徑。

        (1)路徑總長度。為了防止與障礙物碰撞,應盡量使其與障礙物保持一定的安全距離。假設移動機器人的安全半徑為r;移動機器人與障礙物的距離為d,則路徑總長度Len由式(1)計算:

        式中:d(pi-1,pi)為轉向點pi-1與pi之間的長度。如果pi-1與pi之間的路徑不可行,則使用懲罰函數法對其適應度進行懲罰。懲罰函數定義如下:



        式中:ε為懲罰因子。路徑的評價函數可以寫為:


        判斷兩點之間的路徑是否可行,只需判斷這兩點的連線與障礙物的各邊是否相交即可。根據幾何學原理,判斷兩條線段是否相交可由以下兩個步驟進行確定:快速排斥試驗;跨立試驗。鑒于文章篇幅,在此不再對這兩個試驗進行詳細闡述。

        評價路徑是求路徑長度最短的問題,通過懲罰因子,可以使不可行路徑變長,從而降低它的適應值。

        (2)路徑平滑度。移動機器人的特點決定了它在行走過程中不宜以過大拐角進行轉向,因此整條行走路徑應趨于平緩而光滑,即每一轉向點處的拐角值應盡可能小。這里假設拐角最大值不能超過π/2,平滑度可以使用路徑的平均拐角值來計算:


        式中:ξ為一個趨于零的常數(ξ>0);αi(0≤αi≤π,i=2,3,…,n-1)表示兩向量AC,CB之間的夾角,B,C點的坐標分別為(xi-2,yi-1),(xi,yi),(xi-1,yi-1);k為αi中大于或等于π/2的個數,即當某一夾角大于或等于π/2時,對適應度進行懲罰。當n=2時,路徑為起始點與終止點的連線。若其可行,則M值趨于0??梢钥闯?,M值越小,路徑的平滑度越好。

        得到了以上兩個條件的評價函數,就可以獲得整條路徑的適應度函數。采用各項評價函數加權求和是常用的確定適應度函數的方法。因為各個加權系數不是恒定不變的,而是隨路徑和障礙物的情況變化而變化的,所以這種情況下各個加權系數就很難調整和確定。因此,在確定適應度函數時,盡量使適應度函數的項數最少,但又必須把路徑規劃的兩個條件融合在遺傳優化過程中。這里采用評價函數相乘的形式,如式(6)所示。

        f=1/(ML) (6)

        以f作為選擇操作的依據,則路徑的長度和平均拐角越小,其適應度越好。

        1.5 遺傳算子

        (1)選擇算子。使用錦標賽選擇法和精英保留法相結合的選擇策略。采用在錦標賽選擇法選擇時,先隨機在群體中選擇K個個體進行比較,適應度最好的個體將被選擇作為生成下一代的父體,參數K稱為競賽規模。這種選擇方式能使種群中適應度好的個體具有較大的“生存”機會。同時,由于它只使用適應度的相對值作為選擇的標準,而與適應度的數值大小不成直接比例,從而避免了超級個體的影響,在一定程度上避免了過早收斂和停滯現象的發生。精英保留法是當前種群中適應度最好的個體,它不參加遺傳操作,可直接復制到下一代,替換經交叉和變異操作產生的子種群中適應度最差的個體,其優點是在搜索過程中可以使某一代最優個體不被遺傳操作所破壞,這樣可保證遺傳算法以概率收斂到最優解。經驗證明,保留占種群總體2%~5%數量的個體,效果最為理想。

        (2)交叉算子。采用單點交叉法,在兩個父體上分別隨機選取一個交叉點(起點和終點除外),交換兩個個體在各自交叉點之后的染色體??紤]到規劃路徑的長度是可變的,為了防止交叉操作后出現過于繁瑣或簡單的路徑,對生成的新個體長度進行限制,即最大長度不能超過Nmax,并且不能產生回路,若不符合要求,重新獲取兩個父個體的交叉點。

        (3)插入算子。設計了兩種插入算子。第一種是有針對性的,即在連線穿過障礙物的兩個轉向點之間插入一個或多個轉向點,使產生的路徑避開障礙物,如圖1(a)所示;第二種是一般意義上的插入,以一定概率插入一個隨機產生的轉向點,如圖1(b)所示。

        (4)擾動算子。同樣設計了兩種擾動算子,第一種只選取路徑不可行的轉向點來進行小范圍的調整,使其路徑可行,如圖1(c)所示;第二種是不管路徑是否可行,任意選取一個位置,以概率pm對其轉向點坐標進行調整。在進化初期,不可行的解數量較多,調整的范圍大一些。在進化后期調整范圍逐漸縮小,如圖1(d)所示。



        (5)刪除算子。建立一個存儲空間REC,在一條路徑中,如果點(xi-1,yi-1)與點(xi,yi)的連線經過障礙物,但(xi-1,yi-1)與(xi+1,yi-1)的連線不經過障礙物,則將點(xi,yi)添加到REC中。如果REC不為空,則從中隨機選取一點刪除(見圖1(e));否則,在路徑中任意選取一個路徑點,以概率pd進行刪除,如圖1(f)所示。


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 江永县| 敦煌市| 北辰区| 康定县| 温州市| 体育| 清水河县| 鄢陵县| 瑞丽市| 平定县| 永丰县| 怀宁县| 镇平县| 永泰县| 奉新县| 杨浦区| 德格县| 高密市| 莲花县| 迁安市| 哈密市| 云安县| 绥芬河市| 德惠市| 南溪县| 东平县| 平阳县| 临夏县| 新建县| 宁强县| 拜泉县| 南澳县| 溧阳市| 徐闻县| 金沙县| 洛隆县| 唐海县| 镇平县| 汝州市| 大田县| 龙州县|