嘿伙计们,我想知道我是否可以就提高实施遗传算法的程序的整体效率提出一些建议.是的,这是一个分配问题,但我已经完成了我自己的任务,并且只是想找到一种方法来让它更好地执行 问题描述
我的程序目前读取由成分类型h或p构成的给定链(示例hphpphhphpphphhpphph)对于每个H和P,它生成随机移动(向上,向下,向左,向右)并将移动添加到arrayList包含在"染色体"对象中.一开始,该计划为10,000个染色体产生了19个动作
SecureRandom sec = new SecureRandom();
byte[] sbuf = sec.generateSeed(8);
ByteBuffer bb = ByteBuffer.wrap(sbuf);
Random numberGen = new Random(bb.getLong());
int numberMoves = chromosoneData.length();
moveList = new ArrayList(numberMoves);
for (int a = 0; a < numberMoves; a++) {
int randomMove = numberGen.nextInt(4);
char typeChro = chromosoneData.charAt(a);
if (randomMove == 0) {
moveList.add(Move.Down);
} else if (randomMove == 1) {
moveList.add(Move.Up);
} else if (randomMove == 2) {
moveList.add(Move.Left);
} else if (randomMove == 3) {
moveList.add(Move.Right);
}
}
Run Code Online (Sandbox Code Playgroud)
在此之后,选择从种群到交叉的染色体.我的交叉函数从最适合的20%的人群中随机选择第一条染色体,另一条从最高的20%之外随机选择.然后交叉选择的染色体并调用突变功能.我相信我受影响最大的领域是计算每个染色体的适应度.目前我的健身功能创建了一个二维数组作为网格,从上面显示的函数生成的移动列表中按顺序放置移动,然后循环遍历数组进行适应度计算.(IE发现,位置[2,1]的H是Cord …
当阅读关于遗传算法的交叉部分时,书籍和论文通常指的是简单地交换要再现的两个所选候选者的数据中的比特的方法.
我还没有看到用于实际行业应用的实现遗传算法的实际代码,但我发现很难想象它足以在简单的数据类型上运行.
我总是想象遗传算法的各个阶段将在涉及复杂数学运算的复杂对象上执行,而不是仅仅在单个整数中交换一些位.
甚至维基百科也只是为交叉列出了这些类型的操作.
我错过了一些重要的东西,或者这些交叉方法真的是唯一使用的东西吗?
algorithm optimization search genetic-algorithm evolutionary-algorithm
我有一个控制人工草食动物的人工神经网络.输入是最接近的植物的大小和方向,最接近的配偶的大小和方向,以及草食动物的健康.输出是运动矢量(方向和幅度).如果通过遗传算法训练,是否有必要使用偏见?
artificial-intelligence artificial-life neural-network genetic-algorithm
是否有可能计算遗传算法的时间复杂度?
These are my parameter settings:
Population size (P) = 100
# of Generations (G) = 1000
Crossover probability (Pc) = 0.5 (fixed)
Mutation probability (Pm) = 0.01 (fixed)
Run Code Online (Sandbox Code Playgroud)
谢谢
更新:
problem: document clustering
Chromosome: 50 genes/chrom, allele value = integer(document index)
crossover: one point crossover (crossover point is randomly selected)
mutation: randomly change one gene
termination criteria: 1000 generation
Run Code Online (Sandbox Code Playgroud)
健身:戴维斯 - 布尔丁指数
algorithm performance big-o time-complexity genetic-algorithm
我正在使用遗传算法(GA)来优化旅行商问题(TSP).我的问题是我如何计算个人的健康状况.显然,具有较短路线的解决方案更适合但是我如何在不知道最短路径和最长可能路线确定我的解决方案在该范围内的位置的情况下分配适合度值?
artificial-intelligence traveling-salesman genetic-algorithm
所以我有两个父母ABCDE EDCBA
我可以从两者中选择一个子集:来自父级:ACD来自父级二:EDC
然后我将父母一个复制到后代一个,但复制所选子集与父二进制顺序,所以:后代一个:DBCAE后代二:CDEBA
我试图在大图上找到一个复杂且耗时的多目标优化.
这就是问题所在:我想找到一组n个顶点(n是常数,比如100)和m个边(m可以改变),其中一组度量被优化:
我最好的猜测是选择GA.我对遗传算法不太熟悉,但我可以花一点时间学习基础知识.从我到目前为止所读到的内容来看,我需要这样做:
如果是,那就完美了.如果不:
现在,我通常使用Python进行我的小实验.DEAP(https://code.google.com/p/deap/)可以帮我解决这个问题吗?如果是这样,我还有很多问题(特别是关于交叉和变异的步骤),但简而言之:步骤(在Python中,使用DEAP)是否足够容易在这里解释或总结?
如果需要,我可以尝试和详细说明.干杯.
我正在写一个遗传算法来解决Master Mind游戏.我已经对最佳方法进行了大量研究,拥有多样化的人口非常重要.我正在尝试确定如何在C++中获得非常好的随机数.我已经srand(time(NULL))在我的程序开始时设置种子然后我只是使用了rand().我想知道的是这是多么随机?它不错吗?是否还有其他更好的随机数库?
我知道数论和随机性是一个非常复杂的主题; 在编写自己的版本时,你有什么指针rand()吗?
我一直在阅读增强拓扑的NeuronEvolution,而这件事让我很困扰。在阅读肯尼思·斯坦利的《关于NEAT的论文》时,我想到了这个数字:
在第一个突变时,创新数从1,2,3,4,5,6变为1,2,3,4,5,6,7。
在第二个上,它从1,2,3,4,5,6变为1,2,3,4,5,6,8,9。
我的问题是为什么它跳过数字7而直接上升到8?我没有发现与删除创新数字有关的任何信息。
在第二个图上也是一样,父母1如何失去6,7,而父母2中的第8个基因又去了哪里?
machine-learning neural-network genetic-algorithm evolutionary-algorithm es-hyperneat
algorithm ×2
performance ×2
big-o ×1
c++ ×1
es-hyperneat ×1
java ×1
optimization ×1
python ×1
r ×1
random ×1
search ×1