算法:航行计划

Rej*_*ran 5 algorithm math

我需要计划一次航行,将海上n个位置与指定的原点和指定的目的地连接起来,并遵循以下约束.
航程必须触及所有地点.
如果从A到B有预订,则必须在B之前触摸a
.每个位置的花费时间会有所不同(取决于对该位置的预订)
每个位置都有一个工作窗口.如果船只在工作窗口之前到达,则必须等待.
注意:"最小生成树"算法可能不是因为每个端口所需的时间取决于先前的路由(由于工作窗口)
是否有可用的算法?

Mec*_*cki 4

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

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

根据您的情况,您需要对其进行一些修改。通常它只会尝试找到最短路线,只考虑路径。根据您的情况,必须考虑您的工作时间、预订情况以及在某个地点花费的时间。但这些只是“蚂蚁如何旅行”的修改,基本算法保持不变,并且仍然会以相同的方式工作。