# 循环优化,直到达到优化目标或时间限制为止best_solution = Nonebest_obj_value = float('inf')rounds = 0while 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_solutionprint('x[0]:', x0)print('x[1]:', x1)print('x[2]:', x2)print('x[3]:', x3)
时间: 2024-04-26 10:20:59 浏览: 58
Obj_tracking_MAT_code.rar_obj_特征跟踪_目标跟踪_目标跟踪算法_跟踪 特征
这段代码是一个优化算法的主体部分,使用了一种叫做遗传算法的方法。其中,循环优化的过程中每次生成一个新的种群,每个个体是一个解向量。然后计算每个个体的目标函数值,并存储在solutions列表中。接着使用tell方法告诉算法哪些解向量是有效的,然后计算当前已经优化的时间。在判断是否达到优化目标或时间限制的条件下,如果当前最优的目标函数值比之前记录的最优值更小,就更新最优值和最优解,直到达到优化目标或时间限制为止。最后输出最优解和最优解下的x[0], x[1], x[2], x[3]。
阅读全文