我一直在进行一个行程计划项目,却在想出一种在某些约束条件下可以工作的最佳计划/路径计划算法的麻烦,也就是说,路径必须在给定的时间停在特定的节点上。我已将问题陈述构建如下:
一个行程具有开始和结束时间(t s 和t e ),并且由活动{a 1 ”组成。 .a n }。每个活动a i 具有开始时间t i 和持续时间d i 。第一个活动不一定必须从t s 开始。
此外,每个活动之间都有旅行成本。我用邻接矩阵C表示旅行成本,其中C [i] [j]是从a i 到a j 的旅行成本。
这是棘手的地方。有一个这样的活动a f ∈{a 1 ... a n },使得t f 为已修复-活动必须在时间t f 开始。同时,我们希望尽可能减少旅行时间。我知道有找到最短哈密顿路径的算法,我已经利用它来找到最佳顺序。当最佳顺序不允许固定活动在其所需时间开始时,就会出现问题,因为它与行程的开始/结束时间相冲突。
是否有一种有效的算法来找到仍然满足活动a f 约束的最优顺序?
节点数不会超过6或7。因此,我不太担心运行时的增长,但仍希望尽可能避免蛮力搜索。
答案 0 :(得分:0)
我假设我们可以在tf之前到达af,否则取决于输入内容,解决方案可能存在或可能不存在。
所以我认为可以通过将问题分解为两个使成本从(a1到af)和(af到a)最小化的问题来完成。我们将有限制在tf之前或tf达到af。由于af的时间是固定的,因此我们将始终从tf + df的时间开始从af到a的路径。因此,我们现在必须找到可以借助Dijkstra Algorithm找到的最短路径。