python中遗传算法优化过程的实例-创新互联

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

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、虚拟空间、营销软件、网站建设、井研网站维护、网站推广。

问题描述

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

问题图片所示:

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

涉及方法

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


网站标题:python中遗传算法优化过程的实例-创新互联
转载来源:http://bzwzjz.com/article/csesop.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 外贸网站建设 移动网站建设 成都网站制作 成都网站建设 自适应网站建设 成都企业网站制作 成都网站设计公司 梓潼网站设计 专业网站设计 成都网站建设 成都企业网站设计 移动手机网站制作 手机网站制作 营销网站建设 重庆网站建设 网站建设改版 网站制作 泸州网站建设 手机网站制作 成都做网站建设公司 四川成都网站制作 成都网站设计