在遗传算法中,当使用轮盘选择方法选择交叉成员时,群体是否首先需要按健康等级排序?
可能性似乎是:
我认为以任何一种方式排序可能没有效果 - 在包含不同尺寸(通过适应性)切片的轮子上随机地着陆卵石将具有完全相同的结果机会,无论更大的切片是否被组合在一起.但我并不是100%相信.
你怎么看?
每一代做一次排序的需要也会影响算法的速度,所以我不愿意(如果使用精英主义,我会做一个排序,但我不是在这种情况下).谢谢,如果你知道,因为我无法通过谷歌等找到明确的答案..
我决定使用神经网络来创建我拥有的动画引擎的行为.神经网络为我拥有的每个身体部位提供3个vector3s和1个欧拉角.第一个vector3是位置,第二个是它的速度,第三个是它的角速度.欧拉角是身体部位的旋转.我有7个身体部位.这些数据类型中的每一个都有3个浮点数.7*4*3 = 84,所以我的神经网络有84个输入.输出映射到角色的肌肉.它们提供适用于每块肌肉的力量,其中有15种.
我同时运行15个网络10秒,通过计算最低能量使用,具有最小量的z和x运动,以及如果身体部位处于与其余部分相比正确的y位置来评定其适合度(hips.y> upperleg.y,upperleg.y> lowerleg.y等),然后通过遗传算法运行它们.我正在运行一个神经网络,每个隐藏层有168个神经元,有8个隐藏层.我试图让角色站直,不要走动太多.我跑了3000代,我甚至没有接近.
神经网络和遗传算法是本教程的 C#版本.我将交叉方法从一个点改为混合.
我有84个输入和15个输出.我的神经网络应该有多大?
animation physics machine-learning neural-network genetic-algorithm
我为比赛写了一个游戏程序,它依赖于大约16个浮点"常量".改变常数可以并将对比赛风格和成功率产生巨大影响.
我还编写了一个简单的遗传算法来生成常数的最优值.但是,该算法不会生成"最佳"常数.
可能的原因:
算法如下:
我目前的设置:
人口规模,变异率和配合率的更好价值是什么?
我们欢迎猜测,不会有精确的价值!此外,如果您有类似遗传算法的见解,您想分享,请这样做.
PS:有问题的游戏比赛,如果有人有兴趣:http://ai-contest.com/
我正在写一个遗传算法,我打算从轮盘选择转到锦标赛选择,但我怀疑我的理解可能有缺陷.
如果我只选择人口中的n/2最佳解决方案,那么我的人口肯定会很快耗尽吗?
我对算法的理解是:
for(Member m in currentPopulation){
Member randomMember1 = random member of currentPopulation which is then removed from currentPopulation
Member randomMember2 = as above;
//Mutate and crossover
if(randomMember1.getScore() > randomMember2.getScore()){
nextGeneration.add(randomMember1);
} else {
nextGeneration.add(randomMember2);
}
}
Run Code Online (Sandbox Code Playgroud)
我理解正确吗?
假设我有一组训练示例,其中A_i是属性,结果是二进制(是或否):
A1, A2, A3, Outcome
red dark large yes
green dark small yes
orange bright large no
Run Code Online (Sandbox Code Playgroud)
我知道我必须定义适应度函数.但这个问题是什么呢?在我的实际问题中有10个参数和100个训练示例,但这是一个类似的问题.
artificial-intelligence machine-learning genetic-programming genetic-algorithm
我有数据集nxm,其中有n个观察值,每个观察值由m个属性的m个值组成.每次观察也观察到分配给它的结果.我很大,对我的任务来说太大了.我试图找到仍然代表整个数据集的m个属性的最佳和最小子集,以便我只能使用这些属性来教授神经网络.
我想用遗传算法.问题是fittness功能.它应该告诉生成的模型(属性子集)如何仍然反映原始数据.而且我不知道如何针对整个集合评估某些属性的子集.当然,我可以使用神经网络(以后将使用这个选定的数据)来检查子集的好坏 - 误差越小,子集越好.但是,在我的情况下,这需要一点时间,我不想使用这个解决方案.我正在寻找一些其他方式,最好只对数据集进行操作.
我想到的是:使用子集S(通过遗传算法找到),修剪数据集,使其仅包含子集S的值,并检查此数据序列中的多少观察值不再可区分(具有相同属性的相同值),而具有不同的结果值.数字越大,它的子集就越差.但在我看来,这似乎有点太耗费精力.
有没有其他方法可以评估属性子集仍然代表整个数据集的程度?
由100名成员组成的团队将由1000名申请人组成.每个申请人都可以选择他/她希望作为队友的其他99名申请人.
每个可能的团队都会得到一个分数,用于衡量其满足其成员的队友偏好的程度.如果Lisa在一个团队中,并且Lisas愿望清单中的11个人也在团队中,团队为Lisa获得11分.所有成员的积分都加起来了.任何可能的团队可以得到的理论最大值是99*100.最小值为0.
现在我们想找到得分最高的球队.试图通过计算每种可能组合的分数(≈10^ 140)来强制解决这个问题不是一种选择.
是否有一个聪明的算法,它将采用最佳答案的快捷方式,还是必须找到一个能找到一个好答案的算法?
algorithm combinations mathematical-optimization genetic-algorithm
我正在实现一个小的遗传算法框架 - 主要是供私人使用,除非我设法做出合理的事情,我将把它作为开源发布.现在我专注于选择技术.到目前为止,我已经实施了轮盘赌选择,随机通用抽样和锦标赛选择.我的列表中的下一个是基于排名的选择.与我已经实现的其他技术相比,我在查找相关信息方面遇到了一些困难,但到目前为止,这是我的理解.
如果你的人口中有你想让下一轮的合理父母,你首先要通过它,并将每个人的适应度除以人口中的总体适应度.
然后你使用其他一些选择技术(如轮盘赌轮)来实际确定选择谁进行繁殖.
它是否正确?如果是这样,我是否正确地认为排名调整是一种预处理步骤,然后必须采用实际选择程序来挑选候选人?如果我误解了这一点,请纠正我.我很感激任何额外的指示.
roulette-wheel-selection selection stochastic genetic-algorithm
我正在尝试使用遗传算法进行分类问题.但是,我没有成功获得模型的摘要,也没有预测新的数据框.如何获取新数据集的摘要和预测?这是我的玩具示例:
library(genalg)
dat <- read.table(text = " cats birds wolfs snakes
0 3 9 7
1 3 8 7
1 1 2 3
0 1 2 3
0 1 2 3
1 6 1 1
0 6 1 1
1 6 1 1 ", header = TRUE)
evalFunc <- function(x) {
if (dat$cats < 1)
return(0) else return(1)
}
iter = 100
GAmodel <- rbga.bin(size = 7, popSize = 200, iters = iter, mutationChance = 0.01,
elitism = T, evalFunc …Run Code Online (Sandbox Code Playgroud) algorithm ×1
animation ×1
c# ×1
c++ ×1
combinations ×1
java ×1
physics ×1
r ×1
selection ×1
stochastic ×1