遗传算法 - 路径的交叉和变异算子

2024-02-18

我想知道是否有人知道图中路径的直观交叉和变异运算符?谢谢!


问题有点老了,但问题似乎没有过时或解决,所以我认为我的研究仍然可能对某人有帮助。

就 TSP 问题而言,突变和交叉是相当微不足道的,在最短路径或最优的情况下,每个突变都是有效的(即因为染色体代表访问固定节点的顺序 - 交换顺序总是可以创建有效的结果)路径,其中染色体是精确的路径表示,这不适用并且不是那么明显。以下是我如何使用遗传算法解决最佳路径问题。

For 交叉,有几个选项:

  1. 对于有至少有一个共同点点(除了开始和结束节点) - 找到所有公共点并在交叉点交换子路线

    家长 1:51 33 41 7 12 91 60

    家长2:51 9 33 25 12 43 15 60

    潜在的交叉点是33 and 12。我们可以得到以下孩子:51 9 33 41 7 12 43 15 60 and 51 33 25 12 91 60这是使用这两个交叉点进行交叉的结果。

  2. 当两条路线没有共同点,从每个父点中随机选择两个点并将它们连接起来(您可以使用随机遍历、回溯或启发式搜索,如 A* 或波束搜索)。现在这条路径可以被视为交叉路径。为了更好地理解,请参见下图两种交叉方法:

    see https://i.stack.imgur.com/BPjyf.png https://i.stack.imgur.com/BPjyf.png Img

    黑色和灰色路径是父路径,粉色和橙色路径是 小朋友们,绿点是交叉点,红点是起点 和结束节点。第一张图显示了第一种交叉类型,第二张图是另一种类型的示例。

For mutation,选项也很少。一般来说,交换节点顺序或添加随机节点等虚拟突变对于平均密度的图来说实际上是无效的。因此,以下是保证有效突变的方法:

  1. 从路径中随机取出两个点,并将它们替换为这两个节点之间的随机路径。

    染色体:51 33 41 7 12 91 60,随机点:33 and 12,然后之间的随机/最短路径:33 29 71 12,突变染色体:51 33 29 71 12 91 60

  2. 从路径中找到随机点,将其删除并连接其邻居(与第一个非常相似)

  3. 从路径中找到随机点并找到到其邻居的随机路径

  4. 尝试从某个随机选择的点开始遍历路径,直到到达初始路线上的任何点(对第一种方法稍作修改)。

    see https://i.stack.imgur.com/nbrQ5.png https://i.stack.imgur.com/nbrQ5.png enter image description here

    每个图以适当的顺序对应于每个突变方法。在上一个示例中,橙色路径将替换突变点(绿色节点)之间的原始路径。

Note:这种方法显然可能在这种情况下存在性能缺陷,当寻找替代子路径(使用随机或启发式方法)时会卡在某个地方或找到非常长且无用的子路径,因此请考虑限制突变执行时间或试验次数。

对于我的情况,即寻找一条最大化顶点权重总和同时保持节点权重总和小于给定界限的最佳路径,这些方法非常有效并且给出了良好的结果。如果您有任何疑问,请随时提问。另外,对我的 MS Paint 技能感到抱歉;)

Update

一个重要提示:我在实现中基本上使用了这种方法,但是使用随机路径生成有一个很大的缺点。我决定切换到使用最短路径遍历随机选取点的半随机路线生成 - 它更有效(但显然可能不适用于所有问题)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

遗传算法 - 路径的交叉和变异算子 的相关文章

  • WPF 路径:如何在 XAML 中绘制它?

    我想创建一个带有非矩形标题的自定义 GroupBox 如下图所示 正如你所看到的 标题的内容必须是可参数化的 因此可以在xaml中输入图像 标题和背景 提前致谢 谢谢您的回答 实际上我想在自定义组框中使用这个设计 所以在你的答案中 如果我不
  • Haskell,堆栈:找到可执行文件

    我正在寻找类似的东西 stack whereis hasktags where whereis行为或多或少类似于 UNIXwhereis命令 hasktags是这样运行的 stack exec hasktags stack exec whe
  • 如何在 Jenkins 声明式管道中设置 PATH

    在 Jenkins 脚本化管道中 您可以像这样设置 PATH 环境变量 node git url https github com jglick simple maven project with tests git withEnv PAT
  • 将构建参数传递给 .wxs 文件以动态构建 wix 安装程序

    我是一名学生开发人员 我已经为我现在工作的公司构建了几个安装程序 所以我对WIX还是比较熟悉的 我们最近决定拥有一个构建服务器来自动构建我们的解决方案 它构建调试和发布以及混淆 和非混淆 项目 你真的不需要理解这些 您需要了解的是 我有相同
  • ruby rspec 不能与 simplecov 一起使用

    我安装了 simplecov gem 并添加了 require simplecov SimpleCov start 到spec helper rb文件 现在如果我在some file spec rb文件中包含spec helper rb并尝
  • 如何在 TypeScript React 项目中使用 eslint import 插件启用绝对路径别名?

    我已经安装了eslint plugin import到我的项目 我的目标是使用 import no relative parent imports error 设置禁止在我的项目中进行相对导入以增强可读性 但是 此设置会在我的项目中产生错误
  • 从子域中的 ../ 路径

    假设我创建了一个子域 http subdomain mydomain com http subdomain mydomain com 最初是在这个网址 http mydomain com subfolder folder http mydo
  • Android Studio 使用的默认 Android SDK 路径是什么?

    使用Android Studio下载Android SDK时 默认下载路径是什么 我有兴趣了解 Linux Mac 和 Windows 的路径 在网上搜索了一下 好像是这样的 Linux Android Sdk Mac Library An
  • 如何让 Python 找到 ffprobe?

    I have ffmpeg and ffprobe安装在我的 mac macOS Sierra 上 并且我已将它们的路径添加到 PATH 中 我可以从终端运行它们 我正在尝试使用ffprobe使用以下代码获取视频文件的宽度和高度 impor
  • Magento 路由器 URL - 需要连字符的路径名称

    假设我使用自定义控制器 其 url 路径 前端名称为 customcategory 好吧 显然如果我有一个名为 TestController php 和indexAction的控制器文件 url 路径将是 customcategory te
  • 我想回显 __FILE__ 名称而不带路径。我只想页面名称,例如:index.php

    echo FILE 给我 C EasyPHP DevServer 13 1VC9 data localweb projects FOLDERNAME index php 我只想获取不带路径的文件名 我想单独获取index php 有任何想法
  • “config”脚本存在于系统或 Homebrew 目录之外

    运行 brew doctor 并出现一些错误 我按照此链接中的建议设法解决了路径问题 如何修改 Homebrew 的 PATH https stackoverflow com questions 10343834 homebrew want
  • Yii 框架:控制器/操作 url 和参数

    在我的申请中 我有ApiController with actionUsers 所以在 YII 中路径变成api users 现在为了获取某些用户信息 我使用以下路径api users id 10其中 10 是用户 ID id路径的一部分基
  • 节点未找到全局模块

    所以我意识到这是一个相当通用的标题和问题 但我已经搜索了很多答案 但遗憾的是它们似乎都不适合我 我希望通过我自己提供更多信息 也许有人有一个具体的答案 或者确切地知道将我重定向到哪个答案 我的问题 当我全局安装节点模块时 例如npm ins
  • 如何在 R 中使用别名运行系统可执行文件?

    假设我正在 R 中运行系统命令来运行executable inputfile lt path myfile txt 我该如何更换 path myfile txt在下面的命令中inputfile如下面命令所示 system executabl
  • 嵌套路径和文件集有什么区别?

    我已经在谷歌上搜索 文件集和路径之间的差异 文章有一段时间了 但没有发现任何有用的东西 例如 以下内容有什么区别 比如说 有一个someDir目录 其中包含 jar 文件且没有子目录
  • 如何序列化 android.graphics.Path 对象

    我正在尝试将 Android graphics Path 对象存储在内部设备内存中 有谁知道如何序列化 android graphics Path 对象 另外 还有其他方法来存储 Path 对象吗 谢谢 我这样做的方法是从原始 Path 类
  • 以编程方式从 java 代码中查找 java.exe 的绝对路径

    如果我有一个由用户启动的 java jar 或类文件 假设在环境变量中设置了 java 路径 那么我如何从代码中找出 java exe javaw exe 的绝对路径文件正在启动 就像在 ubuntu 上一样 我们可以运行 which ja
  • 优化计算中使用的 # 个线程的算法

    我正在执行一个操作 我们将其称为CalculateSomeData CalculateSomeData 在连续的 代 中运行 编号为 1 x 整个运行中的代数由CalculateSomeData 的输入参数固定 并且是先验已知的 完成一次生
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex

随机推荐