java - 使用 Android 应用程序使用模拟退火的最短路径

标签 java android shortest-path simulated-annealing

我正在使用不同的地理坐标实现一个 Android 应用程序,我需要解决类似于旅行推销员的问题。

我在 http://www.theprojectspot.com/tutorial-post/simulated-annealing-algorithm-for-beginners/6 找到了该算法的实现.

我根据需要调整了代码,它产生了理论上的最佳结果。然而,我注意到每次执行都会产生不同类型的结果。

我回到原始代码,发现即使在原始代码中,结果也存在分歧。

不明白。结果不应该是唯一的吗?毕竟,我们正在寻找最小的路径......也许有一些小的变化,但每次执行都与前一次执行有几个单位的差异。

如何调整算法以在所有运行中产生相同的结果?有人用过这个吗?

最佳答案

这就是您为这样的算法付出的代价:每次获得的结果可能都不同。该算法“找到最短路径”,这是一个计算上难以解决的问题(“旅行推销员”)。相反,它寻求快速找到“足够短”的解决方案。它是否真的这样做在很大程度上取决于数据……并且在很大程度上取决于随机机会。

而且,由于该算法相对较快,有时您确实会连续运行几次,以衡量所获得的解决方案的可变性。如果(比如说)三次运行每次产生的结果彼此“足够接近”,那么结果很有可能是可靠的。但如果标准差很大,算法可能不会给你一个好的答案。 (请记住,有时解决方案可能是错误的。)

可以这么说:“一分钱一分货,但你不需要付出太多,这当然就是重点。”

关于java - 使用 Android 应用程序使用模拟退火的最短路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60009861/

相关文章:

algorithm - 寻找第 k 条最短路径?

java - 有没有办法从纯 Java 实现引导 Chef 节点?

java - 如何在 java 中调用带有数组参数的方法?

Android Studio 项目模板

android - 横幅和插页式广告没有显示?

algorithm - 为图中的每个节点计算距离 n 处的未访问节点

java - Appengine 数据存储幻象实体 - 状态不一致?

java - 场景生成器 8.0 和 Intelli。从一个场景到另一个场景

java - 将通知置于分隔线 android java 下方

java - k-最短(替代)路径算法,java实现