|
1
39
我自己做这件事已经有几年了,但是下面的伪代码在google上很容易找到。 for all members of population
sum += fitness of this individual
end for
for all members of population
probability = sum of probabilities + (fitness / sum)
sum of probabilities += probability
end for
loop until new population is full
do this twice
number = Random between 0 and 1
for all members of population
if number > probability but less than next probability
then you have been selected
end for
end
create offspring
end loop
here 如果你需要进一步的细节。 |
|
|
2
16
已经有很多正确的解决方案,但我认为这段代码更清晰。
此外,如果累积fs,则可以生成更有效的解决方案。
这不仅速度更快,而且是非常简洁的代码。C++中的STL有一个类似的二分算法,如果你使用的是这种语言。 |
|
|
3
12
发布的伪代码包含一些不清楚的元素,这增加了生成伪代码的复杂性 孩子 而不是进行纯粹的选择。下面是该伪代码的简单python实现:
|
|
4
10
单个选择所需的平均尝试次数为: τ=f 最大值 /平均值(f)
τ并不明确地依赖于群体中个体的数量(N),但比率可以随N而变化。 该算法的典型复杂性为O(1) (使用搜索算法的轮盘赌轮选择具有O(N)或O(logn)复杂性)。 这个过程的概率分布确实与经典轮盘赌选择中的概率分布相同。 有关更多详细信息,请参阅:
|
|
|
5
5
以下是C语言中的一些代码:
|
|
|
6
2
从上面的答案中,我得到了下面的答案,这比答案本身更清楚。
随机(和):随机(12) 通过遍历总体,我们检查以下内容:随机<总和 让我们选择7作为随机数。
|
|
|
7
1
斯坦福人工智能实验室(Stanford AI lab)的Thrun教授在其Udacity的CS373中还介绍了python中的快速(呃?)重新采样代码。谷歌搜索结果导致以下链接: http://www.udacity-forums.com/cs373/questions/20194/fast-resampling-algorithm
|
|
|
8
1
这是我最近为轮盘赌选择编写的一个紧凑的java实现,希望能有所帮助。
|
|
9
1
MatLab中的轮盘赌轮选择:
|
|
|
10
1
轮盘赌选择 实施: 通常的 随机接受 一 通常的
随机接受
您可以选择其中之一,它们将返回相同的结果。 有用资源:http://natureofcode.com/book/chapter-9-the-evolution-of-code -对初学者友好且清晰的遗传算法章节。解释 轮盘赌选择 作为一桶木头字母(你放的越多,选择a的机会就越大, 通常的 https://en.wikipedia.org/wiki/Fitness_proportionate_selection -描述 随机接受 算法。 |
|
|
11
0
|
|
|
12
0
这 斯威夫特4
例如,给定两元素数组:
下面是一个更完整的测试:
输出:
这个答案与毛主席在这里的答案基本相同: https://stackoverflow.com/a/15582983/74975 |
|
|
13
0
下面是python中的代码。此代码还可以处理适应度的负值。
|
|
|
14
-1
我用C#编写了一个版本,我真的希望确认它确实是正确的:
|