温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python中遗传算法优化过程的实例

发布时间:2020-11-13 09:37:12 来源:亿速云 阅读:460 作者:小新 栏目:编程语言

小编给大家分享一下python中遗传算法优化过程的实例,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

问题描述

一个名为Robby的机器人生活在一个充满垃圾的二维网格世界中,周围有4堵墙(如下图所示)。这个项目的目标是发展一个最佳的控制策略,使他能够有效地捡垃圾,而不是撞墙。

问题图片所示:

python中遗传算法优化过程的实例

涉及方法

任何GA的优化步骤如下:

生成问题初始随机解的“种群”

个体的“拟合度”是根据它解决问题的程度来评估的

最合适的解决方案进行“繁殖”并将“遗传”物质传递给下一代的后代

重复第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中遗传算法优化过程的实例有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI