import random
import numpy as np
def seagull_optimization(fitness_func, lb, ub, dim, colony_size, iterations):
# 参数:
# fitness_func: 适应度函数
# lb: 每个维度的下界
# ub: 每个维度的上界
# dim: 变量的个数(或维度)
# colony_size: 种群大小
# iterations: 迭代次数
# 初始化
positions = np.zeros((colony_size, dim))
for i in range(colony_size):
positions[i, :] = np.random.uniform(lb, ub, dim)
fitness = np.zeros(colony_size)
for i in range(colony_size):
fitness[i] = fitness_func(positions[i, :])
p_best = positions.copy()
f_p_best = fitness.copy()
g_best_index = np.argmin(fitness)
g_best = positions[g_best_index, :].copy()
# 迭代
for t in range(iterations):
for i in range(colony_size):
# 随机选择两个海鸥
r1, r2 = random.sample(range(colony_size), 2)
# 更新位置