标签: genetic-programming

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

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

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

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

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

缺口

x86 genetic-programming genetic-algorithm evolutionary-algorithm

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

你有生产中的遗传算法吗?

在生产中使用遗传算法是个好主意吗?

如果您正在使用它:在什么情况下?选择subj的优点是什么?您可以轻松地向算法添加更改吗?

language-agnostic algorithm production genetic-programming genetic-algorithm

7
推荐指数
1
解决办法
561
查看次数

为什么遗传算法不能解决像RSA因素这样的问题?

前段时间我对GAs很感兴趣,我对它们进行了相当多的研究.我使用C++ GAlib编写了一些程序,我很惊讶他们能够在几秒钟内解决其他难以计算的问题.它们看起来像是一种非常棒的强制技术,非常适合智能和适应性.

我正在读Michalewitz的一本书,如果我记得正确的名字,这一切似乎都是基于麻省理工学院证明的图式定理.

我还听说它无法真正用于解决像RSA私钥分解这样的问题.

有人可以解释为什么会这样吗?

genetic-programming genetic-algorithm

7
推荐指数
1
解决办法
2396
查看次数

使用人工智能进行自动编程的搜索技术类别是什么?

我正在研究文献中提供的自动编程技术,但只研究那些使用AI的技术.我能找到的唯一这样的技术是遗传编程.

有没有其他技术可以将程序员不需要知道如何解决的高级问题规范转换为工作程序?这些搜索技术被称为什么类别?

artificial-intelligence genetic-programming

7
推荐指数
1
解决办法
333
查看次数

遗传算法:较高的突变率导致较低的运行时间

我实施了一种遗传算法来解决增强的旅行商问题(边缘的权重随着时间的推移而变化).目前我正在评估我的模拟的不同参数,我偶然发现了一个我无法向自己解释的相关性:

突变率 - 运行时

突变率越高,运行时间越短.就个人而言,我会假设相反,因为更高的突变率会产生更多的操作.(25%的突变率比5%快12%)

突变率为8%(5%优于10%,25%表现最差(0%除外)),效果最佳.适应值越低越好.

结果 - 突变率

迭代计数由生成参数设置,在所有测试用例中设置为10.000.

每个测试用例执行10次.

我在变异中的实现(在python中)看起来像这样:

def mutate(self,p):
    for i in self.inhabitants:
        r = random()
        if r <= p:
            i.mutate()
Run Code Online (Sandbox Code Playgroud)

p 是突变率

突变看起来像这样

def mutate(self):
    r1 = randint(0,self.locations.size()-1)
    r2 = randint(0,self.locations.size()-1)
    self.locations.swap(r1,r2)
Run Code Online (Sandbox Code Playgroud)

为什么更高的突变率会导致更快的执行时间?

编辑:我实际上在我的Raspberry Pi上运行了相同的测试(速度慢了9倍),结果相同:

时间 -  pi的变异

python genetic-programming traveling-salesman genetic-algorithm

7
推荐指数
1
解决办法
843
查看次数

二元比赛选择

我对比赛选择的理解是:

对于给定的锦标赛大小,t,从群体中随机选择t个体并将该锦标赛的获胜者确定为具有最大适应度函数值的个体.

我的问题是:

" 二元锦标赛选择 "和" 锦标赛选择 " 之间是否存在差异,或者它们是否可以互换?

genetic-programming genetic-algorithm evolutionary-algorithm

7
推荐指数
1
解决办法
2888
查看次数

C#如何创建在运行时解释的函数

我正在制作一个遗传程序,但是我在C#中遇到了限制,我希望在算法中提供新的函数,但是如果不重新编译程序我就无法做到.本质上,我希望程序的用户提供允许的功能,GP将自动使用它们.如果要求用户尽可能少地了解编程,那将是很好的.

我想插入新功能而不将它们编译到程序中.在Python中这很容易,因为它都被解释了,但我不知道如何使用C#来做到这一点.有谁知道如何在C#中实现这一目标?有没有图书馆,技术等?

c# genetic-programming genetic-algorithm

6
推荐指数
2
解决办法
889
查看次数

什么是最活跃的遗传编程库?

什么遗传编程图书馆,无论语言如何,都拥有最活跃的社区,并且是最发达的?

language-agnostic computer-science genetic-programming

6
推荐指数
1
解决办法
4888
查看次数

用Java创建二进制树以用于遗传编程目的

我正在为一个正在进行的软件工程课程的项目工作.目标是设计一个程序,该程序将使用遗传编程生成适合所提供的训练数据的数学表达式.

我刚刚开始研究这个项目,我正试图围绕如何创建一个允许用户定义的树高度的二叉树,并保持每个节点分离,以便在我到达时使交叉和变异更简单实施这些过程.

这是我到目前为止创建的节点类.请原谅我确信我明显缺乏经验.

public class Node
{
    Node parent;
    Node leftchild;
    Node rightchild;

    public void setParent(Node p)
    {
        parent = p;
    }

    public void setLeftChild(Node lc)
    {
        lc.setParent(this);
        leftchild = lc;
    }

    public void setRightChild(Node rc)
    {
        rc.setParent(this);
        rightchild = rc;
    }   
}


public class OperatorNode extends Node
{
    char operator;


    public OperatorNode()
    {
        double probability = Math.random();

        if (probability <= .25)
        {
            operator = '+';
        }
        else if (probability > .25 && probability <= .50)
        {
            operator = '-'; …
Run Code Online (Sandbox Code Playgroud)

java binary-tree genetic-programming

6
推荐指数
1
解决办法
6379
查看次数

遗传算法框架中的随机化不良

有没有人从.Net 遗传算法框架中看到令人信服的结果?

我发现随遗传算法框架提供的旅行商问题演示中的随机化很差.以下调用在x 100种子染色体群体中生成相同的基因shuffle顺序:

chromosome.Genes.ShuffleFast();
Run Code Online (Sandbox Code Playgroud)

如果我单步执行代码,基因顺序看起来是随机的,因此我怀疑在ShuffleFast()中有一个时间/ Rdn()错误,否则我忽略了一个设置步骤.

我试图通过预先填充染色体基因序列来解决这个问题,这在TSP结果中产生了微小的变化.然而,该运行的控制台日志仍然显示GAF在400个人口世代中仅发现了4个潜在的解决方案.这与GA YouTube视频不一致,这些视频显示遗传算法的实现正在寻找具有大量抖动的建议解决方案.我引用这一点作为进一步表明GAF存在随机数生成的系统性内部问题.

遗传算法框架通过作者博客得到很好的记录,所以我试图保持开放的心态作为原因.

重现步骤=从nuget下载GAF,在创建染色体for循环后使用断点编译和调试默认项目,检查population.Solutions.Windows 7,VS2015,.Net 4.5和4.61.调试或发布.

c# genetic-programming genetic-algorithm

6
推荐指数
1
解决办法
624
查看次数