当前位置:  开发笔记 > 编程语言 > 正文

轮盘赌选择算法

如何解决《轮盘赌选择算法》经验,为你挑选了2个好方法。

任何人都可以为轮盘选择功能提供一些伪代码吗?我将如何实现这一点:我真的不明白如何阅读这个数学符号.我想要通用算法.



1> Dan Dyer..:

其他答案似乎假设您正在尝试实施轮盘赌游戏.我认为你在询问进化算法中的轮盘赌选择.

这是一些实现轮盘赌选择的Java代码.

假设您有10个项目可供选择,您可以通过生成0到1之间的随机数进行选择.将范围0到1分成10个非重叠段,每个段与10个项目之一的适合度成比例.例如,这可能如下所示:

0 - 0.3 is item 1
0.3 - 0.4 is item 2
0.4 - 0.5 is item 3
0.5 - 0.57 is item 4
0.57 - 0.63 is item 5
0.63 - 0.68 is item 6
0.68 - 0.8 is item 7
0.8 - 0.85 is item 8
0.85 - 0.98 is item 9
0.98 - 1 is item 10

这是你的轮盘赌轮.你的0到1之间的随机数是你的旋转.如果随机数是0.46,则所选项目是项目3.如果它是0.92,那么它是项目9.



2> noio..:

这是一些python代码:

def roulette_select(population, fitnesses, num):
    """ Roulette selection, implemented according to:
        
    """
    total_fitness = float(sum(fitnesses))
    rel_fitness = [f/total_fitness for f in fitnesses]
    # Generate probability intervals for each individual
    probs = [sum(rel_fitness[:i+1]) for i in range(len(rel_fitness))]
    # Draw new population
    new_population = []
    for n in xrange(num):
        r = rand()
        for (i, individual) in enumerate(population):
            if r <= probs[i]:
                new_population.append(individual)
                break
    return new_population

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有