MiniZinc简单TSP模型输出两条最优路径问题咨询
问题分析与解答
为什么会出现两个路径结果?
你看到的两个结果并非都是最优解,MiniZinc IDE默认会输出求解器在优化过程中每一个找到的改进型可行解,直到最终收敛到最优解:
- 第一个结果(1533km)是求解初期找到的可行解,它满足所有约束,但总距离不是最小;
- 第二个结果(1433km)才是真正的最优解,它的总距离更小,且输出末尾的
==========标记表示求解已完成,找到全局最优。
你的模型是否有错误?
模型本身没有问题,核心约束都正确:
alldifferent([tour[i] | i in 1..n])确保所有城市仅被访问一次;tour[1] == start_city和tour[n+1] == start_city保证路径从A出发并回到A;- 总距离的计算逻辑
sum(i in 1..n) (dist[tour[i], tour[i+1]])正确累加了每一段路径的距离。
如何只输出最优解?
如果不想看到中间过程的可行解,可以修改MiniZinc IDE的运行设置:
- 打开「Run Configuration」;
- 找到「Show intermediate solutions」选项并取消勾选;
- 重新运行模型,就只会输出最终的最优解。
内容的提问来源于stack exchange,提问作者Marcus J S Pereira
相关产品推荐
相关产品推荐

