Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从理想到现实。Dijkstra物流公司_C#_Graph_Dijkstra_Logistics - Fatal编程技术网

C# 从理想到现实。Dijkstra物流公司

C# 从理想到现实。Dijkstra物流公司,c#,graph,dijkstra,logistics,C#,Graph,Dijkstra,Logistics,我有一个运输公司的程序,由Dijkstra计算最佳路线。城市作为顶点,路线作为边。找到边的权重。我用线把地图上的城市连接起来并测量它。然后我接受它作为边缘的重量。但在现实生活中,道路并不笔直。那我该怎么修呢 在我的项目中,我必须通过创建软件来解决物流问题。谁能告诉我该解决什么问题吗?正如你们已经发现的,这个问题并不像看上去那个样简单。 首先,只连接主要城市是个坏主意,因为它们可能没有直接与高速公路相连(如果不是美国或其他地方) 这是您当前的想法: 我的建议是尝试以各种方式获取每个小城市,并将其

我有一个运输公司的程序,由Dijkstra计算最佳路线。城市作为顶点,路线作为边。找到边的权重。我用线把地图上的城市连接起来并测量它。然后我接受它作为边缘的重量。但在现实生活中,道路并不笔直。那我该怎么修呢


在我的项目中,我必须通过创建软件来解决物流问题。谁能告诉我该解决什么问题吗?

正如你们已经发现的,这个问题并不像看上去那个样简单。 首先,只连接主要城市是个坏主意,因为它们可能没有直接与高速公路相连(如果不是美国或其他地方)

这是您当前的想法:

我的建议是尝试以各种方式获取每个小城市,并将其添加为Dijkstra的顶点:

现在,我们可以看到现实世界中究竟存在哪种方式。从我们的图表来看,我们可能认为使用底部路径应该更有效。但如果我们发现了这一点:

现在我们可以很容易地得出结论,上面的路径实际上要好得多,因为你可以达到底部路径速度的两倍。 这是非常精确的分类吗?不,不是。 我们可能需要考虑每条道路上的流量,并动态更改边的权重。但这对于您的基本实现来说可能太多了

最后我要做的是想一想,我几乎可以独自或在几乎没有帮助的情况下收集哪些数据。 因此,我绝对可以:

  • 以某种方式废弃一些关于从A点到达B点的实际方式的数据;好的推荐信是或
  • 沿途聚集小城市,从A点到B点寻找现实世界的道路
  • 试着找出限速在哪里(如果有数据库的话)
事实上,你可能想进入
谷歌地图
必应地图
中,让它们为你提供最好的道路。 他们都有你需要的任何道路的真实数据。 你不可能像他们那样收集那么多的数据。 如果你觉得这是你能做到的,那么你的一切都在盘中


如果不是,我会选择混合方式——从任何maps API获取一些重要数据,然后将其用于我的
Dijkstra
算法,然后使用这些数据编写一个简单的算法,用于根据可能的修改器(速度限制、API提供的流量等)测量每条边的实际重量.

正确执行此操作的唯一方法是从现实数据库中获取每条道路的路径。真正的道路是曲线,曲线是由许多由边连接的顶点构成的。:)