Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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
Algorithm 由2名运输员提供的最短交货时间_Algorithm_Graph Algorithm_Dijkstra_Shortest Path_Partition Problem - Fatal编程技术网

Algorithm 由2名运输员提供的最短交货时间

Algorithm 由2名运输员提供的最短交货时间,algorithm,graph-algorithm,dijkstra,shortest-path,partition-problem,Algorithm,Graph Algorithm,Dijkstra,Shortest Path,Partition Problem,我正在处理一个算法问题。我有一个已知的带有单个中心节点的图算法。目的是通过两个运输者将货物从这个中心节点运送到其他指定节点。每个运输机一次最多可以运送一个单位的货物,因此在每个节点访问之后,它们会返回到中心节点进行下一次访问。我应该计算出做这件事的最短时间 我的方法是使用中心节点查找到所有其他节点的最短路径,考虑到节点之间的不同距离。然后对于传输程序应该到达的所有节点(有时甚至不止一次到达特定节点),由于来回的距离,我将值加倍。我将值分为两组,两组值的总和尽可能接近,因为有两个传输函数,并打印出

我正在处理一个算法问题。我有一个已知的带有单个中心节点的图算法。目的是通过两个运输者将货物从这个中心节点运送到其他指定节点。每个运输机一次最多可以运送一个单位的货物,因此在每个节点访问之后,它们会返回到中心节点进行下一次访问。我应该计算出做这件事的最短时间

我的方法是使用中心节点查找到所有其他节点的最短路径,考虑到节点之间的不同距离。然后对于传输程序应该到达的所有节点(有时甚至不止一次到达特定节点),由于来回的距离,我将值加倍。我将值分为两组,两组值的总和尽可能接近,因为有两个传输函数,并打印出一个更大的


然而,解决方案似乎并不完美。我需要另一个东西来构建它。如果第一个运输机知道他结束工作,比如说提前8个单位,他可以在交付过程中为途中的第二个运输机准备一个货物,这样他就不必在中心节点之前来取,但要少一点。那么它们的总时间将相等,但考虑到两者都较短。不幸的是,这并不总是可能的(例如,只有一次传递到一个节点等)。我需要将这一方面添加到我的程序中。

实际上,您正在处理一个“车辆路径”问题,我们可以通过一些方法(如启发式或构造性方法)来解决它


你可以找到一些有用的方法(我希望如此)。

你有没有一个完整的例子,说明需要这种方法来达到最佳时间?我想到了这个简单的方法。假设他们需要从中心1向节点2、3、3交付三种货物。根据我的解决方案,他们的时间是16,12。在更好的解决方案中,第一个在节点3的方向携带项目5单元,让它到那里,回到中心并处理节点2。第二个任务首先处理节点3,然后完成另一个节点3任务。两者的次数都是14。问题是如何确定在所有可能的情况下,对于给定的已知图,这种优化是可能的。两个传输程序是否需要返回到最末端的中心节点?如果没有,您可以通过让他们最后提供远距离节点来节省时间。这是一个车辆路径问题,在引擎盖下,这需要一个成本矩阵,例如通过Dijkstra算法从路由引擎计算得出。这两个问题都可以通过开源软件解决,对于车辆路径软件,请参见jsprit:对于路径引擎,请参见(注意:我参与了构建这些东西)