1

我正在为 C++ 中车辆路由问题的变体开发某种启发式方法。

生成解决方案后,我想绘制此解决方案。解决方案是各种旅行的组合,所有旅行都在一个公共站点开始和结束。因此,我有一个顶点集,其中所有坐标和边由两个顶点 ID 定义。此外,我当然有顶点对之间的所有距离。

在我的程序的额外窗口打开中绘制它会很有帮助,但是将绘图写入图形文件也应该没问题。

有什么简单的方法来绘制这个?你会如何解决这个问题?

首先,我尝试寻找常见的图形可视化包(graphviz、tulip、networkx (python)),但我意识到它们都专门用于图形布局(当没有坐标时)。当我错的时候纠正我。我不知道是否可以告诉这些包我已经有了坐标,帮助布局算法。

我尝试的下一件事是带有 geomview 输出的 CGAL 库-> 直到现在都没有运气-> ubuntu 崩溃 geomview。

还有一个问题:使用一些冒着绘图风险的非布局 2d-plot-libraries 是一个更好的主意,这不是很好查看(除了缩放还有更多的事情要做吗?)或使用一些布局算法-基于库(例如graphviz,tulip,networkx),向它们提供顶点之间的距离,并希望布局算法在以易于查看的方式绘制时保持距离?

  • 如果非布局绘图是这样做的方法:您推荐哪个库?
  • 如果基于布局的绘图是这样做的方法:我如何利用这些库中的距离/坐标?你推荐哪个图书馆?

感谢您的输入!

萨沙

编辑:我使用 PLplot 库 (http://plplot.sourceforge.net/) 完成了原型实现。结果很好,目前应该足够了。我发现并选择了这个库是因为一个相关的项目(VRPH 软件包/Groer)使用了这个图并且源代码被分发了。因此,实施是在很短的时间内完成的。在我看来,API 有点笨拙和低级。也许那里有一些更现代的(可能不是基于 c 的库)库?数学GL?迪斯林?也许我也会尝试一下。

在车辆路线问题中绘制多个旅行的好处是“还不错”的算法倾向于发现很好的非重叠和发散的旅行,这对眼睛非常有益;-)

4

2 回答 2

2

目前尚不清楚您要存档的内容,但如果我正确理解您的问题,那么您可以使用 OpenGL 来完成。拥有顶点坐标,应该相当容易。

于 2010-11-01T16:44:05.980 回答
0

您可以将 Gnuplot 与包含您的解决方案的输入文本文件一起使用。画点(顶点)然后画线(代理路径)比链接它们更方便。为了简化绘图脚本,如果车辆数量已知,您可以为每辆车创建一个单独的文件。退房: http ://www.cleveralgorithms.com/nature-inspired/advanced/visualizing_algorithms.html

于 2014-05-20T03:35:37.767 回答