零、軟件功用和我使用背景
純學習剥哑,一點小小的問題是范例是c++寫的硅则,我喜歡用python,所以用python自己寫一遍嘛株婴。代碼很簡單怎虫。
一、參考文獻及我的評判
二督暂、意外問題一覽
三、基本流程命令
題目的要求是用遺傳算法穷吮,訓練一個能走出迷宮的機器人逻翁,對各種迷宮提供解決路徑。
思路捡鱼,首先將任意一個迷宮八回,以一個二維數(shù)組來表示,形態(tài)如下:
[(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),
(1,0,1,0,0,0,0,0,1,1,1,0,0,0,1),
(5,0,0,0,0,0,0,0,1,1,1,0,0,0,1),
(1,0,0,0,1,1,1,0,0,1,0,0,0,0,1),
(1,0,0,0,1,1,1,0,0,0,0,0,1,0,1),
(1,1,0,0,1,1,1,0,0,0,0,0,1,0,1),
(1,0,0,0,0,1,0,0,0,0,1,1,1,0,1),
(1,0,1,1,0,0,0,1,0,0,0,0,0,0,8),
(1,0,1,1,0,0,0,1,0,0,0,0,0,0,1),
(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)]
5為入口驾诈,8為出口缠诅,1不可行動。
嗯乍迄,我寫了個遺傳算法管引,思路步驟如下。根據(jù)離出口的距離進行評分闯两,距離越小褥伴,評分越高。
1漾狼、產(chǎn)生100個初始樣本重慢,對它們的唯一要求是需要落在可用位置。
2逊躁、進行評分似踱,評分高的,會有更大的幾率進行交配
3、每次交配產(chǎn)生若干胎兒核芽,并進行變異囚戚,仍然存活的會成為新一代
4、重復交配行為狞洋,直到再次產(chǎn)生100個樣本
4弯淘、循環(huán),每100代吉懊,保存此100個樣本記錄庐橙。這些樣本可用作初始樣本,即保存了之前的運算成果借嗽。
5态鳖、評分達到滿分,終止循環(huán)恶导,走出了迷宮浆竭。
6、或連續(xù)100代的最高評分不變惨寿,認為已經(jīng)無法繼續(xù)進化邦泄,終止循環(huán)。
最后沒有代碼只講思路都是耍流氓裂垦,所以代碼放在github上顺囊。shblhy? ?嗯。