我正在为 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?迪斯林?也许我也会尝试一下。
在车辆路线问题中绘制多个旅行的好处是“还不错”的算法倾向于发现很好的非重叠和发散的旅行,这对眼睛非常有益;-)