Python 创建一个列表,其中包含循环的n个先前迭代的结果

Python 创建一个列表,其中包含循环的n个先前迭代的结果,python,list,for-loop,optimization,Python,List,For Loop,Optimization,这是一个简单的进化算法。循环的每次迭代都会随机置换函数的初始条件,并使用迄今为止找到的最佳解更新下一次迭代的初始条件 为了避免陷入局部最优循环,我希望该算法拒绝等于任何3个(或n个)先前解的解 如何创建这样的列表 for j in range(0, its+1): # Seed initial conditions with best condition thus far. k2, candidate1, candidate2 = k1, best_cond1, best_con

这是一个简单的进化算法。循环的每次迭代都会随机置换函数的初始条件,并使用迄今为止找到的最佳解更新下一次迭代的初始条件

为了避免陷入局部最优循环,我希望该算法拒绝等于任何3个(或n个)先前解的解

如何创建这样的列表

for j in range(0, its+1):
    # Seed initial conditions with best condition thus far.
    k2, candidate1, candidate2 = k1, best_cond1, best_cond2

    # Choose random nodes to swap from current conditions.
    rand_node1, rand_node2 = choice(best_cond1), choice(best_cond2)

    # Swap the nodes to create new candidate lists.
    candidate_list1.append(rand_node2).remove(rand_node1)
    candidate_list2.append(rand_node1).remove(rand_node2)

    # Calculates a solution given the new conditions.
    k2 = cost(candidate_list1, candidate_list2)

    if k2 < k1:
        k1, best1, best2 = k2, candidate1, candidate2
范围(0,其+1)内j的
:
#种子初始条件与迄今为止的最佳条件。
k2,候选1,候选2=k1,最佳条件1,最佳条件2
#选择要从当前条件中交换的随机节点。
随机节点1,随机节点2=选择(最佳条件1),选择(最佳条件2)
#交换节点以创建新的候选列表。
候选列表1.追加(随机节点2).删除(随机节点1)
候选列表2.追加(随机节点1).删除(随机节点2)
#根据新条件计算解决方案。
k2=成本(候选列表1、候选列表2)
如果k2
您可以执行以下操作:

last_three = []
for j in range(1, its + 2):
    ...
    k2 = cost(candidate1, candidate2)
    if k2 in last_three:
        continue
    elif k2 < k1:
        ...
    last_three[(j%3)-1] = k2
last_three=[]
对于范围(1,其+2)内的j:
...
k2=成本(候选1、候选2)
如果k2位于最后三个位置:
持续
elif k2

我必须将循环更改为从
1
开始,以便执行
j%3
操作。

您应该修复代码中的缩进。已修复。对不起,谢谢。这样的办法应该行得通。欣赏这种洞察力。