问题标签 [genetic-algorithm]
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.
algorithm - 为什么将交叉添加到我的遗传算法中会给我带来更糟糕的结果?
我已经实施了遗传算法来解决旅行商问题(TSP)。当我只使用突变时,我会找到比添加交叉时更好的解决方案。我知道普通的交叉方法不适用于 TSP,所以我同时实现了有序交叉和PMX 交叉方法,但结果都不好。
以下是我正在使用的其他参数:
突变:单交换突变或反向子序列突变(如 Tiendil 所述),突变率测试在 1% 和 25% 之间。
选择:轮盘赌选择
健身功能:1/行程距离
人口规模:测试了 100、200、500,我也运行了 GA 5 次,这样我就有了各种起始人口。
停止条件:2500代
对于相同的 26 点数据集,我通常使用具有高突变率的纯突变得到大约 500-600 距离的结果。添加交叉时,我的结果通常在 800 距离范围内。另一个令人困惑的事情是,我还实现了一个非常简单的爬山算法来解决这个问题,当我运行 1000 次(比运行 GA 5 次更快)我得到大约 410-450 距离的结果,我希望使用 GA 获得更好的结果。
关于为什么我添加交叉时我的 GA 表现更差的任何想法?为什么它的性能比简单的爬山算法差得多,因为一旦找到局部最大值就无法探索,它应该卡在局部最大值上?
c# - C#如何创建在运行时解释的函数
我正在制作一个遗传程序,但我遇到了 C# 的限制,我想向算法展示新功能,但如果不重新编译程序就无法做到。本质上,我希望程序的用户提供允许的功能,GP 会自动使用它们。如果要求用户尽可能少地了解编程,那就太好了。
我想插入新功能而不将它们编译到程序中。在 Python 中这很容易,因为它都是解释的,但我不知道如何用 C# 来做。有人知道如何在 C# 中实现这一点吗?是否有任何库、技术等?
matlab - 在 MATLAB 中使用遗传算法自动生成测试数据
我正在做我的软件测试项目。遗传算法是我想用来在 MATLAB 中生成自动测试数据\测试用例的技术。
请帮助我成功完成我的项目。
genetic-algorithm - 将遗传算法应用于旅行商时的一个细节问题
我阅读了有关此的各种资料并了解所涉及的原理和概念,但是,没有一篇论文提到如何计算涉及不直接连接的相邻城市(在染色体中)的染色体(代表一条路线)的适应度的细节由一条边(在图中)。
例如,给定一条染色体 1|3|2|8|4|5|6|7,其中每个基因代表一个城市在图/地图上的索引,我们如何计算它的适应度(即总和行进的距离)如果,比如说,城市 2 和 8 之间没有直接的边缘/链接。我们是否遵循某种贪心算法来计算出 2 和 8 之间的路线,并将这条路线的距离加到总距离中?
在将 GA 应用于 TSP 时,这个问题似乎很常见。有做过的朋友请分享一下经验。谢谢。
language-agnostic - 遗传编程在线学习
有没有人看到过使用在线学习而不是标准的离线学习来实施全科医生?我已经用基因程序做了一些事情,但我根本不知道什么是使学习过程在线的好方法。
如果您有任何想法、看到任何实现或有任何我可以查看的参考资料,请告诉我。
algorithm - 旅行商问题约束表示
我阅读了几篇关于如何使用遗传算法和蚁群优化等解决 TSP 的文章和示例代码。但我发现的所有内容都不包括时间(窗口)约束,例如。“我必须在上午 12 点之前到达客户 x)”并假设对称。
有人可以向我指出一些示例代码或文章的方向,这些示例代码或文章解释了如何向 TSP 添加约束以及如何在代码中表示这些约束。
谢谢!
algorithm - 最佳拟合调度算法
我正在编写一个具有困难编程问题的调度程序。有几个事件,每个事件都有多个会议时间。我需要找到一个会议时间安排,以便每个日程安排只包含一次任何给定的事件,使用每个事件的多个会议时间之一。
显然我可以使用蛮力,但这很少是最好的解决方案。我猜这是一个相对基本的计算机科学问题,一旦我能够开始学习计算机科学课程,我就会了解这个问题。与此同时,我更喜欢任何我可以阅读的链接,甚至只是一个我可以谷歌的名字。
algorithm - 如何解决这个组合算法问题
我有些N
人必须每个人都参加T
考试。每项考试都需要“一些”时间,例如 30 分钟(没有提早完成这样的事情)。考试必须在考官面前进行。
我需要安排每个人在整个时间段内在考官面前参加每项考试,但要避免午休,在最短的时间内使用最少数量的考官(即没有/最少的考官空闲)
有以下限制:
- 一个人不能同时在两个地方
- 每个人必须参加一次考试
- 任何人都不应该被同一位考官检查两次
我意识到最佳解决方案可能是 NP 完全的,并且我可能最好使用遗传算法来获得最佳估计(类似于此?座位计划软件建议(这样的野兽甚至存在吗?))。
我对遗传算法的工作方式感到满意,我正在努力解决的是如何以编程方式对问题进行建模,以便我可以通过遗传方式操纵参数。
如果每次考试花费相同的时间,那么我会将时间段划分为这些长度,并简单地创建一个时间段与考官的矩阵并将候选人放入。但是因为每次测试的时间不一定是同样,我对如何解决这个问题有点迷茫。
目前我正在这样做:
- 列出每个考生和考试之间需要进行的所有“测试”
- 从有多少考试开始就有多少考官
- 重复循环遍历所有考官,每个考官:找到一个符合考官资格的计划外测试(基于限制)
- 继续,直到所有可以安排的测试,
- 如果有任何计划外的考试,请增加考官人数并重新开始。
我正在寻找有关如何解决此问题的更好建议,因为目前感觉相当粗糙。
genetic-algorithm - 初始遗传编程参数
我在大学里做了一点 GP(注意:很少)工作,最近一直在玩它。我的问题是关于初始运行设置(种群大小、世代数、树的最小/最大深度、初始树的最小/最大深度、用于不同复制操作的百分比等)。设置这些参数的正常做法是什么?人们将哪些论文/网站用作良好的指南?
c++ - 如何选择整数线性规划求解器?
我是整数线性规划的新手。我计划使用整数线性规划求解器来解决我的组合优化问题。我更熟悉 IDE 上的 C++/面向对象编程。现在我大部分时间都在使用带有 Cygwin 的 NetBeans 来编写我的应用程序。
请问是否有适合我的易于使用的 ILP 求解器?还是取决于我要解决的问题?我正在尝试做一些资源映射优化。如果需要任何进一步的信息,请告诉我。
非常感谢你,卡西。