回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>因此,在我的第一次改进局部搜索的方法中,我遇到了一个我似乎无法前进的点。if语句和变量赋值让我抓狂。当我用指纹“调试”它时,我无法看到发生了什么,我需要有人来解释这件事。在</p>
<pre><code>def main():
start = time.time()
matrix = [[5, 3], [2, 7], [9, 1], [0, 6], [8, 4]]
initial = [3, 1, 4, 5, 2]
combs = [[0, 1], [0, 2], [0, 3], [0, 4], [1, 2],[1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
i = 0
while time.time() - start < 1:
best = initial
while i < 5:
sol = best
fBest = fMax(best, matrix)
sol[combs[i][0]], sol[combs[i][1]] = sol[combs[i][1]], sol[combs[i][0]]
fCurrent = fMax(sol, matrix)
if fCurrent < fBest:
best = sol
i = 0
continue
i = i + 1
print(best)
return best
</code></pre>
<p>它的输出是一个无限循环,在这个循环中,best变量会奇怪地更新。在</p>
<p>似乎错误在于<code>sol</code>和{<cd2>}。我需要他们是新的,独立的名单。在</p>