这一切都在标题中,但对于任何对进化算法感兴趣的人来说,这是一个细分:
在EA中,基本前提是你随机生成一定数量的生物(实际上只是参数集),针对问题运行它们,然后让最佳表现者生存.
然后,你将幸存者的杂交组合,幸存者的突变以及一定数量的新随机生物重新组合起来.
做了几千次,有效的生物出现了.
有些人也会做一些事情,比如引入多个生物群的"岛屿",这些生物群是一段时间允许杂交的单独种群.
所以,我的问题是:什么是最佳的再增殖百分比?
我一直保持前10%的表现,并重新种植30%的杂交和30%的突变.剩余的30%用于新生物.
我也尝试了多岛理论,我也对你的结果感兴趣.
对我来说,这绝不是EA可以解决的问题类型.你知道有人在尝试吗?
提前致谢!
computer-science artificial-intelligence genetic-programming genetic-algorithm evolutionary-algorithm
编辑:哇,很多很棒的回复.是的,我使用它作为一个适应度函数来判断遗传算法执行的排序质量.因此,评估成本很重要(即,必须快速,最好O(n).)
作为我正在使用的AI应用程序的一部分,我希望能够根据其单调性(也就是其"排序性")对整数的候选数组进行评级.目前,我正在使用一种计算最长排序运行的启发式算法,然后将其除以数组的长度:
public double monotonicity(int[] array) {
if (array.length == 0) return 1d;
int longestRun = longestSortedRun(array);
return (double) longestRun / (double) array.length;
}
public int longestSortedRun(int[] array) {
if (array.length == 0) return 0;
int longestRun = 1;
int currentRun = 1;
for (int i = 1; i < array.length; i++) {
if (array[i] >= array[i - 1]) {
currentRun++;
} else {
currentRun = 1;
}
if (currentRun > longestRun) longestRun = currentRun;
}
return …Run Code Online (Sandbox Code Playgroud) math artificial-intelligence information-theory genetic-algorithm
直觉上我认为如果我想找到"最佳"参数集,我可以简单地从一群孩子中选出表现最好的1个人,让那个人生成100个与自己相似的孩子,挑选最好的表演者并重复.具体目的是挑选最好的2和杂交?那么,为什么不选择3个,4个或10个父母("狂欢衍生的"受精卵)来创造每一代孩子呢?
genetic-programming genetic-algorithm evolutionary-algorithm
我必须做一个关于遗传算法的术语项目,我有想法调整第一人称射击游戏机器人的特征(即要使用的武器等).例如,我将以字符串的形式表示特征,前10位代表选择武器1的概率,接下来10位代表选择武器2的概率等等.因此,我将得到最佳字符串,从而能够弄清楚什么应该是我应该使用的最佳武器.
我面临的一个明显问题是如何找到适应度值.我的想法是,如果我想找到一个字符串的适应性,我强迫机器人使用相应的武器并对其进行游戏,并使用机器人的最终得分作为健身.问题是我需要玩大量的游戏.
我可以做某种模拟吗?例如,我可以以某种方式得到一个函数f,我将在其中提供机器人的特征(例如:武器等),它会返回相应的适应值吗?开源FPS游戏提供这样的库吗?
另一种选择是进入游戏的源代码,然后继续模拟各种场景并注意每个场景中的得分.我宁愿没有进入游戏源的额外复杂性,因为这是一个短暂的(1个月)项目.
谢谢.
有没有人知道一个使用GA进行语法归纳/推理的程序,我已经阅读了很多关于这些东西的研究论文和文章,比如Lankhorst和De Pauw,但我找不到任何在任何地方使用这种技术的实现或程序.对此的任何帮助都非常感激,欢呼
这是一个普遍感兴趣的问题,因为我并不想解决具体问题.我环顾四周试图找到一些涵盖这个领域的文章,但我甚至在努力拼凑一些好的搜索词.
让我们从我所知道的开始:我在人工智能方面接受了大学水平的教育,包括遗传编程和更广泛的进化算法,尽管自从我十年前毕业以来,我还没有玩过很多.我想知道这些方法是否可用于创建机器代码来解决问题(可能是x86,或者某些'任意'指令集).我们可以自己进化算法,例如可以计算平方根,还是在屏幕上绘制令人愉悦的图像?是否可以使用进化算法来创建可以创建优化代码的整个编译器(用于大小,速度等)?
此外,我经常认为遗传编程或进化算法本身并不是物种进化的良好证据.涉及进化算法的问题解决方法似乎总是需要将智能写入其中.一个人如何以真正发生真正有趣和令人惊讶的结果的方式创建一个真正的进化算法?
TLDR:可以使用的进化算法永远是在创造一种机器代码有用,以及是否有进化算法前面的例子中,一般生产真正有趣和令人惊讶的结果?
缺口
x86 genetic-programming genetic-algorithm evolutionary-algorithm
由100名成员组成的团队将由1000名申请人组成.每个申请人都可以选择他/她希望作为队友的其他99名申请人.
每个可能的团队都会得到一个分数,用于衡量其满足其成员的队友偏好的程度.如果Lisa在一个团队中,并且Lisas愿望清单中的11个人也在团队中,团队为Lisa获得11分.所有成员的积分都加起来了.任何可能的团队可以得到的理论最大值是99*100.最小值为0.
现在我们想找到得分最高的球队.试图通过计算每种可能组合的分数(≈10^ 140)来强制解决这个问题不是一种选择.
是否有一个聪明的算法,它将采用最佳答案的快捷方式,还是必须找到一个能找到一个好答案的算法?
algorithm combinations mathematical-optimization 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