标签: genetic-algorithm

在遗传编程中实现交叉

我正在写一个遗传编程(GP)系统(在C中,但这是一个小细节).我已经阅读了很多文献(Koza,Poli,Langdon,Banzhaf,Brameier等),但有一些我从未见过的实现细节.例如:

我使用稳定状态而不是代际方法,主要是使用计算机的所有内存,而不是为临时人口预留一半.

Q1.在GP中,与GA相反,当您执行交叉时,您选择两个父母,但是您创建了一个或两个孩子,或者您是自由选择吗?

Q2.在稳定的GP中,与世代系统相反,人口中的哪些成员通过交叉创建的孩子取而代之?这是我没有见过的.是两个父母,还是其他两个随机选择的成员?我可以理解,如果是后者,并且您可以使用负面锦标赛选择来选择要替换的成员,但是这不会产生过早收敛吗?(在交叉事件发生后,人口中包含两个原始父母和两个父母的子女,另外两个随机成员被移除.精英主义是固有的.)

Q3.是否有专注于GP的网络论坛或邮件列表?奇怪的是我没有找到一个.雅虎的GP小组几乎专门用于公告,Poli/Langdon Field Guide论坛几乎是无声的,而对于像gamedev.net这样的通用/游戏编程网站的GP讨论非常基础.

感谢您的任何帮助,您可以提供!

artificial-intelligence genetic-programming genetic-algorithm evolutionary-algorithm crossover

13
推荐指数
1
解决办法
2372
查看次数

简单TSP的数据

我写了一个简单的遗传算法,可以解决5个城市的旅行商问题.我想看看它如何处理更多城市的问题,如10,25,50,100,但我找不到问题的样本日期来尝试.基本上,我正在寻找城市之间距离的二维列表或矩阵.如果有解决方案会很好.我应该在哪里看?

先感谢您

algorithm genetic-algorithm

13
推荐指数
2
解决办法
1万
查看次数

TSP遗传算法中的交叉操作

我正试图用遗传算法解决旅行商问题(TSP).我的基因组是图中顶点的排列(推销员的路径).

我该如何对基因组进行交叉操作?

我在哪里可以找到C#中我的问题的实现?

c# algorithm artificial-intelligence traveling-salesman genetic-algorithm

12
推荐指数
2
解决办法
1万
查看次数

将交叉和变异应用于图形(遗传算法)

我正在玩一个遗传算法,我想在其中进化图形.当染色体是图形时,您是否知道应用交叉和变异的方法?

或者我错过了图表的编码,让我在位串上应用"常规"交叉和变异?

非常感谢!任何帮助,即使它与我的问题没有直接关系,我们表示赞赏!

曼努埃尔

artificial-intelligence graph mutation genetic-algorithm

12
推荐指数
1
解决办法
4901
查看次数

遗传算法 - 什么是稳态选择?

我正在做关于遗传算法的最后一年项目 - 特别是Dawkins Weasel类型.我已经完成轮盘选择和锦标赛选拔,仍然要进行稳态选择,但我不确定它到底是什么,我在网上找到的参考都非常含糊.

有谁知道应该如何实施?任何指针都会很棒.

非常感谢.

roulette-wheel-selection selection genetic-algorithm

12
推荐指数
1
解决办法
9724
查看次数

Python中的健身比例选择(轮盘赌选择)

我有一个对象列表(染色体),它具有属性适应性(chromosome.fitness介于0和1之间)

给定一个这样的对象列表,我如何实现一个返回单个染色体的函数,其被选中的机会与其适应度成正比?也就是说,具有适应度0.8的染色体被选择为具有适合度0.4的染色体的可能性的两倍.

我发现了一些Python和伪代码实现,但它们对于这个要求来说太复杂了:函数只需要一个染色体列表.染色体将自身的适应性存储为内部变量.

我已经写过的实现是在我决定允许染色体存储它们自己的适应性之前,因此更复杂并涉及压缩列表和事物.

- - - - - - - - - - - - - - 编辑 - - - - - - - - - - - -------

谢谢Lattyware.以下功能似乎有效.

def selectOne(self, population):
        max     = sum([c.fitness for c in population])
        pick    = random.uniform(0, max)
        current = 0
        for chromosome in population:
            current += chromosome.fitness
            if current > pick:
                return chromosome
Run Code Online (Sandbox Code Playgroud)

python random genetic-algorithm

12
推荐指数
2
解决办法
1万
查看次数

酒店房间优化/排序算法

酒店有没有众所周知的房间优化/排序算法?

问题是重新分配房间以最大化占用率.假设我有10个房间,每个预订的开始日期和结束日期.有些房间不能被调整,而有些房间可以(标记).

任何正确方向的提示都会很棒.谢谢.

algorithm mathematical-optimization genetic-algorithm

11
推荐指数
2
解决办法
9492
查看次数

用于排列的交叉算子

我试图在我的排列上解决遗传算法中的交叉问题.假设我有两个20个整数的排列.我想交叉他们让两个孩子.父母内部有相同的整数,但顺序不同.

例:

Parent1: 
 5 12 60 50 42 21 530 999 112 234 15 152 601 750 442 221 30 969 113 134
Parent2: 
 12 750 42 113 530 112 5 23415 60 152 601 999 442 221 50 30 969  134 21
Run Code Online (Sandbox Code Playgroud)

就这样 - 我怎样才能让这两个孩子成为孩子?

algorithm genetic-algorithm crossover

11
推荐指数
1
解决办法
9585
查看次数

遗传算法中探索与利用的区别

在进化算法中,维持了两个主要的能力,即探索和开发.

在探索中,搜索新区域中的新解决方案的算法,而剥离意味着使用已存在的解决方案并对其进行细化,以便提高其适应性.

在我的情况下,我担心遗传算法,我的问题是我阅读了许多不同的文章,我找出了三个不同的解释,探索和利用这些观点如下:

  1. 在一篇文章中,它谈到了探索是通过突变进行的交叉和利用来完成的

  2. 在一篇文章中,第一篇文章的逆转,通过突变和交叉开发进行探索

  3. 最后一篇是由AE Eiben和CA Schippers撰写的论文"On Evolutionary Exploration and Exploitation"(1998),它说开发是通过选择过程完成的,而探索是由操作员完成的,无论它是交叉还是突变

我从我的小观点看,交叉和变异都为我们提供了一种新的解决方案,这种解决方案在人群中不存在,这是算法的随机部分,因此它是探索过程,当选择个体进行交配或繁殖时,我从中选择现有的解决方案,并根据它的健身,这是启发式的部分,所以它的利用.

哪个是正确的?哪个步骤或操作员负责勘探和负责开采?

请为此我需要推理合理的答案.

search genetic-programming genetic-algorithm

11
推荐指数
1
解决办法
8127
查看次数

遗传算法中的比赛评估

现在,每个遗传C#库(A.Forge,遗传算法框架,GeneticSharp)似乎只评估单个Chromosome,然后使用各种选择方法之一来创建新一代.

由于我的问题涉及两个人工智能相互对抗,所以单独评估他们的健康状况有点困难.虽然游戏很简单,可以创造一些表面障碍(人工智能不会直接互动,但障碍会发送到彼此的游戏中),这样可以让我获得一些抽象的健身,但这不是"真正的"交易.

这些库似乎也没有提供另一个我可以实现这种评估方法的接口.是否有其他框架允许这样或者我需要从头开始?

c# genetic-algorithm geneticsharp

11
推荐指数
1
解决办法
1073
查看次数