主页 > 开源代码  > 

最新智能优化算法:贪婪个体优化算法(GreedyManOptimizationAlgorithm,GMOA)求解

最新智能优化算法:贪婪个体优化算法(GreedyManOptimizationAlgorithm,GMOA)求解
一、贪婪个体优化算法

贪婪个体优化算法(Greedy Man Optimization Algorithm,GMOA)是Hamed Nozari与Hossein Abdi于2024年提出的一种新型受生物启发的元启发式算法,它模拟了抵抗变化的竞争个体的行为。GMOA引入了两个独特的机制:MMO抵抗机制,防止过早替换解;周期性寄生虫清除机制,促进多样性并避免停滞。该算法旨在解决传统优化算法中的过早收敛和缺乏多样性的问题。 GMOA算法流程:

初始化种群 设置种群大小:N = population_size 生成初始种群:population = [generate_random_solution() for _ in range(N)] 生成 N 个随机解,每个解代表一个候选解。 初始化 MMO 抵抗值:mmo_resistance = [random_value(0, 1) for _ in range(N)] 为每个解生成一个随机的 MMO 抵抗值,范围在 0 到 1 之间。 计算目标函数值:objective_values = [evaluate_objective(solution) for solution in population] 评估每个解的目标函数值,用于衡量解的优劣。主优化循环 迭代次数:for iteration in range(max_iterations): 进行 max_iterations 次迭代。 2.1 竞争机制 遍历每个解:for i in range(N): 对种群中的每个解进行操作。 2.1.1 选择邻近解 选择邻近解:j = random_neighbor_index(N, i) 从种群中随机选择一个与当前解 i 不同的邻近解 j。 2.1.2 比较目标函数值 比较目标值:if objective_values[j] < objective_values[i]: 如果邻近解 j 的目标函数值小于当前解 i 的目标函数值,则尝试替换当前解。 2.1.3 基于 MMO 抵抗值的替换 生成随机阈值:if random_value(0, 1) > mmo_resistance[i]: 生成一个 0 到 1 之间的随机值,如果该值大于当前解 i 的 MMO 抵抗值,则进行替换。 替换解:population[i] = population[j] 将当前解 i 替换为邻近解 j。 更新目标函数值:objective_values[i] = objective_values[j] 更新当前解的目标函数值为邻近解的目标函数值。 2.2 周期性寄生虫清除 判断是否进行寄生虫清除:if iteration % parasite_removal_frequency == 0: 如果当前迭代次数是 parasite_removal_frequency 的倍数,则进行寄生虫清除操作。 2.2.1 遍历每个解 遍历每个解:for i in range(N): 对种群中的每个解进行操作。 2.2.2 判断是否突变 判断是否突变:if should_mutate(): 如果满足突变条件,则进行突变操作。 2.2.3 突变操作 突变解:mutate_solution(population[i]) 对当前解进行突变操作,引入小的随机变化。 减少 MMO 抵抗值:mmo_resistance[i] *= 0.5 将当前解的 MMO 抵抗值减半,以降低其抵抗能力。 更新目标函数值:objective_values[i] = evaluate_objective(population[i]) 重新评估当前解的目标函数值。返回最优解 返回最优解:best_solution = population[argmin(objective_values)] 从种群中选择目标函数值最小的解作为最优解并返回。

参考文献: [1]Nozari, H., Abdi, H. Greedy Man Optimization Algorithm (GMOA): A Novel Approach to Problem Solving with Resistant Parasites. Journal of Industrial and Systems Engineering, 2024; 16(3): 106-117.

二、23个函数介绍

参考文献:

[1] Yao X, Liu Y, Lin G M. Evolutionary programming made faster[J]. IEEE transactions on evolutionary computation, 1999, 3(2):82-102.

三、部分代码及结果 SearchAgents_no = 100; Max_iter = 1000; fn=12; Function_name=strcat('F',num2str(fn)); [lb,ub,dim,fobj]=Get_Functions_details(Function_name); [Best_score,Best_pos,PO_cg_curve]=(SearchAgents_no,Max_iter,lb,ub,dim,fobj); semilogy(PO_cg_curve,'LineWidth',2) title(Function_name) xlabel('迭代次数'); ylabel('适应度值');

四、完整MATLAB代码见下方名片
标签:

最新智能优化算法:贪婪个体优化算法(GreedyManOptimizationAlgorithm,GMOA)求解由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“最新智能优化算法:贪婪个体优化算法(GreedyManOptimizationAlgorithm,GMOA)求解