标签: genetic-algorithm

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

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

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

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

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

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

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

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

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

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

提前致谢!

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

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

MATLAB-将函数句柄参数作为句柄传递给另一个函数

从事涉及遗传算法的任务(头痛负荷,有趣的负担).我需要能够测试不同的交叉方法和不同的基因突变的方法,来比较其结果(本文我必须写在课程的一部分).因此,我想将函数名称作为函数句柄传递给Repopulate方法.

function newpop = Repopulate(population, crossOverMethod, mutationMethod)
  ...
  child = crossOverMethod(parent1, parent2, @mutationMethod);
  ...

function child = crossOverMethod(parent1, parent2, mutationMethod)
  ...
  if (mutateThisChild == true)
    child = mutationMethod(child);
  end
  ...
Run Code Online (Sandbox Code Playgroud)

这里的关键点是3,参数3:如何将mutationMethod传递到另一个级别?如果我使用@符号,我会被告知:

"mutationMethod" was previously used as a variable,
 conflicting with its use here as the name of a function or command.
Run Code Online (Sandbox Code Playgroud)

如果我不使用@符号,那么在没有参数的情况下调用mutationMethod,并且非常不满意.

虽然我知道是的,但我可以重写我的代码以使其工作方式不同,我现在很好奇如何让它实际工作.

任何帮助是极大的赞赏.

matlab nested-function function-handle genetic-algorithm

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

评估数组单调性的算法(即判断数组的"排序性")


编辑:哇,很多很棒的回复.是的,我使用它作为一个适应度函数来判断遗传算法执行的排序质量.因此,评估成本很重要(即,必须快速,最好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

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

初始遗传编程参数

我在大学里做了一点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
查看次数

遗传算法绘制图形?职位分配问题

我手头有一个任务问题,我想知道应用本地搜索技术达到理想解决方案是多么合适(搜索空间非常大).

我有一个有向图(流程图),我想在二维平面上以一种非常清晰,易懂和易于人眼阅读的方式进行可视化.因此; 我将为每个顶点分配(x,y)位置.我正在考虑使用模拟退火,遗传算法或您建议的任何此类方法来解决此问题

输入:图形G =(V,E)
输出:一组赋值,{(xi, yi) for each vi in V}.换句话说,每个顶点将被分配一个位置(x,y),其中坐标都是整数,并且> = 0.

这些是我将用来判断解决方案的标准(我欢迎任何建议):

  • 交叉边的数量应该是最小的,
  • 所有边缘都在一个方向上流动(即从左到右),
  • 高角度分辨率(入射在同一顶点的两个边缘形成的最小角度),
  • 面积小 - 最不重要.

此外; 我有一个初始配置(位置到顶点的分配),手工制作.它非常混乱,这就是为什么我要尝试自动化这个过程.

我的问题是,

  • 使用本地搜索技术是多么明智?它产生预期结果的可能性有多大?

  • 我应该从什么开始?模拟退火,遗传算法还是其他什么?

  • 我应该在开头随机播种还是使用初始配置开始?

  • 或者,如果您已经知道类似的实现/伪代码/事物,请指出我.

任何帮助将不胜感激.谢谢.

编辑:它不需要很快 - 不是实时的.此外; | V | = ~200,每个顶点平均有大约1.5个输出边.该图表没有断开连接的组件.它涉及周期.

algorithm graph genetic-algorithm

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

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

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

genetic-programming genetic-algorithm evolutionary-algorithm

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

课程安排算法:为什么不建议使用DFS或图形着色?

我需要开发一个课程时间表软件,可以有效地分配时间段和房间.这是一个基于课程的例程,而不是基于后期注册.并且有效地意味着课程根据工作人员的时间偏好分配时间段,并且还需要最小化第1年 - 第2年课程重叠,以便第2年学生可以重新学习他们未能通过的课程.(以及3至4年级的学生) .

现在,起初我认为这将是一个容易的问题,但现在看起来不同了.我看过的大多数论文都使用遗传算法/ PSO /模拟退火或这些类型的算法.我仍然无法将问题解释为GA问题.令我困惑的是为什么几乎没有人建议使用DFS或图形着色算法?

如果使用DFS/graph-coloring,有人可以解释这个场景吗?或者为什么不建议或尝试他们.

algorithm mathematical-optimization combinatorics genetic-algorithm evolutionary-algorithm

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

遗传算法处理负健身值

我正在尝试实现遗传算法以最大化n个变量的函数.然而问题是健身值可能是负的,我不确定如何在做选择时处理负值.我读过这篇文章遗传算法中的线性适应度缩放会产生负的适应度值, 但我不清楚如何处理负适应度值以及如何计算比例因子a和b.

另外,从文章中我知道轮盘赌选择仅适用于积极适应值.锦标赛选择也一样吗?

genetic-algorithm

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