Algorithm 算法:航次规划

Algorithm 算法:航次规划,algorithm,math,Algorithm,Math,我需要计划一次航行,将海上n个地点连接到指定的起点和指定的目的地,并受以下限制。 航程必须到达所有地点。 如果从a到B有预订,则必须在B之前触摸a 每个地点花费的时间各不相同(取决于对该地点的预订) 每个位置都有一个工作窗口。如果容器在工作窗口之前到达,则必须等待。 注意:“最小生成树”算法可能不适用,因为每个端口所需的时间取决于之前的路由(由于工作窗口) 有什么算法可以解决这个问题吗?参见似乎是最有名的解决方案。注意,这实际上是一个NP完全问题。这意味着验证解决方案是否正确“很容易”,但“很难

我需要计划一次航行,将海上n个地点连接到指定的起点和指定的目的地,并受以下限制。
航程必须到达所有地点。
如果从a到B有预订,则必须在B之前触摸a
每个地点花费的时间各不相同(取决于对该地点的预订)
每个位置都有一个工作窗口。如果容器在工作窗口之前到达,则必须等待。
注意:“最小生成树”算法可能不适用,因为每个端口所需的时间取决于之前的路由(由于工作窗口)
有什么算法可以解决这个问题吗?

参见似乎是最有名的解决方案。注意,这实际上是一个NP完全问题。这意味着验证解决方案是否正确“很容易”,但“很难”找到它。找到“最佳”解决方案的唯一方法是尝试所有可能的解决方案,比较结果并选择最佳方案。当然,如果你想在合理的时间内解决这个问题,那是不可接受的

蚁群算法将找到一个很好的解决方案,接近最优。我说的很接近,因为它不能保证总是找到最好的。可能存在更好的解决方案。然而,通常没有必要真正找到可能的最佳解决方案,一个“非常好”的解决方案就可以了,这里ACO正是您所寻找的。它可以在合理的时间间隔内找到解决方案,而且解决方案肯定是好的


在您的情况下,您需要稍微修改它。通常它只会尝试寻找最短的路径,只考虑路径。在您的情况下,它必须考虑到您的工作窗口、预订和在某个地点花费的时间。但是,这些只是对“蚂蚁如何旅行”的修改,基本算法保持不变,仍然可以工作。

这是一个旅行商问题,修改后添加了工作窗口约束。。。这意味着这个问题的解决方案将比标准的旅行推销员问题更难找到

我有几种方法可以给出近似的解决方案

  • (例如,随机行走)

  • 我不知道这是否适用于你的问题,恕我直言,它不适用,但偶尔也可以用于解决棘手的问题。

    在这个问题上有很多工作要做。它有不同的名字

  • 具有时间窗和优先约束的旅行商(车辆路径)问题
  • 提货和交货问题
  • 关于这个问题有很多研究,很多都是在运筹学方面。这个问题一般来说是NP难的,所以你描述的问题的一般精确解是不实用的,但是你的具体问题可能有好的、精确的或近似的解。最好的算法是数据的函数

    • 你的数据集有多大。如果“n”相对较小(30-100),则有可能得到具有的精确解
    • 时间窗口和优先级约束有多紧。如果在任何时间窗口中访问的可能位置的数量很小,那么像动态规划这样的解决方案是可能的
    • 如果找不到特殊情况,那么可能需要将启发式构造算法与局部搜索后处理器相结合。一个简单的替代方法是所谓的启发式,即
    • 以现有的构造启发法为例
    • “随机化”是指多次运行将为您提供多种解决方案
    • 多次运行随机版本
    • 采取最有效的解决方案

    它是否处理工作窗部件?工作窗口意味着边缘的重量取决于到边缘的路线。谢谢。听起来很有希望。让我算算,看看进展如何。顺便问一下,有没有可用的伪代码?这不是NP问题。您正在寻找最短时间的解决方案。正确的术语是NP难的。