最新智能优化算法: 贪婪个体优化算法(Greedy Man Optimization Algorithm,GMOA)求解23个经典函数测试集,MATLAB代码

一、贪婪个体优化算法

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

GMOA算法流程:

  1. 初始化种群
    设置种群大小: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
    评估每个解的目标函数值,用于衡量解的优劣。
  2. 主优化循环
    迭代次数: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_valuesj < objective_valuesi:
    如果邻近解 j 的目标函数值小于当前解 i 的目标函数值,则尝试替换当前解。
    2.1.3 基于 MMO 抵抗值的替换
    生成随机阈值:if random_value(0, 1) > mmo_resistancei:
    生成一个 0 到 1 之间的随机值,如果该值大于当前解 i 的 MMO 抵抗值,则进行替换。
    替换解:populationi = populationj
    将当前解 i 替换为邻近解 j。
    更新目标函数值:objective_valuesi = objective_valuesj
    更新当前解的目标函数值为邻近解的目标函数值。
    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(populationi)
    对当前解进行突变操作,引入小的随机变化。
    减少 MMO 抵抗值:mmo_resistancei *= 0.5
    将当前解的 MMO 抵抗值减半,以降低其抵抗能力。
    更新目标函数值:objective_valuesi = evaluate_objective(populationi)
    重新评估当前解的目标函数值。
  3. 返回最优解
    返回最优解:best_solution = populationargmin(objective_values)
    从种群中选择目标函数值最小的解作为最优解并返回。

参考文献:

1Nozari, 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 fasterJ. IEEE transactions on evolutionary computation, 1999, 3(2):82-102.

三、部分代码及结果

dart 复制代码
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代码见下方名片

相关推荐
是Dream呀2 分钟前
5人设计组远程连工作站靠抢?用ToDesk团队设计版搭_数位板映射+多屏+权限_协同工作流
人工智能·ai·远程工作·todesk
Chester_19993 分钟前
CSP202104C.DHCP服务器
开发语言·程序人生·蓝桥杯
跨境技工小黎3 分钟前
LLM蜜罐系统是什么?AI爬虫如何精准绕过?
开发语言·人工智能·python
hongyucai4 分钟前
通用分类算法的建模过程
人工智能·分类·数据挖掘
葡萄城技术团队6 分钟前
表格智能体系列 · 2:AI 怎么“看到“你的表格
人工智能
一航jason6 分钟前
AIOS 岗位技能技术栈与开源工程全景
人工智能·ai·ai编程·ai-native
SZ_WSKY7 分钟前
拆解微型滑台的“生命周期”:非标自动化产线背后的精度损耗与维护真相
人工智能·科技·机器人·自动化·制造
-今昭-9 分钟前
OpenStack Dashboard 部署与图形化创建云主机实战指南
开发语言·php
王志来1379447300813 分钟前
多元场景催生工控服务器机箱差异化需求匀天以柔性适配回应行业挑战
运维·服务器·人工智能·python
狂师13 分钟前
UI自动化测试提效必备Skill!一套CI流水线编排 Skill 可以直接抄了...
人工智能·agent·测试