Algorithm 你怎么知道你已经接近解决方案了?

Algorithm 你怎么知道你已经接近解决方案了?,algorithm,artificial-intelligence,simulated-annealing,n-queens,Algorithm,Artificial Intelligence,Simulated Annealing,N Queens,我搜索过了,但没有找到答案 我正在尝试使用Java实现的模拟退火SA算法来解决8皇后之谜,更具体地说是N皇后之谜,但在目标函数方面我有点卡住了。我如何知道我是否接近我的目标-最优解决方案 我想出了两种给尝试打分的方法,得分越多,尝试就越好: 董事会上有多少女王 董事会中有多少女王是合法的+下一位女王可获得的合法席位数量 但我不能决定这些是否好。你们能给我一些提示或其他信息吗 距离解决方案的距离通常定义为相互攻击的皇后数量 模拟退火的一种方法是随机放置所有皇后,然后选择一个被攻击的随机皇后,并将其

我搜索过了,但没有找到答案

我正在尝试使用Java实现的模拟退火SA算法来解决8皇后之谜,更具体地说是N皇后之谜,但在目标函数方面我有点卡住了。我如何知道我是否接近我的目标-最优解决方案

我想出了两种给尝试打分的方法,得分越多,尝试就越好:

董事会上有多少女王

董事会中有多少女王是合法的+下一位女王可获得的合法席位数量


但我不能决定这些是否好。你们能给我一些提示或其他信息吗

距离解决方案的距离通常定义为相互攻击的皇后数量

模拟退火的一种方法是随机放置所有皇后,然后选择一个被攻击的随机皇后,并将其移动到同一行的随机列中

而不是一个接一个地放置它们

这不就是随机解吗

没有

我们选择了一个随机的移动,但是这个移动实际发生的概率取决于这个移动有多好以及我们离解决方案有多近

一个好的移动总是会发生,但是,如果它是一个坏的移动,移动实际发生的概率从高开始,但随着我们越来越接近解决方案,概率会越来越低。所以,仍然有可能做出错误的举动,所以它最终会走出一个错误的位置,但总体而言,它主要是尝试做出正确的举动

这是其背后的基本思想——它有一个与到溶液的距离相关的“温度”概念——随着温度降低,它越接近溶液,做出错误动作的概率就越小

为什么不在我们离解决方案越来越近的时候选择最好的方法呢

这也会起作用,只要仍然有机会选择一个糟糕的动作,尽管我不确定这是否仍然会被归类为模拟退火,或者这是否会导致一个性能解决方案——在每一步分析所有动作都会相当昂贵


需要有一个坏的移动的机会,因为有时你需要远离局部最优,比如说只有两个皇后在互相攻击,但你不能直接从那里得到解决方案,而最好的移动的相反方向将是下一步的最佳移动。

我不确定“接近”在这里定义得很好。考虑到所有你可以把连续的皇后放在一棵树上的地方,你可以建立一个相当深的分支,这是一个完全错误的分支。这可能会发生在其他算法中,你可能会非常接近,但离解决方案还有很长的路要走


更严格地说,我想知道你是否缺乏解决问题的适当方法;i、 例如,一个满足链接中给出的四个属性的属性,这为您提供了一个可靠的方法来定义接近的属性

模拟退火是解决这个问题的一种众所周知的方法“接近”并没有精确定义,但它的定义足以让模拟退火工作。@Dukeling SA当然可以解决这个问题——但这与问题无关。它不承认它与解决方案的距离有多近,但SA能够解决问题这一事实正是我的观点——在SA算法中使用的任何度量都大致相当于您与解决方案的距离。不管你是否同意这一点,问题是关于SA的,你似乎忽略了它。这是一幅显示模拟退火如何解决4个皇后的图像。在每个州,分数=分数都会显示出来,就像杜克林所说的那样,这是可以互相攻击的成对皇后的数量。在任何一个州,所有的女王都在董事会中,每个女王都在自己的专栏中。起始状态通常为随机或第一行上的所有皇后。