怎样解决这个问题,让 solutions 中包含所有迭代下的解和解向量
时间: 2024-03-12 18:44:31 浏览: 38
要解决这个问题,可以将 solutions 列表的定义挪到 while 循环的外面,然后在每次迭代中,将新生成的解向量和其对应的目标函数值添加到 solutions 列表中。这样就可以将所有迭代下的解和解向量都保存在 solutions 列表中了。
修改后的代码示例:
```
solutions = []
while True:
for _ in range(optimizer.population_size):
x = optimizer.ask()
value = quadratic(x[0], x[1], x[2], x[3])
solutions.append((x, value))
optimizer.tell([(x, value)])
elapsed_time = time.time() - start_time
print('优化值:', solutions[-1][1])
print('X坐标:', solutions[-1][0][0])
print('Y坐标:', solutions[-1][0][1])
print('靶点位置:', solutions[-1][0][2])
print('射孔厚度:', solutions[-1][0][3])
print('迭代轮数:', len(solutions))
if elapsed_time > timeout:
break
```
在这个示例代码中,我们将 solutions 列表的定义放在 while 循环的外面,并在每次迭代中将新生成的解向量和目标函数值添加到 solutions 列表中。在打印结果时,我们使用 solutions 列表中最后一个元素的值来获取当前的优化值、X 坐标、Y 坐标、靶点位置、射孔厚度和迭代轮数。这样就可以将所有的解向量和解都保存到 solutions 列表中了。
阅读全文