知行编程网知行编程网  2022-12-25 06:00 知行编程网 隐藏边栏  8 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于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遗传算法的优化过程是怎样的?


根据上面的内容,你也可以清楚的看到,使用遗传算法优化的神奇内容不仅是能够面对冷码群,还有上面的生物内容,都可以使用遗传算法来实现,如果你是有兴趣不妨试试


~

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享