BlackBoxOptimization

    A black-box optimization framework in MoonBit with 75+ metaheuristic algorithms

    moonbit
    optimization
    black-box-optimization
    metaheuristics
    swarm-intelligence
    evolutionary-computation
    Download zip
    Author
    Version
    0.1.1
    License
    Apache-2.0
    Last updated
    8 days ago
    Downloads
    76

    No dependencies

    #BlackBoxOptimization

    基于 MoonBit 实现的黑盒优化算法框架,支持 176 种经典优化算法,提供统一的接口和基准测试框架。

    #算法分类

    本框架实现了 176 种黑盒优化算法,按设计灵感和机制分为以下类别:

    #🔍 单点搜索算法

    最简单的优化策略,从单个初始解出发,通过迭代改进逐步逼近最优值。

    算法简称说明
    随机搜索Random Search随机采样搜索空间中的点作为基线对比
    爬山法Hill Climbing从当前解的邻域中选择更优解进行迭代
    模拟退火Simulated Annealing以概率接受劣解,跳出局部最优陷阱
    盆地跳跃算法BHop自适应跳跃 + 收缩精修 + Metropolis 接受 (1997)
    同步扰动随机逼近SPSA两次评估估计梯度 + 归一化信任域步长 (1992)

    通用参数: 所有算法均包含 max_evals(最大评估次数)、dim(维度)、bounds(搜索边界)三个基础参数。

    算法关键参数推荐值
    Random Search无需额外参数-
    Hill Climbing无需额外参数-
    Simulated Annealinginitial_temp(初始温度), cooling_rate(降温速率), step_size(步长)100.0, 0.995, 0.5
    SPSA / Basin Hopping仅需 population_size25

    #🔧 局部搜索算法

    强化局部开发能力,通过记忆或惩罚机制避免陷入循环。

    算法简称说明
    禁忌搜索Tabu Search使用禁忌表记录近期操作,避免循环
    引导局部搜索Guided LS添加惩罚项引导搜索逃出局部最优
    大洪水算法GD水位线 WL 判据,margin 几何收缩 (1993)
    变邻域搜索VNS多邻域 shake 轮换 + 渐隐局部步 (1997)
    阈值接受算法TA阈值收缩的确定性接受准则,模拟退火孪生 (1990)

    算法关键参数推荐值
    Tabu Searchtabu_list_size(禁忌表大小), neighborhood_size(邻域大小), step_size(步长)50, 30, 0.5
    Guided LSneighborhood_size(邻域大小), step_size(步长), lambda(惩罚系数)30, 0.5, 0.5
    GD / VNS / TA仅需 population_size25

    #🧬 进化算法

    模拟自然选择与遗传过程,基于种群的进化搜索机制。

    算法简称说明
    差分进化DE通过差分变异和交叉实现种群进化
    自适应差分进化jDE每个个体自学习 F/CR,成功才保留
    历史记忆自适应差分进化SHADE成功参数记忆 + 外部归档 + p-best
    进化规划EP对数正态自适应步长 + (μ+μ) 选择
    遗传算法GA选择、交叉、变异三阶段模拟自然选择
    帝国主义竞争算法ICA模拟帝国殖民、同化和竞争机制
    生物地理学优化BBO基于栖息地适宜度与物种迁移模型
    回溯搜索算法BSA基于历史种群记忆的定向交叉变异
    克隆选择算法CLONALG克隆-变异-选择的人工免疫机制 (2002)
    新冠群体免疫优化CHIO感染/隔离/群体免疫驱动搜索 (2021)
    文化算法CA群体空间 + 信念空间双重进化 (1994)
    蜉蝣算法MFA雌雄双群 PSO 式移动 + 交配重组 (2020)
    自适应差分进化SaDE四策略竞争 + 选择概率自适应 (2009)
    组合差分进化CoDE三参数池 × 双策略试验竞争的 DE (2011)
    反向差分进化ODE反向学习反射 + 经典 DE/rand/1/bin (2006)
    实数编码遗传算法RGASBX 交叉 + 多项式变异 + 精英截断 (1995)
    藤壶交配优化BMOsoft 双亲重组 / hard 与 best 交配 (2018)
    模因算法MemeticSBX-GA 主体 + Lamarckian 局部精修 (1989)
    自适应差分进化 JADEJADEcurrent-to-pbest + 外部档案 + Lehmer 自适应 (2009)

    算法关键参数推荐值
    DEpopulation_size, mutation_factor (F), crossover_probability (CR)30, 0.8, 0.9
    jDE仅需 population_size25
    SHADE仅需 population_size25
    EP仅需 population_size25
    GApopulation_size, crossover_rate, mutation_rate30, 0.8, 0.05
    ICApopulation_size, imperialist_count, assimilation_rate, revolution_rate25, 3, 0.3, 0.3
    BBOpopulation_size, mutation_rate25, 0.01
    BSApopulation_size25
    CLONALG / CA / CHIO / SaDE / CoDE / ODE / JADE / RGA / Memetic / MFA / BMO仅需 population_size25

    #🐝 群体智能算法

    本框架最大的算法类别,模拟自然界生物群体行为进行协同搜索。

    算法简称说明
    粒子群优化PSO模仿鸟群觅食的群体协同行为
    萤火虫算法Firefly基于萤火虫发光吸引力模型
    蚁群算法ACO基于信息素的蚂蚁路径搜索
    蜂群算法Bee Colony模拟蜜蜂觅食与舞蹈交流行为
    布谷鸟搜索Cuckoo Search基于巢寄生和Lévy飞行的搜索
    灰狼优化GWO模拟灰狼领导的三层狩猎机制
    鲸群优化WOA模拟座头鲸气泡网捕食行为
    蝙蝠算法Bat Algorithm模拟蝙蝠回声定位行为
    和声搜索Harmony Search模拟音乐即兴创作过程
    正弦余弦算法SCA利用正弦余弦函数进行振荡搜索
    飞蛾火焰优化MFO模拟飞蛾螺旋飞行路径
    蚁狮优化ALO模拟蚁狮陷阱捕食行为
    麻雀搜索算法SSA模拟麻雀觅食和反捕食行为
    哈里斯鹰优化HHO模拟哈里斯鹰协同捕食行为
    花粉传播算法FPA模拟花粉全局和局部传播过程
    蜻蜓算法DA模拟蜻蜓分离、对齐、聚集行为
    乌鸦搜索算法CSA模拟乌鸦记忆和追逐行为
    樽海鞘群算法SalpSA模拟樽海鞘链状群体结构
    Monarch蝴蝶优化MBO模拟蝴蝶迁徙和调整行为
    人工生态系统优化AEO模拟生态系统生产者-消费者-分解者
    入侵杂草优化IWO模拟杂草生长扩散与竞争
    细菌觅食优化BFO模拟大肠杆菌觅食行为
    混合蛙跳算法SFLA模拟青蛙群体觅食与信息共享
    萤火虫群优化GSO模拟萤火虫发光吸引行为
    动物迁徙优化AMO模拟动物群体迁徙跟随行为
    磷虾群算法KH模拟磷虾诱导运动、觅食和扩散
    共生生物搜索SOS模拟生物间互利共生/偏利共生/寄生关系
    大象牧群优化EHO模拟大象族群分离与母系领导机制
    高斯骨干粒子群优化GBPSO基于高斯分布的简化粒子群算法
    飞蛾搜索算法MSA基于飞蛾 Lévy 飞行和螺旋搜索
    路径finder算法PFA基于领导者-跟随者层级移动
    菌落捕食算法CPA模拟捕食-逃跑概率行为
    细菌菌落优化BCO基于细菌趋化聚集行为
    飞狐优化算法FFOA带惯性权重的群体飞行搜索
    人工鱼群算法AFSA模拟鱼群觅食、聚群和追尾行为
    烟花算法FWA模拟烟花爆炸及火花分布机制
    鸽群优化PIO模拟信鸽导航的地图指南针与地标两阶段
    蜜獾算法HBA模拟蜜獾挖洞与觅食的密度因子搜索
    鹈鹕优化算法POA模拟鹈鹕捕猎的两阶段策略
    金枪鱼群优化TSA基于螺旋运动和觅食行为的群体搜索
    金豺优化GJO模拟雄雌金豺协同捕猎的双引导搜索
    蝗虫优化算法GOA模拟蝗虫群体觅食的吸引-排斥机制
    海鸥优化算法SOA模拟海鸥迁徙和螺旋攻击行为
    猫群优化CSO模拟猫的追踪和搜寻两种模式切换
    大猩猩部队优化GTO模拟大猩猩群体社会等级与领导机制
    黏菌算法SMA模拟黏菌觅食行为的群体路径搜索
    苍鹰优化器AO模拟苍鹰捕猎的四个阶段策略
    黑猩猩优化算法ChOA模拟黑猩猩狩猎的驱动-追逐-竞争行为
    蒲公英优化器DO模拟蒲公英种子风力传播的上升-下降搜索
    斑马优化算法ZOA模拟斑马群体探索-开发机制
    蝠鲼觅食优化MRFO链式/螺旋/翻滚三种觅食机制 (2020)
    饥饿游戏搜索HGS饥饿权重驱动的自适应搜索 (2021)
    爬行动物搜索算法RSA包围/狩猎/协调多阶段搜索 (2022)
    海洋捕食者算法MPA布朗/Levy 三阶段速度比捕食机制 (2020)
    金鹰优化器GEO攻击-巡航双倾向的正交向量搜索 (2021)
    非洲秃鹫优化AVOA饥饿因子驱动的探索-开发切换 (2021)
    白鲨优化器WSO速度惯性+猎物跟随的白鲨觅食 (2022)
    长鼻浣熊优化COA捕猎鬣蜥与逃避捕食者两阶段 (2023)
    鱼鹰优化算法OOA俯冲捕鱼 + 携带到合适位置 (2023)
    塔斯马尼亚恶魔优化TDO食腐/捕猎双策略 + 拖拽食物 (2022)
    草原犬鼠优化PDO觅食/挖洞/警戒/平静四阶段 (2022)
    北方苍鹰优化NGO俯冲猎物 + 尾部追击双阶段 (2021)
    白鲸优化BWO游动/捕食/鲸落三阶段 (2022)
    生长优化器GO学习阶段 + 反思阶段双阶段 (2023)
    海象优化器WaOA觅食/迁徙/躲避天敌三行为 (2023)
    人工蜂群算法ABC雇佣/观察/侦察蜂三阶段觅食 (2007)
    蜣螂优化器DBO滚球/繁殖/觅食/偷窃四角色 (2022)
    被囊群算法TSO喷流推进 + 重力/水流被囊群搜索 (2020)
    笑翠鸟优化算法KOA栖枝扫描 + 俯冲扑食两相 (2024)
    火鹰优化算法FHO投掷火棒惊猎/捕获两相 (2022)
    蛇优化器SO温度驱动的雄雌蛇觅食/争斗/探索 (2022)
    山地瞪羚优化MGO迁徙/觅食/争斗 + 成年雄群中心 (2022)
    沙猫群优化SCSO搜寻猎物/攻击猎物(灵敏度范围驱动)(2020)
    猎人-猎物优化HPO猎人/猎物两角色 + 平均位置驱动 (2022)
    人工蜂鸟算法AHA引导/领地/迁徙三种觅食 + 访问表 (2021)
    黑翅鸢算法BKA攻击 + 迁徙两行为 (2023)
    人工兔优化ARO绕道觅食/随机隐藏 + 能量收缩 (2022)
    狐狸优化器FOX距离估计 + 跳跃捕食 (2023)
    侏儒獴优化DMOalpha 引领觅食 + 侦察探索 (2022)
    鼠群优化RSO追逐/争斗猎物 (2021)
    埃及秃鹫优化EVO探索盘旋 + 攻击猎物 (2021)
    电鳗觅食优化EEFO休息/迁移/交互捕食 (2023)
    黄鞍山羊鱼算法YSGA追捕者/拦截者协同围捕 (2019)
    卷尾猴搜索算法CapSA跳跃/摇摆/攀爬/觅食 (2021)
    蜘蛛蜂优化器SWO搜索/跟随/筑巢 + 交配选择 (2023)
    绿森蚺优化GAO攻击 + 缠绕猎物 (2023)
    墨西哥钝口螈优化MAO觅食 + 再生修复 (2024)
    郊狼优化算法COY群体成长 + 出生/死亡 + 倾向性 (2018)
    秃鹰搜索算法BES选择/搜索/俯冲三阶段 (2019)
    鹅优化算法GOOSE觅食/警戒/编队迁徙 (2024)
    斑点鬣狗优化SHO围捕/平均攻击,攻击系数线性衰减 (2017)
    鮣鱼优化器ROA吸附宿主/随游/清洁觅食 (2021)
    马群优化HOA放牧/交配/争斗支配 (2019)
    黑寡妇蜘蛛优化BWA蛛网收缩/趋雌/交配 (2020)
    收缩因子粒子群CPSOClerc 收缩因子 + 速度夹持的 PSO (2002)
    局部最优粒子群LPSO环形邻域 lbest 拓扑的收缩 PSO (2002)
    野马优化WHO驹学习/交配/种马驱赶 (2021)
    蝴蝶优化算法BOA香气浓度 f=c·I^a 驱动的全局/局部搜索 (2019)
    秘书鸟优化SBO捕蛇觅食(搜索/攻击)+ 逃猎两阶段 (2024)
    连续域蚁群优化ACOR解档案高斯核加权采样的连续蚁群 (2008)
    量子粒子群QPSO无速度项,mbest 中心指数采样 (2004)
    狮子优化算法LOA狮王防御/母狮合围/幼狮学习三角色 (2016)
    红尾鵟算法RTH翱翔/扫描/俯冲/击杀四阶段狩猎 (2022)
    统一粒子群UPSOgbest/lbest 双拉力融合 + 环形邻域 (2004)

    通用群体智能参数: 大部分算法默认 population_size = 25。下表列出各算法的特有参数。

    算法特有参数推荐值
    PSOinertia_weight, cognitive_coeff, social_coeff0.7, 1.5, 1.5
    Fireflyinitial_attractiveness (β₀), light_absorption (γ), step_size (α)1.0, 1.0, 0.2
    ACOant_count, evaporation_rate (ρ), pheromone_weight (α), heuristic_weight (β)20, 0.1, 1.0, 10.0
    Bee Colonyscout_bee_count, max_trials25, 100
    Cuckoo Searchnest_count, abandon_probability (p_a), levy_parameter (β)25, 0.25, 1.5
    Bat Algorithmfreq_min, freq_max, loudness, pulse_rate0.0, 1.0, 0.5, 1.0
    Harmony Searchmemory_size, hmcr, par, fretwidth20, 0.9, 0.3, 0.05
    SSAdiscoverer_ratio, warning_threshold0.2, 0.8
    FPAswitch_probability0.8
    DAseparation_weight, alignment_weight, cohesion_weight1.0, 1.0, 1.0
    CSAflight_length, awareness_prob2.0, 0.1
    MBOmigration_period, adjustment_rate5, 1.0
    IWOinitial_pop, max_pop, min_seeds, max_seeds, initial_sigma, final_sigma10, 40, 1, 5, 2.0, 0.1
    BFOchemotactic_steps, reproduction_steps, step_size5, 3, 0.2
    SFLAmemeplex_count, iterations_per_group5, 10
    GSOluciferin_decay, luciferin_enhancement, neighbor_count, sensing_radius, step_size0.4, 0.6, 5, 5.0, 1.0
    AMOmigration_interval5
    KHmax_speed, foraging_speed0.01, 0.02
    EHOclan_count, alpha5, 0.5
    AFSAvisual, step, crowd_factor2.0, 0.5, 0.5
    CSOmixture_ratio0.3
    WCAnum_rivers4
    MFOspiral_constant1.0
    WOAspiral_constant1.0
    其余算法 (GWO, SCA, ALO, HHO, SalpSA, AEO, SOS, GBPSO, MSA, PFA, CPA, BCO, FFOA, FWA, PIO, HBA, POA, TSA, GJO, GOA, SOA, GTO, SMA, AO, ChOA, DO, ZOA, MRFO, HGS, RSA, MPA, GEO, AVOA, WSO, COA, OOA, TDO, PDO, NGO, BWO, GO, WaOA, ABC, DBO, TSO, KOA, FHO, SO, MGO, HPO, AHA, BKA, ARO, FOX, DMO, RSO, EVO, EEFO, YSGA, CapSA, SWO, GAO, MAO, COY, BES, GOOSE, SHO, ROA, HOA, BWA, CPSO, LPSO, WHO, BOA, SBO, ACOR, QPSO, UPSO, RTH)仅需 population_size25

    #📐 确定性直接搜索

    无需梯度信息,通过几何模式进行直接搜索,适合不可导函数。

    算法简称说明
    Nelder-Mead 单纯形法NM无导数的单纯形几何变形方法
    Hooke-Jeeves 模式搜索HJ无导数的直接搜索方法
    鲍威尔共轭方向法Powell线搜索 + 共轭方向更新的经典直接搜索 (1964)
    Rosenbrock 旋转坐标搜索Rosenbrock方向轮换 + Gram-Schmidt 旋转的经典直接搜索 (1960)
    受控随机搜索CRS随机子集聚类中心反射 + 渐隐精修 (1973)
    矩形分割全局优化DIRECT最优/最宽矩形三等分分割 (1993)

    算法关键参数推荐值
    Nelder-Meadreflection_coeff (α), expansion_coeff (γ), contraction_coeff (ρ), shrink_coeff (σ)1.0, 2.0, 0.5, 0.5
    Hooke-Jeevesinitial_step, step_reduction, min_step0.5, 0.5, 1e-6
    Powell / Rosenbrock / CRS / DIRECT仅需 population_size25

    #🧮 进化策略

    基于概率分布的参数自适应优化,适合复杂病态问题。

    算法简称说明
    协方差矩阵自适应进化策略CMA-ES协方差矩阵自适应调整,适合病态问题
    (μ+λ) 进化策略ESμ 父代产生 λ 高斯变异子代,择优存活

    算法关键参数推荐值
    CMA-ESsigma (初始标准差), lambda (种群大小), mu (父代数量)0.5, 20, 10
    ESmu (父代数量), lambda (子代数量), sigma_init (初始步长)30, 100, 0.3

    #📊 估计分布算法

    基于概率分布估计的迭代优化方法。

    算法简称说明
    交叉熵方法CEM基于高斯分布的迭代估计
    随机分形搜索SFS基于分形发现和学习两阶段搜索
    基于群体的增量学习PBIL连续分布估计与精英统计更新
    单变量边缘分布算法UMDA边缘分布估计 + 高斯采样 (1996)
    紧凑遗传算法cGA双样本竞赛更新概率模型 (1999)

    算法关键参数推荐值
    CEMsample_size, elite_fraction, smoothing100, 0.1, 0.7
    SFSpopulation_size, discovery_iterations, learning_iterations25, 3, 2
    PBILsample_size, elite_size, learning_rate100, 10, 0.3
    UMDA / cGA仅需 population_size25

    #⚛️ 物理启发算法

    基于物理定律和自然现象的搜索机制。

    算法简称说明
    引力搜索算法GSA基于牛顿万有引力定律的搜索
    多宇宙优化MVO基于白洞/黑洞/虫洞的宇宙机制
    均衡优化EO基于控制理论均衡池与指数衰减策略
    风驱动优化WDO模拟大气风速更新与科里奥利力
    水循环算法WCA基于水循环和河流流动过程
    电磁机制算法EM电荷吸引/排斥的库仑类搜索 (2003)
    霜冰优化算法RIME软霜搜索 + 硬霜穿刺 + 附着因子 (2023)
    热交换优化TEO随机配对热交换 + 环境冷却 (2017)
    水波优化WWO传播/折射/破碎,波长渐隐 (2015)
    大爆炸-大挤压算法BBBC精英挤压中心 + 几何收缩双尺度采样 (2006)
    黑洞算法BH事件视界吞没重生 + 黑洞渐隐精修 (2013)
    碰撞体优化CBO动量守恒碰撞探索 + 渐隐精修 (2014)
    亨利气体溶解优化HGSO气体分组亨利常数 + 溶解度步长 (2019)

    算法关键参数推荐值
    GSAgravity_constant (G₀), decay_alpha (α)100.0, 0.99
    MVOwormhole_exploitation, travelling_distance_rate1.0, 0.6
    EO仅需 population_size25
    WDO仅需 population_size25
    WCApopulation_size, num_rivers25, 4
    EM / WWO / TEO / RIME / BBBC / BH / CBO / HGSO仅需 population_size25

    #🎓 教学模型算法

    模拟教学与学习过程的优化方法。

    算法简称说明
    教与学优化TLBO模拟班级教学和学习过程,无需额外参数

    算法关键参数推荐值
    TLBO仅需 population_size30

    #🔢 数学启发算法

    基于数学原理和运算规则的搜索机制。

    算法简称说明
    Jaya算法Jaya基于最优-最差个体更新策略
    算术优化算法AOA基于算术运算符(除/乘/减/加)的搜索
    Runge Kutta 优化器RUN基于 RK4 斜率加权组合的位置更新 (2021)
    梯度优化器GBO梯度搜索规则 + 局部逃逸算子 (2020)
    向量加权平均优化INFObest/better/worst 加权均值驱动 (2022)
    减法平均优化SABO随机个体差分平均向量驱动 (2023)
    黄金正弦算法Golden-SA黄金比例 + 正弦算子位置更新 (2017)
    螺旋优化算法SPO收缩因子 + 随机平面旋转的 n 维螺旋 (2011)
    室内设计搜索InS对 best 镜面反射 + 渐隐重组 (2015)
    牛顿-拉夫逊优化NRBONRA 三项差分 + TRD 训练规则交替 (2024)

    算法关键参数推荐值
    Jaya仅需 population_size25
    AOA仅需 population_size25
    RUN仅需 population_size25
    GBO / INFO / SABO / Golden-SA / NRBO / InS / SPO仅需 population_size25

    #👥 人类行为算法

    模拟人类社会活动和思维过程的优化方法。

    算法简称说明
    头脑风暴优化BSO模拟人类头脑风暴聚类的创意生成过程
    足球联赛竞争算法SLC模拟足球联赛团队竞争与球员交换
    政治优化器PO党内竞选 + 跨党领袖影响 (2020)
    法证调查优化FBI调查 + 讯问两阶段 (2020)
    团队工作优化TWO团队领导 + 全局领导两轮协同 (2021)
    冠军联赛算法LCA轮转配对抗衡 + 败者模仿胜者 (2015)

    算法关键参数推荐值
    BSO仅需 population_size25
    SLC仅需 population_size25
    PO / FBI / TWO / LCA仅需 population_size25

    #项目结构

    BlackBoxOptimization/ ├── lib/ # 核心库包 │ ├── moon.pkg # 包配置 │ ├── core.mbt # RNG / 数学工具 / 核心类型 │ ├── classic_algorithms.mbt # 随机搜索/爬山/SA/PSO/DE/GA/NM │ ├── swarm_algorithms_1.mbt # 群体智能算法(Firefly..SSA) │ ├── swarm_algorithms_2.mbt # 群体智能算法(HHO..KH) │ ├── meta_algorithms.mbt # 物理/人文启发算法(ICA..GBPSO) │ ├── recent_algorithms.mbt # 新一代算法(MSA..HGSO) │ └── benchmark.mbt # 测试函数 + 基准框架 + 算法注册表 ├── main/ # 主程序入口 │ ├── moon.pkg # 包配置 │ └── main.mbt # 基准测试入口 ├── test/ # 测试包 │ ├── moon.pkg # 包配置 │ ├── lib_test.mbt # 单元测试 │ └── extra_test.mbt # 补充测试(收敛性 / RNG / 注册表) ├── example/ # 示例包 │ ├── moon.pkg # 包配置 │ └── simple_usage.mbt # 使用示例(注册表驱动,覆盖全部算法) ├── .github/workflows/ # CI 配置 │ └── ci.yml # GitHub Actions ├── moon.mod # 模块配置 └── README.md

    #快速开始

    #环境要求

    #安装

    # 克隆项目 git clone https://github.com/your-username/BlackBoxOptimization.git cd BlackBoxOptimization

    #运行示例

    # 运行简单示例 moon run example # 运行基准测试 moon run main

    #运行测试

    # 运行所有测试(374 个测试用例) moon test # 代码检查 moon check

    #使用方法

    #基本用法

    import lib

    fn main {
    // 1. 定义问题
    let dim = 3
    let bounds = @lib.make_bounds(-5.0, 5.0)
    let rng = @lib.make_rng(123.0)

    // 2. 选择目标函数(Sphere 函数)
    // f(x) = sum(x_i^2),最优值为 0

    // 3. 配置并运行算法
    let config = @lib.make_pso_config(
    1000, // max_evaluations
    dim, // dimension
    bounds, // bounds
    30, // population_size
    0.7, // inertia_weight
    1.5, // cognitive_coeff
    1.5 // social_coeff
    )
    let result = @lib.pso(config, @lib.sphere_function, rng)

    // 4. 获取结果
    println("最优值: \{result.best_value}")
    println("评估次数: \{result.evaluations}")
    }

    #使用不同算法

    // 随机搜索
    let rs_config = @lib.make_random_search_config(1000, dim, bounds)
    let rs_result = @lib.random_search(rs_config, f, rng)

    // 爬山法
    let hc_config = @lib.make_hill_climbing_config(1000, dim, bounds, 0.5, 10)
    let hc_result = @lib.hill_climbing(hc_config, f, rng)

    // 模拟退火
    let sa_config = @lib.make_simulated_annealing_config(1000, dim, bounds, 100.0, 0.995, 0.5)
    let sa_result = @lib.simulated_annealing(sa_config, f, rng)

    // 粒子群优化
    let pso_config = @lib.make_pso_config(1000, dim, bounds, 30, 0.7, 1.5, 1.5)
    let pso_result = @lib.pso(pso_config, f, rng)

    // 差分进化
    let de_config = @lib.make_de_config(1000, dim, bounds, 30, 0.8, 0.9)
    let de_result = @lib.differential_evolution(de_config, f, rng)

    // 遗传算法
    let ga_config = @lib.make_ga_config(1000, dim, bounds, 30, 0.8, 0.05)
    let ga_result = @lib.genetic_algorithm(ga_config, f, rng)

    // Nelder-Mead
    let nm_config = @lib.make_nm_config(1000, dim, bounds, 1.0, 2.0, 0.5, 0.5)
    let nm_result = @lib.nelder_mead(nm_config, f, rng)

    // 萤火虫算法
    let ff_config = @lib.make_firefly_config(1000, dim, bounds, 30, 1.0, 1.0, 0.2)
    let ff_result = @lib.firefly_algorithm(ff_config, f, rng)

    // 蚁群算法 (ACO)
    let aco_config = @lib.make_aco_config(1000, dim, bounds, 20, 0.1, 1.0, 10.0)
    let aco_result = @lib.aco(aco_config, f, rng)

    // 蜂群算法 (Bee Colony)
    let bc_config = @lib.make_bee_colony_config(1000, dim, bounds, 25, 100)
    let bc_result = @lib.bee_colony(bc_config, f, rng)

    // 禁忌搜索 (Tabu Search)
    let ts_config = @lib.make_tabu_search_config(1000, dim, bounds, 50, 30, 0.5)
    let ts_result = @lib.tabu_search(ts_config, f, rng)

    // 引导局部搜索 (Guided LS)
    let ls_config = @lib.make_local_search_config(1000, dim, bounds, 30, 0.5, 0.5)
    let ls_result = @lib.local_search(ls_config, f, rng)

    // CMA-ES
    let cma_config = @lib.make_cmaes_config(1000, dim, bounds, 0.5, 20, 10)
    let cma_result = @lib.cma_es(cma_config, f, rng)

    // 交叉熵方法 (CEM)
    let cem_config = @lib.make_cem_config(1000, dim, bounds, 100, 0.1, 0.7)
    let cem_result = @lib.cross_entropy_method(cem_config, f, rng)

    // 布谷鸟搜索 (Cuckoo Search)
    let cs_config = @lib.make_cuckoo_config(1000, dim, bounds, 25, 0.25, 1.5)
    let cs_result = @lib.cuckoo_search(cs_config, f, rng)

    // 灰狼优化 (GWO)
    let gwo_config = @lib.make_gwo_config(1000, dim, bounds, 25)
    let gwo_result = @lib.grey_wolf_optimizer(gwo_config, f, rng)

    // Hooke-Jeeves 模式搜索
    let hj_config = @lib.make_hooke_jeeves_config(1000, dim, bounds, 0.5, 0.5, 1.0e-6)
    let hj_result = @lib.hooke_jeeves(hj_config, f, rng)

    // 鲸群优化 (WOA)
    let woa_config = @lib.make_woa_config(1000, dim, bounds, 25, 1.0)
    let woa_result = @lib.whale_optimization(woa_config, f, rng)

    // 蝙蝠算法 (Bat Algorithm)
    let bat_config = @lib.make_bat_config(1000, dim, bounds, 25, 0.0, 1.0, 0.5, 1.0)
    let bat_result = @lib.bat_algorithm(bat_config, f, rng)

    // 和声搜索 (Harmony Search)
    let hs_config = @lib.make_hs_config(1000, dim, bounds, 20, 0.9, 0.3, 0.05)
    let hs_result = @lib.harmony_search(hs_config, f, rng)

    // 正弦余弦算法 (SCA)
    let sca_config = @lib.make_sca_config(1000, dim, bounds, 25)
    let sca_result = @lib.sine_cosine_algorithm(sca_config, f, rng)

    // 飞蛾火焰优化 (MFO)
    let mfo_config = @lib.make_mfo_config(1000, dim, bounds, 25, 1.0)
    let mfo_result = @lib.moth_flame_optimization(mfo_config, f, rng)

    // 蚁狮优化 (ALO)
    let alo_config = @lib.make_alo_config(1000, dim, bounds, 25)
    let alo_result = @lib.antlion_optimizer(alo_config, f, rng)

    // 麻雀搜索算法 (SSA)
    let ssa_config = @lib.make_ssa_config(1000, dim, bounds, 25)
    let ssa_result = @lib.sparrow_search_algorithm(ssa_config, f, rng)

    // 哈里斯鹰优化 (HHO)
    let hho_config = @lib.make_hho_config(1000, dim, bounds, 25)
    let hho_result = @lib.harris_hawks_optimization(hho_config, f, rng)

    // 花粉传播算法 (FPA)
    let fpa_config = @lib.make_fpa_config(1000, dim, bounds, 25)
    let fpa_result = @lib.flower_pollination_algorithm(fpa_config, f, rng)

    // 蜻蜓算法 (DA)
    let da_config = @lib.make_da_config(1000, dim, bounds, 25)
    let da_result = @lib.dragonfly_algorithm(da_config, f, rng)

    // 乌鸦搜索算法 (CSA)
    let csa_config = @lib.make_csa_config(1000, dim, bounds, 25)
    let csa_result = @lib.crow_search_algorithm(csa_config, f, rng)

    // 樽海鞘群算法 (SalpSA)
    let salp_config = @lib.make_salp_sa_config(1000, dim, bounds, 25)
    let salp_result = @lib.salp_swarm_algorithm(salp_config, f, rng)

    // Monarch蝴蝶优化 (MBO)
    let mbo_config = @lib.make_mbo_config(1000, dim, bounds, 25)
    let mbo_result = @lib.monarch_butterfly_optimization(mbo_config, f, rng)

    // 人工生态系统优化 (AEO)
    let aeo_config = @lib.make_aeo_config(1000, dim, bounds, 25)
    let aeo_result = @lib.artificial_ecosystem_optimization(aeo_config, f, rng)

    // 入侵杂草优化 (IWO)
    let iwo_config = @lib.make_iwo_config(1000, dim, bounds, 10, 40, 1, 5, 2.0, 0.1, 3.0)
    let iwo_result = @lib.invasive_weed_optimization(iwo_config, f, rng)

    // 细菌觅食优化 (BFO)
    let bfo_config = @lib.make_bfo_config(1000, dim, bounds, 25, 5, 3, 0.2)
    let bfo_result = @lib.bacteria_foraging_optimization(bfo_config, f, rng)

    // 混合蛙跳算法 (SFLA)
    let sfla_config = @lib.make_sfla_config(1000, dim, bounds, 30, 5, 10)
    let sfla_result = @lib.shuffled_frog_leaping_algorithm(sfla_config, f, rng)

    // 萤火虫群优化 (GSO)
    let gso_config = @lib.make_gso_config(1000, dim, bounds, 25, 0.4, 0.6, 5, 5.0, 1.0)
    let gso_result = @lib.glowworm_swarm_optimization(gso_config, f, rng)

    // 引力搜索算法 (GSA)
    let gsa_config = @lib.make_gsa_config(1000, dim, bounds, 25, 100.0, 0.99)
    let gsa_result = @lib.gravitational_search_algorithm(gsa_config, f, rng)

    // 教与学优化 (TLBO)
    let tlbo_config = @lib.make_tlbo_config(1000, dim, bounds, 30)
    let tlbo_result = @lib.teaching_learning_based_optimization(tlbo_config, f, rng)

    // 动物迁徙优化 (AMO)
    let amo_config = @lib.make_amo_config(1000, dim, bounds, 25, 5)
    let amo_result = @lib.animal_migration_optimization(amo_config, f, rng)

    // 多宇宙优化 (MVO)
    let mvo_config = @lib.make_mvo_config(1000, dim, bounds, 25)
    let mvo_result = @lib.multi_verse_optimizer(mvo_config, f, rng)

    // 磷虾群算法 (KH)
    let kh_config = @lib.make_kh_config(1000, dim, bounds, 25)
    let kh_result = @lib.krill_herd(kh_config, f, rng)

    // 帝国主义竞争算法 (ICA)
    let ica_config = @lib.make_ica_config(1000, dim, bounds, 25)
    let ica_result = @lib.imperialist_competitive_algorithm(ica_config, f, rng)

    // 随机分形搜索 (SFS)
    let sfs_config = @lib.make_sfs_config(1000, dim, bounds, 25)
    let sfs_result = @lib.stochastic_fractal_search(sfs_config, f, rng)

    // 共生生物搜索 (SOS)
    let sos_config = @lib.make_sos_config(1000, dim, bounds, 25)
    let sos_result = @lib.symbiotic_organisms_search(sos_config, f, rng)

    // 生物地理学优化 (BBO)
    let bbo_config = @lib.make_bbo_config(1000, dim, bounds, 25, 0.01)
    let bbo_result = @lib.biogeography_based_optimization(bbo_config, f, rng)

    // 大象牧群优化 (EHO)
    let eho_config = @lib.make_eho_config(1000, dim, bounds, 25, 5, 0.5)
    let eho_result = @lib.elephant_herding_optimization(eho_config, f, rng)

    // 均衡优化 (EO)
    let eo_config = @lib.make_eo_config(1000, dim, bounds, 25)
    let eo_result = @lib.equilibrium_optimizer(eo_config, f, rng)

    // 风驱动优化 (WDO)
    let wdo_config = @lib.make_wdo_config(1000, dim, bounds, 25)
    let wdo_result = @lib.wind_driven_optimization(wdo_config, f, rng)

    // Jaya算法
    let jaya_config = @lib.make_jaya_config(1000, dim, bounds, 25)
    let jaya_result = @lib.jaya_optimization(jaya_config, f, rng)

    // 足球联赛竞争算法 (SLC)
    let slc_config = @lib.make_slc_config(1000, dim, bounds, 25)
    let slc_result = @lib.soccer_league_competition(slc_config, f, rng)

    // 高斯骨干粒子群优化 (GBPSO)
    let gbpso_config = @lib.make_gbpso_config(1000, dim, bounds, 25)
    let gbpso_result = @lib.gaussian_bare_bones_pso(gbpso_config, f, rng)

    // 飞蛾搜索算法 (MSA)
    let msa_config = @lib.make_msa_config(1000, dim, bounds, 25)
    let msa_result = @lib.moth_search_algorithm(msa_config, f, rng)

    // 路径finder算法 (PFA)
    let pfa_config = @lib.make_pfa_config(1000, dim, bounds, 25)
    let pfa_result = @lib.pathfinder_algorithm(pfa_config, f, rng)

    // 菌落捕食算法 (CPA)
    let cpa_config = @lib.make_cpa_config(1000, dim, bounds, 25)
    let cpa_result = @lib.colony_predation_algorithm(cpa_config, f, rng)

    // 细菌菌落优化 (BCO)
    let bco_config = @lib.make_bco_config(1000, dim, bounds, 25)
    let bco_result = @lib.bacteria_colony_optimization(bco_config, f, rng)

    // 飞狐优化算法 (FFOA)
    let ffoa_config = @lib.make_ffoa_config(1000, dim, bounds, 25)
    let ffoa_result = @lib.flying_fox_optimization(ffoa_config, f, rng)

    // 人工鱼群算法 (AFSA)
    let afsa_config = @lib.make_afsa_config(1000, dim, bounds, 25, 2.0, 0.5, 0.5)
    let afsa_result = @lib.artificial_fish_swarm(afsa_config, f, rng)

    // 烟花算法 (FWA)
    let fwa_config = @lib.make_fwa_config(1000, dim, bounds, 25)
    let fwa_result = @lib.fireworks_algorithm(fwa_config, f, rng)

    // 头脑风暴优化 (BSO)
    let bso_config = @lib.make_bso_config(1000, dim, bounds, 25)
    let bso_result = @lib.brain_storm_optimization(bso_config, f, rng)

    // 回溯搜索算法 (BSA)
    let bsa_config = @lib.make_bsa_config(1000, dim, bounds, 25)
    let bsa_result = @lib.backtracking_search_algorithm(bsa_config, f, rng)

    // 鸽群优化 (PIO)
    let pio_config = @lib.make_pio_config(1000, dim, bounds, 25)
    let pio_result = @lib.pigeon_inspired_optimization(pio_config, f, rng)

    // 算术优化算法 (AOA)
    let aoa_config = @lib.make_aoa_config(1000, dim, bounds, 25)
    let aoa_result = @lib.arithmetic_optimization_algorithm(aoa_config, f, rng)

    // 蜜獾算法 (HBA)
    let hba_config = @lib.make_hba_config(1000, dim, bounds, 25)
    let hba_result = @lib.honey_badger_algorithm(hba_config, f, rng)

    // 鹈鹕优化算法 (POA)
    let poa_config = @lib.make_poa_config(1000, dim, bounds, 25)
    let poa_result = @lib.pelican_optimization_algorithm(poa_config, f, rng)

    // 金枪鱼群优化 (TSA)
    let tsa_config = @lib.make_tsa_config(1000, dim, bounds, 25)
    let tsa_result = @lib.tuna_swarm_optimization(tsa_config, f, rng)

    // 金豺优化 (GJO)
    let gjo_config = @lib.make_gjo_config(1000, dim, bounds, 25)
    let gjo_result = @lib.golden_jackal_optimization(gjo_config, f, rng)

    // 蝗虫优化算法 (GOA)
    let goa_config = @lib.make_goa_config(1000, dim, bounds, 25)
    let goa_result = @lib.grasshopper_optimization_algorithm(goa_config, f, rng)

    // 海鸥优化算法 (SOA)
    let soa_config = @lib.make_soa_config(1000, dim, bounds, 25)
    let soa_result = @lib.seagull_optimization_algorithm(soa_config, f, rng)

    // 猫群优化 (CSO)
    let cso_config = @lib.make_cso_config(1000, dim, bounds, 25)
    let cso_result = @lib.cat_swarm_optimization(cso_config, f, rng)

    // 大猩猩部队优化 (GTO)
    let gto_config = @lib.make_gto_config(1000, dim, bounds, 25)
    let gto_result = @lib.gorilla_troops_optimizer(gto_config, f, rng)

    // 水循环算法 (WCA)
    let wca_config = @lib.make_wca_config(1000, dim, bounds, 25, 4)
    let wca_result = @lib.water_cycle_algorithm(wca_config, f, rng)

    #内置测试函数

    // Sphere 函数: f(x) = sum(x_i^2),[-5,5],最优值: 0
    let f1 = @lib.sphere_function

    // Rastrigin 函数: f(x) = 10n + sum(x_i^2 - 10*cos(2*pi*x_i)),[-5.12,5.12],最优值: 0
    let f2 = @lib.rastrigin_function

    // Rosenbrock 函数: f(x) = sum(100*(x_{i+1} - x_i^2)^2 + (1 - x_i)^2),[-5,5],最优值: 0
    let f3 = @lib.rosenbrock_function

    // Ackley 函数,[-32.768,32.768],最优值: 0
    let f4 = @lib.ackley_function

    // Griewank 函数,[-600,600],最优值: 0
    let f5 = @lib.griewank_function

    // Schwefel 函数: 418.9829*n - sum(x_i*sin(sqrt(|x_i|))),[-500,500],最优值: 0
    let f6 = @lib.schwefel_function

    // Levy 函数,[-10,10],最优值: 0
    let f7 = @lib.levy_function

    // Michalewicz 函数 (m=10),[0,pi],5维最优值: -4.687658
    let f8 = @lib.michalewicz_function

    // Zakharov 函数,[-10,10],最优值: 0
    let f9 = @lib.zakharov_function

    // Booth 函数 (2维: 仅使用 x_0, x_1),[-10,10],最优值: 0(在 (1,3))
    let f10 = @lib.booth_function

    // Matyas 函数 (2维: 仅使用 x_0, x_1),[-10,10],最优值: 0
    let f11 = @lib.matyas_function

    #基准测试

    // 运行单轮基准测试
    let results = @lib.run_benchmark_at_evals(f, "Sphere", dim, bounds, 0.0, 5000, rng)
    @lib.print_benchmark_table(results, "Sphere", 5000)

    // 运行多次试验统计分析
    @lib.run_multiple_trials(f, "Sphere", dim, bounds, 0.0, 10000, 20, 100.0)

    #基准函数性能对比(5维,20次试验平均值,10000 次评估)

    算法SphereRastriginRosenbrock
    Random Search1.2309717.333181.8003
    Hill Climbing0.011798643.50073.24077
    Simulated Annealing0.011930721.13792.36552
    PSO8.570e-280.8954660.481973
    Differential Evolution3.893e-172.433245.023e-07
    Genetic Algorithm0.02587421.8186510.8283
    Nelder-Mead036.6178160.92
    Firefly0.001517432.492153.34032
    ACO8.994e-089.302871.03295
    Bee Colony3.874e-232.920591.32541
    Tabu Search0.010578610.03752.61421
    Local Search0.051536410.0522.5924
    CMA-ES8.402e-1721.59052.22265
    CEM8.536e-080.1990232.61812
    Cuckoo Search0.15595113.249318.4164
    GWO2.377e-084.975272.81724
    Hooke-Jeeves1.479e-1241.1910.687194
    WOA1.930e-130.09949590.824381
    Bat Algorithm0.030328213.521772.9674
    Harmony Search1.803e-050.06114361.13162
    SCA3.570e-8700.00265951
    MFO1.906e-162.341642.55408
    ALO0.33659412.966533.0866
    SSA4.865e-175.923342.65036
    HHO000.00108404
    FPA0.02177424.114482.58233
    DA0.64175526.799347.421
    CSA4.162e-070.0002987035.380e-05
    SalpSA0.002206779.374510.140312
    MBO1.410e-050.002696120.00125645
    AEO0.002203944.126052.75217
    IWO0.001554421.691641.38689
    BFO0.004344277.028341.4009
    SFLA5.733e-052.171372.7386
    GSO0.00012782611.32552.91445
    GSA1.0166125.695581.6524
    TLBO5.846e-460.2226731.47914
    AMO1.913e-115.237072.82492
    MVO0.4614866.8962164.359
    KH0.28242910.631117.2275
    ICA0.2241888.817127.1254
    SFS3.677e-050.01175031.19748
    SOS2.349e-342.636640.519568
    BBO0.07489883.7707225.4932
    EHO0.0001528115.402492.15261
    EO0.0031097120.44711.54658
    WDO1.81616102.3348693.35
    Jaya3.257e-296.192490.103739
    SLC9.336e-059.182075.74533
    GBPSO2.337e-10513.03390.786705
    MSA1.5427932.5245215.551
    PFA3.229e-065.522680.281237
    CPA0.0003602392.319772.533
    BCO0.002818213.954523.11246
    FFOA7.182e-056.281771.24135
    AFSA0.060756710.81026.47047
    FWA0.0004745986.01043.66727
    BSO2.218e-052.9890.513668
    BSA0.0027354713.32337.72253
    PIO1.047e-0910.6462.44087
    AOA0.0001882930.0714340.0523264
    HBA0.002057513.210570.236659
    POA9.903e-141.170621.09585
    TSA003.69103
    GJO1.400e-165.6797536.9972
    GOA0.001030259.415858.54423
    SOA8.909e-441.840747.82782
    CSO3.691e-078.715920.572322
    GTO0.0009027031.417892.83956
    WCA0.01265085.886442.95402
    SMA0.31555710.447341.8348
    AO0.004303574.478153.97172
    ChOA7.760e-627.1672425.3332
    DO0.82175612.0033127.478
    ZOA0.000741025.065920.513748

    #算法分类特点总结

    类别代表算法特点
    🔍 单点搜索随机搜索、爬山法、模拟退火、SPSA、盆地跳跃简单、易于实现,适合低维问题
    🔧 局部搜索禁忌搜索、引导局部搜索、大洪水、变邻域、阈值接受强化局部开发,避免陷入局部最优
    🧬 进化算法DE、GA、jDE、SHADE、JADE、SaDE、Memetic、CLONALG、ICA、BBO、BSA基于种群进化,鲁棒性好
    🐝 群体智能PSO、萤火虫、蚁群、蜂群、灰狼、鲸群、蝙蝠、和声、麻雀搜索、哈里斯鹰、GOA、SOA、CSO、GTO、SMA、AO、ChOA、DO、ZOA、CPSO、LPSO、QPSO、UPSO、ACOR 等基于群体行为,全局搜索能力强
    📐 确定性直接搜索Nelder-Mead、Hooke-Jeeves、Powell、Rosenbrock、CRS、DIRECT无需梯度,适合不可导函数
    🧮 进化策略CMA-ES、ES协方差自适应,适合病态问题
    📊 估计分布CEM、SFS、PBIL、UMDA、cGA基于概率分布估计,适合连续优化
    ⚛️ 物理启发GSA、MVO、EO、WDO、WCA、EM、WWO、TEO、RIME、BBBC、BH、CBO、HGSO基于物理规律,自适应搜索
    🎓 教学模型TLBO无需算法特定参数,收敛速度快
    🔢 数学启发Jaya、AOA、RUN、GBO、INFO、SABO、Golden-SA、NRBO、InS、SPO基于数学原理的搜索机制
    👥 人类行为BSO、SLC、PO、FBI、TWO、LCA模拟人类社会行为过程

    #许可证

    本项目基于 Apache-2.0 license 开源。