【问题标题】:Shortest path using Simulated Annealing using an Android app使用 Android 应用程序使用模拟退火的最短路径
【发布时间】:2020-01-31 19:05:18
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 向我们展示代码。
  • 您了解simulated annealing 的工作原理吗?根据定义,它是一种近似算法。
  • @BlueRaja-DannyPflughoeft 我正在阅读。我希望使用相同的数据集,它会产生相同的结果。显然,我的假设是错误的。

标签: java android shortest-path simulated-annealing


【解决方案1】:

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

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

可以这么说:“你得到你付出的代价,但你付出的并不多,这当然是重点。”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    相关资源
    最近更新 更多