标签: genetic-algorithm

遗传算法结果展示

我有我使用遗传算法运行的实验数据,并试图在论文中展示它。什么是表示遗传算法结果的好/经典方法。我正在考虑做一个散点图,代表他们几代人的最大拟合个体。这是结果的一个很好的表示吗?

genetic-algorithm evolutionary-algorithm

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

根据 Java 中 Object 的类型选择实现

我有一个父类型

public class IObject{}
Run Code Online (Sandbox Code Playgroud)

并且可以有很多子类(甚至是未来的新子类)

public class Object1 extends IObject{}
public class Object2 extends IObject{}
public class Object3 extends IObject{}
...
public class ObjectN extends IObject{}
Run Code Online (Sandbox Code Playgroud)

然后根据这些对象的类型我必须做不同的操作。

public class StrategyForObject1(){void do{}}
public class StrategyForObject2(){void do{}}
public class StrategyForObject3(){void do{}}
...
public class StrategyForObjectN(){void do{}}
Run Code Online (Sandbox Code Playgroud)

所以我想从我的 Context 类:

   public Conext {
    IObject o;

    public void setObject(IObject o) {
        this.o = o;
    }

    void logic() {
        if (o instanceOf Object1) {
            new StrategyForObject1().do();
        }
        if (o instanceOf Object2) {
            new StrategyForObject2().do();
        } …
Run Code Online (Sandbox Code Playgroud)

java design-patterns strategy-pattern visitor-pattern genetic-algorithm

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

为什么需要遗传算法中的适应度缩放?

在阅读 David E. Goldberg 所著的“遗传算法”一书时,他提到了遗传算法中的适应度缩放。

我对这个函数的理解是限制最强的候选者,这样它们就不会淹没池子进行繁殖。

为什么要限制最佳候选人?在我看来,尽早拥有尽可能多的最佳候选人将有助于尽快找到最佳解决方案。

genetic-algorithm

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

如何使用遗传算法求解线性方程?

我想用遗传算法求解包含n个变量的n个线性方程组.

我很难定义交叉操作,因为解决方案可能包含浮点值.我该怎么办?这似乎是可能的,但这是我第一次遇到遗传算法.

假设我们必须解决

 x + 2y = 1
2x + 8y = 3
Run Code Online (Sandbox Code Playgroud)

答案是x = 1/2和y = 1/4.

我们如何对问题进行建模?

更新:看看你是否可以从论文http://www.masaumnet.com/archives/mjbas/volume1/issue2/mjbas010205.pdf中解读任何内容.

c++ algorithm linear-equation genetic-algorithm

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

改善Q-Learning

我目前正在使用Q-Learning尝试教一个机器人如何在一个充满墙壁/障碍物的房间里移动.它必须从房间的任何地方开始并进入目标状态(例如,这可能是带有门的瓷砖).目前,当它想要移动到另一个磁贴时,它将转到该磁贴,但我想在将来我可能会添加一个随机的机会去另一个磁贴,而不是那个.它只能向上,向下,向左和向右移动.达到目标状态会产生+100,其余的操作将产生0.

我正在使用此处找到的算法,可以在下面的图像中看到.

替代文字 替代文字

现在,关于这一点,我有一些问题:

  1. 当使用Q-Learning时,有点像神经网络,我必须区分学习阶段和使用阶段吗?我的意思是,他们在第一张照片上显示的内容似乎是学习的,而在第二张照片中显示的是使用一张.
  2. 我在某处读到,需要无数步才能达到最佳Q值表.真的吗?我说这不是真的,但我必须在这里遗漏一些东西.
  3. 我也听说过TD(时间差异),它似乎用下面的表达式表示:

    Q(a, s) = Q(a, s) * alpha * [R(a, s) + gamma * Max { Q(a', s' } - Q(a, s)]
    
    Run Code Online (Sandbox Code Playgroud)

    对于alpha = 1,只是看起来在图片中首先显示的那个.这个伽玛有什么不同呢?

  4. 如果我尝试一个非常大的房间(例如300x200像素),我会遇到一些并发症.因为它基本上是随机运行的,如果房间非常大,那么从第一个状态到目标状态随机需要花费很多时间.我可以用什么方法加快速度?我想也许有一张桌子上充满了真实和愚蠢,关于那段已经处于该状态的情节.如果是,我会丢弃它,如果不是,我会去那里.如果我已经在所有这些州,那么我会去随机的.这样,它就像我现在正在做的那样,知道我现在做的事情要少一些.
  5. 我想尝试除Q-Values的查找表之外的其他内容,所以我正在考虑使用具有反向传播的神经网络.我可能会尝试为每个动作(向上,向下,向左,向右)设置神经网络,因为它似乎是产生最佳结果的.有没有其他方法(除了SVM,这似乎太难以实现自己),我可以使用和实现,这给我很好的Q值函数近似?
  6. 您是否认为遗传算法在这种情况下会产生良好的结果,使用Q值矩阵作为它的基础?我怎么能测试我的健身功能?它给我的印象是GA通常用于更随机/复杂的事物.如果我们仔细观察,我们会注意到Q值遵循一个明确的趋势 - 在目标附近有较高的Q值,而在距离它们较远的地方有较低的Q值.试图通过GA达成这个结论可能会花费太长时间?

language-agnostic artificial-intelligence reinforcement-learning genetic-algorithm

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

C++中的遗传算法优化

我正在寻找有效的添加或省略代码的方法,以帮助我的遗传算法程序返回更快的结果.该程序的目标是接受一个字符串并创建尽可能匹配的其他字符串.无论哪个新制作的字符串与最接近的(前5个)配对匹配并产生后代(其中一些具有将新的随机数放入字符串而不影响长度的突变).这一切都很好,但需要不可思议的几代才能获得一些更长的字符串(4和更高)才能完美匹配.抱歉tl; dr长度,但这是我当前的代码.批评走了!

    #include "stdio.h"
    #include "fstream"
    #include "ctime"
    #include "iostream"
    #include "string"
    #include "windows.h"

    #define CHARACTERS 16
    #define STRINGS 100
    /*
    Enter String(max 16 chars)
    Generate 100 words of the same length
    Check for Fitness(how close each word is to the string)
    Every generation: display top 5
    Clone the top 5
    Top 20 reproduce(mix each other's chars)
    1/1000 chance the children might mutate(each newly mixed string or char might have a completely random number)

    */

    typedef struct _stringHolder
    {
        char …
Run Code Online (Sandbox Code Playgroud)

c++ optimization genetic-programming genetic-algorithm

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

使用Pyevolve进行帕累托排名

我目前正在使用Pyevolve包解决一些遗传算法问题.我想知道是否有任何在Pyevolve包中使用Pareto排名的例子,因为我有多个评估函数.

如果不存在,你能不能提供一些Pareto排名算法的伪代码.我想自己实现它.

谢谢!!

python pyevolve genetic-algorithm evolutionary-algorithm

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

哈希函数是否与进化算法的创始假设相矛盾?

  1. 进化算法使用适应度函数来选择跨代的生存候选者("适者生存").我相信所有适应度函数都假设候选者的值越接近期望值,它们的输入("关键点")必须越接近所需的输入.

  2. 加密散列函数具有"生成具有给定散列的消息不可行"的属性.我理解这意味着值的"接近度"与键的"接近度"之间几乎没有相关性.

将这两者放在一起,并不意味着"适者生存"假设对于加密哈希函数是错误的吗?这意味着,如果您想使用进化算法来尝试找出加密哈希值的反向,那么适应度函数会将您推向错误的方向.值的"接近度"和键的"接近度"之间的相关性是进化算法的先决条件吗?

hash cryptography genetic-algorithm evolutionary-algorithm

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

遗传算法:选择参数来解决大解空间的经验法则

我有一个遗传算法,个人由2000位组成,我尝试优化4个变量.是否有任何(相对直接的优先)经验法则来设置人口规模,世代数和变异概率等参数?

genetic-algorithm

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

用于实现优化算法的混合整数线性规划(例如,遗传或粒子群)

我正在学习用于自动分组用户的优化算法.但是,我对这些算法完全陌生,我在回顾相关文献时听说过它们.而且,不同的是,在其中一篇文章中,作者使用整数编程实现了他们自己的算法(基于他们自己的逻辑)(这就是我所知道的IP).

我想知道是否需要使用混合整数线性编程实现遗传/粒子群(或任何其他优化)算法,或者这只是其中一个选项.最后,我需要构建一个基于Web的系统,自动对用户进行分组.我感谢任何帮助.

optimization linear-programming genetic-algorithm particle-swarm integer-programming

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