• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 0,  comments - 5,  trackbacks - 0
            A*算法
            基本步驟如下:

            基本函數F(n)=G(n) + H(n);

            其中G(n)是從起始點到當前點的距離,H(n)是從當前點到目標點的估計距離。

            例如對于一個網格狀的路網可以橫走和豎走,H(n)就是標準Manhattan距離:

            h(n) = D * (abs(n.x-goal.x) + abs(n.y-goal.y))

            D是走一步的代價。

            對于不同的情況H(n)的選取很關鍵,H越大運算時間越短但得到最優解的可能性越低

            H越小運算時間越長得到最優解的可能性越高。當H0時就是dijkstra算法。

             

            1)         創建OPENCLOSE表。其中OPEN為待評估的點,CLOSE為已經運算評估過的點。其中OPEN使用二叉堆便于排序。

            2)         初始化將起始點計算F(n)并加入到OPEN表。

            3)         取當前OPEN中的最小F(n)點為當前點,將他從OPEN表中刪除,加入到CLOSE表。

            4)         計算當前點的所有附近點(即一步能達到的點)

            4.1   對于附近點計算cost=當前點的G(n)+當前點到附近點的開銷。

            4.2   如果附近點已經在OPEN中則比較附近點的G(n)cost,如果cost小于附近點的G(n)則更新OPEN表中的附近點的G(n)costF(n),并把它的父節點設為當前點。反之不做操作。

            4.3   如果附近點在CLOSE表中則比較附近點的G(n)cost,如果cost小于附近點的G(n),則將附近點從CLOSE表中刪除并更新該附近點的G(n)F(n)并加入到OPEN表,并把它的父節點設為當前點。反之不操作。

            4.4   如果附近點既不在OPEN表也不在CLOSE表,則計算附近點的G(n),H(n)F(n)并加入到OPEN表,并把它的父節點設為當前點。

            5)         從3步驟開始重新計算直到當前點為目標點。

            6)         從目標點開始按父節點給出到起始點的最短路徑。

             

            其中的關鍵是對OPEN表、CLOSE表的數據結構設計。由于OPEN表中存在排序和查找的基本操作,CLOSE表也存在查找的基本操作。

            當數據量大時,數據結構的優勢體現的非常明顯。OPEN表一般都使用二叉堆的形式,CLOSE表則使用簡單的數組即可。

            實際測試產生一個1366*768 像素通路點和障礙點為1:2的隨機網格地圖從坐標(100, 100)到(1000, 300)的算路時間(h取Manhattan距離)在5400雙核cpu,2g內存下大概為120秒左右。


            遺傳算法

             

            網上建模實現的方法很多
             第一種 針對網格狀地圖的遺傳算法

            1.       將地圖抽象成網格,對于不同地形賦不同值,例如高速路標的值可以比輔路低34倍。

            2.       旋轉地圖使起點和終點調節成位于同一個縱坐標。

            3.       將起點到終點將的像素點劃分成幾個塊。

            4.       對于每個塊產生隨機的基因(即變異的過程),保證每個塊的當前基因位置與前一個基因位置相差小于2個像素點(2個基因連通)。如圖紅藍為2個獨立的染色體:


            5.       計算所有染色體的適應度。選擇最小的2個染色體作為雙親。

            6.       對雙親進行隨機交配產生子代。當產生的子代形成一條通路時停止。否則返回到第五步。



             

            他人的運行結果:

             

            以上算法存在的最大缺陷是當存在的路徑垂直于起點和終點的連接線時,無法產生適合的基因,因為該算法產生的基因對于每一個縱坐標是唯一的。

             

            l第二種 針對路網結構的遺傳算法

            大致思想如下:

            1. 針對起點和終點先產生n條連通路徑作為原始的種群。

            2. 計算每條路徑的適應度(一般都以路徑的長度為基礎作為適應度)

            3. 進行隨機交配(前提是雙親必須有交叉點)。這個變化最大隨機的好壞決定了整個算法的優劣。

            4. 淘汰掉適應度最低的m條道路。

            5. 重復2-4步驟。設定結束條件為連續k次遺傳的最優解都是同一個或者設定遺傳的次數(到例如50次自動結束)

            6. 將適應度最高的作為最終解。

            以上算法的難點在于原始種群的產生有一定難度,取小了無法滿足交叉條件,取大了耗費運算時間且復雜度提高


            posted on 2010-12-21 13:57 saha 閱讀(256) 評論(0)  編輯 收藏 引用

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            留言簿

            文章分類

            文章檔案

            收藏夾

            搜索

            •  

            最新評論

            99热成人精品热久久669| 日本一区精品久久久久影院| 久久久久久A亚洲欧洲AV冫| 亚洲精品第一综合99久久| 久久久久亚洲AV无码专区体验| 91精品国产综合久久香蕉| 国产激情久久久久久熟女老人| 国内精品伊人久久久久| 国产精品久久久久久五月尺| 久久精品成人免费网站| 欧美va久久久噜噜噜久久| 久久99精品久久久久久野外| 久久精品无码专区免费东京热| 久久综合久久鬼色| 99久久人人爽亚洲精品美女| 无码精品久久久久久人妻中字| 久久影视综合亚洲| 久久久91人妻无码精品蜜桃HD| 国产∨亚洲V天堂无码久久久| 国产成人精品综合久久久久| 久久久久亚洲精品无码网址| 国产精品欧美久久久久无广告| 国产麻豆精品久久一二三| av色综合久久天堂av色综合在 | 国产精品九九久久精品女同亚洲欧美日韩综合区 | 久久精品一区二区国产| 久久久久亚洲AV无码麻豆| 2020久久精品亚洲热综合一本| 久久精品国产亚洲精品| 久久国产香蕉一区精品| 久久久久久一区国产精品| 久久久久无码中| 亚洲&#228;v永久无码精品天堂久久 | 亚州日韩精品专区久久久| 免费一级欧美大片久久网| 青青久久精品国产免费看| 欧美亚洲国产精品久久高清| 精品国产99久久久久久麻豆| 人妻无码久久一区二区三区免费| 久久久久亚洲av无码专区喷水| 国产99精品久久|