问题标签 [genetic-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
genetic-algorithm - 如何在多项式中表示股票的价值?
我正在做一个遗传算法项目,我们需要构建一个软件,根据它们的历史选择一组股票。我们需要在遗传编程上做这件事,这意味着我们需要一个适应度函数和一个染色体。是的,我通过股票的平均历史与其实际价值之间的正差异来考虑适应度函数。(因此,如果匹配,它将为 0 )。有人知道如何表达染色体吗?
hadoop - Hadoop 上的代理框架
我正在考虑使用 Hadoop 编写一个基于代理的简单框架。这是一个我已经玩了很长时间的想法(但还没有深入思考)。
我想使用它的目标应用程序是遗传编程。想法是我会产生很多代理,让他们执行一项任务,评估他们的遗传适应性,然后繁殖它们,然后重复整个练习。
我想知道人们是否对使用 Hadoop 进行此操作有任何直接的想法/批评。
提前致谢。
algorithm - 遗传编程 - 种群初始化算法
有人可以为我提供一些关于遗传编程的种群初始化算法的指导吗?
我已经了解了 Grown, Full, Ramped half half(取自“遗传编程领域指南”),并看到了一种新算法两个快速树创建(还没有阅读论文。)。
classification - 用于分类的遗传算法
我正在尝试使用 Matlab GPTIPS框架解决分类问题。到目前为止,我设法建立了合理的数据表示和适应度函数,并且每类的平均准确率接近 65%。
我现在需要的是一些有两个困难的帮助:
我的数据有偏差。基本上我在解决二进制分类问题,只有 20% 的数据属于 1 类,而其他 80% 属于 0 类。我最初使用预测的准确性作为我的适应度函数,但它真的很糟糕。我现在最好的是
适应度 = 0.5*(PositivePredictiveValue + NegativePredictiveValue) - const*ComplexityOfSolution
请建议,我该如何改进我的功能以纠正数据偏差。
- 第二个问题是过拟合。我将我的数据分为三部分:训练(70%)、测试(20%)、验证(10%)。我在训练集上训练每个染色体,然后在测试集上评估它的适应度函数。这个例程让我在测试数据上达到 0.82 的适合度,以获得人群中最好的个体。但同一个人在验证数据上的结果只有 60%。每次在生成新种群之前,我都会添加对最佳个体的验证检查。然后我将验证集的适应度与测试集的适应度进行比较。如果差异超过 5%,那么我会增加适应度函数中解决方案复杂性的惩罚。但这没有帮助。我还可以尝试在每一代使用验证集评估所有个体,并简单地删除过度拟合的个体。但后来我不 看不到我的测试和验证数据之间的任何区别。这里还能做什么?
更新:
对于我的第二个问题,我发现了很棒的文章“在遗传编程中控制过度拟合的实验”以及一些文章作者关于处理 GP 中过度拟合的想法,它具有令人印象深刻的评论,其中引用了许多解决该问题的不同方法。现在我有很多新想法可以尝试解决我的问题。不幸的是,在选择合适的适应度函数时仍然找不到任何东西,它会考虑到我数据中不平衡的类比例。
genetic-algorithm - 有 GA 经验的人可以检查我的健身功能吗?
这是我的问题,我正在修改为遗传算法找到的代码,以对函数进行数值优化。本质上,给定函数 F 和我们的期望值,程序使用 GA 搜索提供适当期望值的 x 和 y 值。我一直在修改我的健身功能,我觉得这是问题的根源。
基本代码分解是:
生成随机染色体群体
使用基于每个染色体适应度的冒泡排序
检查其中是否有任何一个碰巧解决了该功能
如果一个人解决了它,然后停止并打印它
否则,根据父母生成孩子排序,检查最佳答案,循环
我希望有人能指出我正确的方向,今晚我将再次剖析它,但我似乎在这方面遇到了障碍。对于比我硬编码的更复杂的函数,它似乎收敛于一个随机百分比(通常小于 20)......但它应该更接近于 0。简单编码的函数不断返回大约 99% 的差异......所以我不是 100% 的。
}
java - Java中遗传算法的轮盘选择
我正在为遗传算法实施轮盘赌选择方法。从本质上讲,我的问题非常简单,但我无法完全理解它。在我的适应度函数中,如果答案非常错误,它可能会返回 -3000% 左右。我的问题是,当我尝试为我的结果分配概率时,它们会倾向于错误的答案。
例如:如果我的百分比在一个数组中并且是 [92, 68, 5, -4, -3546](从高到低),我需要让较低索引中的数字比数字更有可能被选中具有更高的指数。
忽略我的适应度函数,如何在考虑大负数的情况下基于此创建概率?
我在另一个问题中发现的一些基本代码:
(此处的原始链接:用 Java 编写的 GA)
我让我的 GA 使用不同的选择方法,但现在我正在尝试修改这个方法来代替它。任何帮助将不胜感激。
***编辑
以下代码是我修改过的 rouletteWheelSelection:
这是我的健身功能:
当时的想法是,一个值与我需要的值相差超过 100%,我把它推到排序列表的末尾是负面的。
artificial-intelligence - 使用遗传编程来估计概率
我想使用遗传程序(gp)来估计“事件”中“结果”的概率。为了训练 nn,我使用了遗传算法。
因此,在我的数据库中,我有许多事件,每个事件都包含许多可能的结果。
我将为 gp 提供一组与每个事件中的每个结果相关的输入变量。
我的问题是-gp中的适应度函数应该是什么????
例如,现在我给 gp 一组输入数据(结果输入变量)和一组目标数据(如果结果确实发生,则为 0,如果结果未发生,则为 0,适应度函数为均方输出和目标的误差)。然后,我对每个结果取每个输出的总和,并将每个输出除以总和(给出概率)。但是,我确信这不是正确的做法。
为了清楚起见,这就是我目前这样做的方式:
我想估计一个事件中发生 5 种不同结果的概率:
然后我将计算每个输入的 gp 输出:
此事件中每个结果的输出总和为:1.80。然后,我将通过将输出除以总和来计算每个结果的“概率”:
在你开始之前 - 我知道这些不是真实的概率,而且这种方法不起作用!我只是把它放在这里,以帮助您了解我想要实现的目标。
谁能给我一些关于如何估计每个结果的概率的指示?(另外,请注意我的数学不是很好)
非常感谢
neural-network - NEAT中不相交和多余基因之间的区别?
我正在阅读 Stanley 的论文,但我无法弄清楚 NEAT 中的 Disjoint 和 Excess 基因到底是什么。我知道它们似乎以某种特定的方式与它们都包含与父母双方无关的创新数字这一事实相关。但是它们有什么区别呢?
任何人都可以阐明这个问题吗?
genetic-algorithm - 在遗传算法中选择父母进行交叉?
首先,这是家庭作业的一部分。
我正在尝试实现遗传算法。我对选择父母进行交叉感到困惑。
在我的笔记中(显然有问题),这是作为示例所做的;
- Pc(交叉的可能性)*种群大小=估计的交叉染色体数(如果不是偶数,则四舍五入到最接近的偶数之一)
- 为每个染色体选择一个 [0,1] 范围内的随机数,如果该数字小于 Pc,则选择该染色体作为交叉对。
但是当应用第二步时,选择的染色体数等于第一步找到的结果。由于随机性,这并不总是得到保证。
所以这没有任何意义。我搜索了选择父母进行交叉,但我发现的只是交叉技术(一点、切割和切片等)以及如何在所选父母之间进行交叉(我对这些没有问题)。我只是不知道应该选择哪个染色体进行交叉。有什么建议或简单的例子吗?
optimization - 为什么遗传算法在 MATLAB 优化工具箱中对具有相同参数的一个目标函数的优化给出不同的结果?
嗨,我正在使用 matlab 中的优化工具箱来解决最小化问题。当我运行求解器时,它会针对具有相同参数的一个问题给出不同的结果。那么如何判断哪一个是最佳答案呢?我需要做的是让求解器为每次运行具有相同参数的运行提供一个结果。非常感谢你