小編給大家分享一下python中遺傳算法優化過程的實例,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名與空間、虛擬空間、營銷軟件、網站建設、井研網站維護、網站推廣。問題描述
一個名為Robby的機器人生活在一個充滿垃圾的二維網格世界中,周圍有4堵墻(如下圖所示)。這個項目的目標是發展一個很好的控制策略,使他能夠有效地撿垃圾,而不是撞墻。
問題圖片所示:
涉及方法
任何GA的優化步驟如下:
l 生成問題初始隨機解的“種群”
l 個體的“擬合度”是根據它解決問題的程度來評估的
l 最合適的解決方案進行“繁殖”并將“遺傳”物質傳遞給下一代的后代
l 重復第2步和第3步,直到我們得到一組優化的解決方案、
應用的遺傳算法代碼展示:
在下面的代碼中,我們生成一個初始的機器人種群,讓自然選擇來運行它的過程。我應該提到的是,當然有更快的方法來實現這個算法(例如利用并行化)。
# 初始種群 pop = [Robot() for x in range(pop_size)] results = [] # 執行進化 for i in tqdm(range(num_gen)): scores = np.zeros(pop_size) # 遍歷所有機器人 for idx, rob in enumerate(pop): # 運行垃圾收集模擬并計算擬合度 score = rob.simulate(iter_per_sim, moves_per_iter) scores[idx] = score results.append([scores.mean(),scores.max()]) # 保存每一代的平均值和較大值 best_robot = pop[scores.argmax()] # 保存好的機器人 # 限制那些能夠交配的機器人的數量 inds = np.argpartition(scores, -num_breeders)[-num_breeders:] # 基于擬合度得到頂級機器人的索引 subpop = [] for idx in inds: subpop.append(pop[idx]) scores = scores[inds] # 平方并標準化 norm_scores = (scores - scores.min()) ** 2 norm_scores = norm_scores / norm_scores.sum() # 創造下一代機器人 new_pop = [] for child in range(pop_size): # 選擇擬合度優秀的父母 p1, p2 = np.random.choice(subpop, p=norm_scores, size=2, replace=False) new_pop.append(Robot(p1.dna, p2.dna)) pop = new_pop
效果展示:
看完了這篇文章,相信你對python中遺傳算法優化過程的實例有了一定的了解,想了解更多相關知識,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀!
標題名稱:python中遺傳算法優化過程的實例-創新互聯
當前鏈接:http://vcdvsql.cn/article8/csesop.html
成都網站建設公司_創新互聯,為您提供微信小程序、品牌網站建設、全網營銷推廣、網站建設、電子商務、做網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯