start_time = time.time() # 循环优化,直到达到优化目标或时间限制为止 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))
时间: 2024-02-10 17:32:54 浏览: 88
AES.rar_Final Rounds_aes 步骤
这段代码是进行CMA-ES算法的循环优化,直到达到优化目标或时间限制为止。其中,`rounds`表示循环的轮数,`solutions`是一个列表,存储了每个个体的解向量和对应的目标函数值。在每次循环中,首先生成一个新的种群,每个个体是一个解向量。然后,对于每个个体,首先对其进行一些限制,例如限制其坐标不能落在某些特定的位置上。接着,计算该个体的目标函数值,并将其存储在`solutions`列表中。最后,在所有个体的目标函数值都计算完毕后,将`solutions`列表中的个体按照目标函数值从小到大排序,然后使用CMA-ES算法更新种群,并判断是否达到了优化目标或时间限制。如果达到了,则退出循环,否则继续进行下一轮循环。
阅读全文