将这段代码添加至上述我提供的代码中
时间: 2024-03-10 18:44:33 浏览: 23
好的,你可以将获取最优解信息的代码添加到循环结束的位置,如下所示:
```
# 循环优化,直到达到优化目标或时间限制为止
best_solution = None
best_obj_value = float('inf')
rounds = 0
while True:
# 生成一个新的种群,每个个体是一个解向量
rounds += 1
solutions = []
for _ in range(optimizer.population_size):
x = optimizer.ask()
x[0] = int(x[0])
x[1] = int(x[1])
if (x[0] == 1 and x[1] in [1, 51]) or (x[0] == 51 and x[1] in [1, 51]) or (x[0] == 26 and x[1] == 26):
pass
else:
value = quadratic(x[0], x[1], x[2], x[3])
if (x[0] == 1 and x[1] in [1, 51]) or (x[0] == 51 and x[1] in [1, 51]) or (x[0] == 26 and x[1] == 26):
pass
else:
solutions.append((x, value))
if len(solutions) != optimizer.population_size:
# 随机生成一些解向量,补足不足的部分
while len(solutions) < optimizer.population_size:
x = [random.randint(Min_pump_zcjj, Max_pump_zcjj),
random.randint(Min_pump_bdljd, Max_pump_bdljd),
random.uniform(Min_pump_bdwz, Max_pump_bdwz),
random.uniform(Min_pump_skhd, Max_pump_skhd)]
value = quadratic(x[0], x[1], x[2], x[3])
solutions.append((x, value))
# 计算每个个体的目标函数值,并存储在solutions列表中
optimizer.tell(solutions)
# 计算当前已经优化的时间
elapsed_time = time.time() - start_time
# 判断是否达到优化目标或时间限制
if elapsed_time > timeout:
break
if optimizer.best[1] < best_obj_value:
best_obj_value = optimizer.best[1]
best_solution = optimizer.best[0]
# 获取最优解信息
best_solution, best_obj_value = optimizer.result
# 输出最优解和最优解下的x[0], x[1], x[2], x[3]
print('最优解:', best_solution)
x0, x1, x2, x3 = best_solution
print('x[0]:', x0)
print('x[1]:', x1)
print('x[2]:', x2)
print('x[3]:', x3)
```