任何人都可以为轮盘选择功能提供一些伪代码吗?我将如何实现这一点:我真的不明白如何阅读这个数学符号.我想要通用算法.
algorithm roulette-wheel-selection genetic-algorithm evolutionary-algorithm
我试图根据我从"用于游戏程序员的AI技术"一书中选择的技术编写遗传算法,该技术使用二进制编码和适应度比例选择(也称为轮盘赌选择)对人群的基因进行在程序中以二维数组随机生成.
我最近遇到了一个伪代码,并试图实现它,但是我遇到了一些问题,我需要做些什么.我检查过一些书籍和一些开源代码,但仍在努力取得进展.我明白我必须得到总人口的总体适应度的总和,在总和与零之间选择一个随机数,然后如果数字大于父母要覆盖它,但我正在努力实施这些想法.
由于我的Java生疏,因此非常感谢任何帮助实现这些想法.
java roulette-wheel-selection genetic-algorithm evolutionary-algorithm
给定一组n字频对:
[ (w0, f0), (w1, f1), ..., (wn-1, fn-1) ]
在哪里是一个单词,是整数频率,以及频率的总和,wifi∑fi = m
我想使用伪随机数生成器(pRNG)来选择p单词,以便选择任何单词的概率与其频率成正比:wj0, wj1, ..., wjp-1
P(wi = wjk) = P(i = jk) = fi / m
(注意,这是替换选择,因此每次都可以选择相同的单词).
到目前为止,我已经提出了三种算法:
创建一个大小数组m,并填充它以便第一个条目,下一个条目,等等,所以最后的条目是.f0w0f1w …
我正在阅读关于遗传编程的幻灯片.在这张幻灯片中,它表示在选择阶段有一些方法,例如Roulette,Rank或Tournament没有任何解释.我试过谷歌,但没有说清楚这些条款.
请告诉我他们之间有什么区别.
genetic-programming roulette-wheel-selection selection genetic-algorithm
我已经实现了一个简单的遗传算法来生成基于Aesop寓言的短篇小说.以下是我正在使用的参数:
突变:单字交换突变,测试率为0.01.
交叉:在给定点交换故事句子.率 - 0.7
选择:轮盘选择 - /sf/answers/372099731/
健身功能:3种不同功能.每个人的最高得分是1.0.所以最高健康分数是3.0.
人口规模:由于我使用的是86个Aesop寓言,我测试的人口规模是50.
初始人口:所有86个寓言句子都被洗牌,以便完全废话.我的目标是从这些结构丢失的寓言中产生一些有意义的东西(至少在一定程度上).
停止条件:3000代.结果如下:

但是,这仍然没有产生有利的结果.我期待着几代人的情节.为什么我的GA表现更差的结果呢?
更新:正如你们所有人所建议的那样,我将当前一代的10%的精英主义复制到了下一代.结果仍然保持不变:

可能我应该选择锦标赛.
algorithm python-2.x roulette-wheel-selection fitness genetic-algorithm
我试图在遗传算法中实现非均匀概率分布.
在遗传程序的实施中,我有一个实验,其中有3个结果,每个结果都有不同的概率.比方说,一个结果的可能性是0.85,另一个是0.01,最后一个是0.14?
PS:我最近才知道它被称为概率的非均匀分布.我用Java实现它,任何人都能说出非均匀概率背后的理论.分发以及实现它的任何Java包.
如果您需要有关此问题的更多信息,请随时向我询问!
提前致谢!
probability genetic-programming probability-theory genetic-algorithm