标签: genetic-programming

遗传编程:轮盘赌排名与锦标赛选择的区别

我正在阅读关于遗传编程的幻灯片.在这张幻灯片中,它表示在选择阶段有一些方法,例如Roulette,RankTournament没有任何解释.我试过谷歌,但没有说清楚这些条款.

请告诉我他们之间有什么区别.

genetic-programming roulette-wheel-selection selection genetic-algorithm

10
推荐指数
1
解决办法
6703
查看次数

进化算法:最佳的重新种群分解

这一切都在标题中,但对于任何对进化算法感兴趣的人来说,这是一个细分:

在EA中,基本前提是你随机生成一定数量的生物(实际上只是参数集),针对问题运行它们,然后让最佳表现者生存.

然后,你将幸存者的杂交组合,幸存者的突变以及一定数量的新随机生物重新组合起来.

做了几千次,有效的生物出现了.

有些人也会做一些事情,比如引入多个生物群的"岛屿",这些生物群是一段时间允许杂交的单独种群.

所以,我的问题是:什么是最佳的再增殖百分比?

我一直保持前10%的表现,并重新种植30%的杂交和30%的突变.剩余的30%用于新生物.

我也尝试了多岛理论,我也对你的结果感兴趣.

对我来说,这绝不是EA可以解决的问题类型.你知道有人在尝试吗?

提前致谢!

computer-science artificial-intelligence genetic-programming genetic-algorithm evolutionary-algorithm

9
推荐指数
2
解决办法
641
查看次数

代码细菌:不断演变的数学行为

我不打算在我的博客上放一个链接,但我没有任何其他方法来澄清我的真正含义.这篇文章很长,它的三个部分(1,2,3),但是如果你很好奇,这是值得阅读.

很久以前(至少5年)我编写了一个生成"数学细菌"的python程序.这些细菌是python对象,具有简单的基于操作码的遗传密码.您可以使用数字为它们提供数据,并根据其代码的执行返回一个数字.我随机生成他们的遗传密码,并将环境选择应用于那些产生类似于预定义预期值的结果的对象.然后我让他们复制,引入突变,并进化它们.结果非常有趣,因为他们的遗传密码基本上学习如何解决简单方程,即使对于训练数据集的不同值也是如此.

现在,这件事只是一个玩具.我有时间浪费,我想满足自己的好奇心.但是,我认为在研究方面已经做了一些事情......我希望我在这里重新发明轮子.你是否意识到更多认真尝试制造像我编程的细菌一样的细菌?

请注意,这不是真正的"遗传算法".遗传算法是指您使用进化/选择来改进针对给定评分函数的参数向量.这有点不同.我针对给定的评分函数优化代码而不是参数.

python genetic-programming evolutionary-algorithm

9
推荐指数
1
解决办法
1207
查看次数

初始遗传编程参数

我在大学里做了一点GP(注意:很少)工作,最近一直在玩它.我的问题是关于初始运行设置(种群大小,世代数,树的最小/最大深度,初始树的最小/最大深度,用于不同复制操作的百分比等).设置这些参数的常规做法是什么?人们使用哪些论文/网站作为指导?

genetic-programming genetic-algorithm

9
推荐指数
1
解决办法
920
查看次数

用c ++进行遗传编程,库建议?

我希望在我参与的运营研究项目中添加一些遗传算法.目前我们有一个程序可以帮助优化一些调度,我们希望以遗传算法的形式添加一些启发式算法.在c ++中是否有用于通用遗传编程/算法的好库?或者你会建议我自己编码吗?

我应该补充一点,虽然我不熟悉c ++,但我在c ++中进行这种数学优化工作还是比较新的,因为我以前合作的小组倾向于使用专有的优化包.

我们有一个相当计算密集的适应度函数来评估,我们有一个集群来运行它,所以非常需要并行代码.

那么c ++是一个很好的语言吗?如果没有,请推荐一些其他的,因为我愿意学习另一种语言,如果它让生活更轻松.

谢谢!

c++ genetic-programming genetic-algorithm

9
推荐指数
1
解决办法
5542
查看次数

如何解决简单GA(Python)中的早熟收敛?

昨天我开始探索遗传算法,当我最终得到一些基本理论时,我试图在Python上编写简单的GA,它解决了丢番图方程.我是Python和GA的新手,所以请不要严格判断我的代码.

问题

由于早熟收敛,我不能得到任何结果(有一些无返回点(n-population),population [n] == population [n + i],其中i是任意整数.甚至随机变换元素也无法改变这个,这一代很快就退化了)

GA使用交叉来繁殖,并加权选择父母.

  • Q1:我的代码中是否有任何设计错误(如下)?
  • Q1.2:我需要增加精英主义吗?
  • Q1.3:我需要改变品种逻辑吗?
  • Q2:真的需要深层复印吗?

码:

# -*- coding: utf-8 -*-
from random import randint
from copy import deepcopy
from math import floor
import random

class Organism:
    #initiate
    def __init__(self, alleles, fitness, likelihood):
        self.alleles = alleles
        self.fitness = fitness
        self.likelihood = likelihood
        self.result = 0
    def __unicode__(self):
        return '%s [%s - %s]' % (self.alleles, self.fitness, self.likelihood)

class  CDiophantine:
    def __init__(self, coefficients,  result):
        self.coefficients = coefficients
        self.result = …
Run Code Online (Sandbox Code Playgroud)

python artificial-intelligence genetic-programming genetic-algorithm

9
推荐指数
1
解决办法
1056
查看次数

遗传算法 - 与无性遗传算法相比,性有哪些好处?

直觉上我认为如果我想找到"最佳"参数集,我可以简单地从一群孩子中选出表现最好的1个人,让那个人生成100个与自己相似的孩子,挑选最好的表演者并重复.具体目的是挑选最好的2和杂交?那么,为什么不选择3个,4个或10个父母("狂欢衍生的"受精卵)来创造每一代孩子呢?

genetic-programming genetic-algorithm evolutionary-algorithm

9
推荐指数
1
解决办法
988
查看次数

遗传算法中的最优种群大小,变异率和配合率

我为比赛写了一个游戏程序,它依赖于大约16个浮点"常量".改变常数可以并将对比赛风格和成功率产生巨大影响.

我还编写了一个简单的遗传算法来生成常数的最优值.但是,该算法不会生成"最佳"常数.

可能的原因:

  • 该算法有错误(暂时将其排除在外!)
  • 人口很少
  • 变异率很高
  • 配合率可能会更好

算法如下:

  • 首先创建初始种群
  • 分配每个成员的初始常量(基于我的偏差乘以0.75和1.25之间的随机因子)
  • 对于每一代人群,成员都配对进行游戏比赛
  • 获胜者被克隆两次,如果平局被克隆一次
  • 如果random()小于突变率,则克隆会突变一个基因
  • 突变将随机常数乘以0.75和1.25之间的随机因子
  • 在固定的时间间隔,取决于配偶率,成员配对,基因混合

我目前的设置:

  • 人口:40(至低)
  • 突变率0.10(10%)
  • 交配率0.20(每5代)

人口规模,变异率和配合率的更好价值是什么?

我们欢迎猜测,不会有精确的价值!此外,如果您有类似遗传算法的见解,您想分享,请这样做.

PS:有问题的游戏比赛,如果有人有兴趣:http://ai-contest.com/

genetic-programming genetic-algorithm

8
推荐指数
1
解决办法
6493
查看次数

进化算法是否有可能创建机器代码?

这是一个普遍感兴趣的问题,因为我并不想解决具体问题.我环顾四周试图找到一些涵盖这个领域的文章,但我甚至在努力拼凑一些好的搜索词.

让我们从我所知道的开始:我在人工智能方面接受了大学水平的教育,包括遗传编程和更广泛的进化算法,尽管自从我十年前毕业以来,我还没有玩过很多.我想知道这些方法是否可用于创建机器代码来解决问题(可能是x86,或者某些'任意'指令集).我们可以自己进化算法,例如可以计算平方根,还是在屏幕上绘制令人愉悦的图像?是否可以使用进化算法来创建可以创建优化代码的整个编译器(用于大小,速度等)?

此外,我经常认为遗传编程或进化算法本身并不是物种进化的良好证据.涉及进化算法的问题解决方法似乎总是需要将智能写入其中.一个人如何以真正发生真正有趣和令人惊讶的结果的方式创建一个真正的进化算法?

TLDR:可以使用的进化算法永远是在创造一种机器代码有用,以及是否有进化算法前面的例子中,一般生产真正有趣和令人惊讶的结果?

缺口

x86 genetic-programming genetic-algorithm evolutionary-algorithm

8
推荐指数
1
解决办法
1152
查看次数

二叉树遗传编程

我刚开始使用遗传编程,我在初始化人口时遇到了问题.

我需要一棵树来代表每个候选解决方案 - 问题在于,我对树木不熟悉.

我需要两种初始化方法,即Grow(可变大小的树)和Full(平衡相同的形状和大小的树).

    FULL                        GROW
     (*)                         (*)  
  (+)   (-)                   (5)   (-)
(1)(2) (3)(4)                     (6) (7)
Run Code Online (Sandbox Code Playgroud)

我已经初始化了我的Tree类,但是,我不知道如何从这里开始填充树(Full或Grow).

public class Tree{
   Object value;
   Tree left, right;

   public Tree(Object value)
   {
      this.value=value;
   }   

   public Tree (Object value, Tree left, Tree right) 
   {
      this.value = value;
      this.left = left;
      this.right = right;
   } 

   // Getter & setter for the value.
   public Object getValue(){
      return value;}
   public void setValue(Object value){
      this.value = value;}

   // Getters & setters …
Run Code Online (Sandbox Code Playgroud)

java tree binary-tree genetic-programming genetic-algorithm

8
推荐指数
1
解决办法
1031
查看次数