问题标签 [genetic]

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.

0 投票
1 回答
594 浏览

python - Python 上的遗传编程 pyeasyGA 和 Zelle 图形

我想制作一个简单的程序来提高我对这类编程的了解。我找到了一个非常有用的库 pyeasyGA,并尝试使用 graphics.py 制作一个简单的程序,该程序从随机生成的“通过”序列创建一个收敛到一个点的序列。

这就是它的工作原理:

这个函数创建了一系列通道,因为 graphics.py 库允许你通过给它你想要移动的像素数来移动一个对象。那是我的“个人”。

为了计算适应度,我使用了这个:

此函数计算与所需到达点的距离。

在这些通过之后,程序会生成很多代并选择适应度最低的个体,但它不起作用。

它不进化。每个通道序列似乎都是随机生成的。

有人能帮助我吗?

这是完整的代码

编辑:

该程序似乎有效。唯一的问题是少数几代人。

0 投票
2 回答
1133 浏览

python - 用 DEAP 解决 TSP - 如何冻结第一个和最后一个城镇?

我有包含机票价格的大型数据集

我想解决 TSP 问题,即从数组中找到最便宜的旅行CITY_START开始CITY_END并通过最大N城市。CITIES_THROUGH

我正在尝试使用TSP 示例代码使用 DEAP python lib 解决此任务。

如何在 DEAP TSP 示例中冻结第一个和最后一个城镇?

因此,我想限制算法以在此类可能解决方案的子集中找到最便宜的航班:

0 投票
1 回答
798 浏览

c - C - N 皇后的遗传算法

我试图弄清楚我们如何使用遗传算法来解决 N 个皇后问题。

这是程序:

该程序可以正确运行和编译,但不会产生我想要的结果。我想显示每个女王的 x,y 坐标,并在输出时简单地打印出来。然而,相反,我在输出上得到随机垃圾,我不知道为什么。

当前输出示例:

期望的输出示例(N皇后问题的解决方案):

0 投票
0 回答
188 浏览

genetic-algorithm - 遗传算法没有产生更好的结果

我正在运行一种遗传算法来训练一组猎人来学习捕捉尽可能多的大象。基本上,大约有 20 名猎人在 2D 网格环境中四处走动,并且必须有 4 名猎人围绕大象才能捕捉它(世界上有大约 20 只大象)。每次运行此模拟时,所有猎人和大象都会被放置在随机的起始位置。猎人的运动受其染色体控制,大象的运动是随机的。

所有的 Hunters 都有相同的染色体(同质),所以我每次在为染色体分配适应度时都运行这个模拟。我的适应度函数只是根据模拟中捕获的大象总数奖励染色体:

世代适应度的结果基本是随机的。每一代中最适合的个体不会随着代的发展而变得更适合,并且每一代的总适应度不会增加。我觉得我的适应度函数太原始了,但我不知道如何改变它以产生更好的结果。猎人似乎没有学到任何东西。

关于我的 GA 的详细信息(范围内的数字,因为我尝试了各种值):

  • 人口规模:64 或 128。

  • 世代上限:500 - 1000。

  • 精英主义:5% - 10% 的人口

  • 突变:1% - 4%

  • 染色体大小:180

  • 选择:轮盘赌。

  • 交叉:染色体中间的简单交叉。

染色体是根据传感器数据设计成运动规则的“块”:

每个块都有一个传感器标准(例如“如果最近的大象距离 X 距离”)和一个移动规则(例如“向最近的大象移动 Y 时间”)。猎人可以移动到最近的大象或最近的队友猎人。

有没有人有什么建议可以让猎人的适应度随着世代的增加而逐渐增加?

0 投票
1 回答
99 浏览

c# - 在 C# 中使用 GA 初始化二进制数组中的基因以进行时间表调度

我目前正在做一个司机调度项目,它处于初始阶段。我决定使用 GA 为驾驶员生成优化的时间表,并且与大多数 GA 项目一样,人口应以二进制表示。

例如,如果司机被分配了两个小时的任务并且他的工作时间是 9 小时,那么该特定日期的可能人口看起来像 110000000、011000000、001100000 等等。

作为 GA 的初始化,我想用两个参数(驱动程序的工作持续时间和工作持续时间)动态生成像 000110000 这样的可能基因。

我设法在布尔列表中获得完全随机的二进制代码(见下文),但这不是我想要表示的初始化。

这是在列表中生成随机二进制字符串(技术上是一堆布尔值)的部分代码。

如何实现初始化函数以生成满足要求(司机工作时间、预计工作时间)的二进制代码?如果除了布尔列表之外还有更好的方法来表示它,请也提出建议。

0 投票
2 回答
852 浏览

algorithm - 遗传算法:找到适合点的曲线

我正在研究遗传算法。下面是它的工作原理 :

  • 输入:二维点列表
  • 输入:曲线的度数
  • 输出:以最佳方式通过点的曲线方程(尽量减少从点的 Ys 到曲线的垂直距离之和)

该算法可以为简单的直线和 2 度方程找到好的方程。

但是对于 4 点和 3 度方程及更多,它变得更加复杂。我找不到正确的参数组合:有时我必须等待 5 分钟,但找到的曲线仍然很糟糕。我尝试修改许多参数,从人口规模到选择的父母数量......

GA 编程中的著名组合/定理对我有帮助吗?

谢谢 !:)

0 投票
2 回答
121 浏览

java - 这两种基因型的区别

使用带有N (任意 > 0 个数字)的基因型和带有 1(一个)基因的染色体和带有 1(一个)染色体和N (相同数量)基因的基因型有什么区别?

在代码中:

相对

我的问题不是关于在 eval 函数中获取值,而是它是否可以以某种方式(结果或进化)改变遗传算法。

更新

我正在使用Jenetics库。

0 投票
2 回答
84 浏览

python - python-获取子列表而不改变位置

嗨,我正在研究遗传算法。我想知道是否有人可以帮助我完成交叉步骤。

例子:

我想在dad中选择一个随机子集,子集的大小也可以是随机的。例如,[1,2,3] 或 [3,4,5] 或 [2,3,4] 或 [1,2] 或 [4,5] 或 [1,2,3,4] 但它​​们必须按照爸爸的原始顺序。

例如,随机子集是 [2,3,4,5] 那么我希望我的后代是 [,2,3,4,5,,]。然后我想用妈妈的名单来填补空缺的地方。我想迭代妈妈的名单。首先考虑 2,2 已经在列表中,所以我跳过 2。然后考虑 3,3 也已经在列表后代中,所以我跳过 3。然后 6,6 不在后代列表中,所以我将添加 6第一个可用的位置。所以后代现在是 [6,2,3,4,5,,]。最终,offspring应该是[6,2,3,4,5,1,7]

任何帮助将不胜感激!我认为我需要帮助的最困难的部分是如何到达这一步[,2,3,4,5,,] 通过妈妈的列表进行迭代可能对我来说是可行的。

更新代码

0 投票
4 回答
214 浏览

python - Python-删除项目

我想从名为 mom 的列表中删除项目。我还有另一个列表,叫做 cut

我如何从妈妈那里删除除零之外的内容?

我想要的结果是

0 投票
1 回答
74 浏览

artificial-intelligence - 需要帮助构建遗传算法的染色体

我需要使用遗传算法设计一个时间表问题。该问题的参数是: 教师:8 学科:16 教室:4 天数:5 时隙:5

染色体结构应该是什么?