1 个不稳定版本

0.1.0 2023年7月14日

#979 in 算法


3 crate 中使用

GPL-3.0-or-later

520KB
9K SLoC

MAHF

GitHub Workflow Status (with event) GitHub

元启发式算法模块化构建和评估框架。

MAHF 通过将元启发式算法分解为其基本组件,使构建和实验分析变得简单。

该框架不仅支持进化算法,还支持任何其他元启发式框架,包括非基于群体的、构建性和混合方法。

概述

MAHF 旨在使元启发式算法的构建和修改尽可能简单和可靠。它提供了一整套用于日志记录、评估和比较这些启发式算法的实用程序。

关键特性包括

  • 简单且模块化的元启发式算法构建
  • 轻松的状态管理和跟踪
  • 可用的常见算子集合
  • 流行元启发式算法的模板
  • 灵活的运行时信息日志记录

尽管 MAHF 主要作为研究工具开发,但它也可以用于解决实际问题。

入门指南

要求

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
mahf = { git = "https://github.com/mahf-opt/mahf" }

示例

一个用于实值黑盒优化的简单遗传算法。

该示例使用 MAHF 的 公共基准函数

use mahf::prelude::*;
use mahf_bmf::BenchmarkFunction;

let problem = BenchmarkFunction::sphere(/*dim: */ 30);

let ga = Configuration::builder()
    .do_(initialization::RandomSpread::new(population_size))
    .evaluate()
    .update_best_individual()
    .while_(conditions::LessThanN::iterations(n), |builder| {
       builder
           .do_(selection::Tournament::new(num_selected, size))
           .do_(recombination::ArithmeticCrossover::new_insert_both(pc))
           .do_(mutation::NormalMutation::new(std_dev, rm))
           .do_(boundary::Saturation::new())
           .evaluate()
           .update_best_individual()
           .do_(replacement::MuPlusLambda::new(max_population_size))
    })
    .build();

let state = ga.optimize(&problem, evaluate::Sequential::new())?;
println!("Best solution found: {:?}", state.best_individual());

更多示例可以在 示例目录 中找到。

启发式模板的示例可以在 启发式 下找到。

对于组件实现,请参阅 组件

文档

MAHF 拥有详尽的文档,应有助于您入门。

只需运行

$ cargo doc --open

来构建并打开文档。

相关项目

贡献

我们欢迎社区贡献,并感谢您对改进此项目的兴趣。很快将提供贡献指南。

许可证

本项目的许可证为GNU通用公共许可证v3.0

出版物

引用MAHF

如果您在科学出版物中使用MAHF,我们将感谢您引用以下论文

Helena Stegherr,Leopold Luley,Jonathan Wurth,Michael Heider,和Jörg Hähner。2023. 元启发式模块化构建和评估框架。应用信息学院。 https://opus.bibliothek.uni-augsburg.de/opus4/103452

Bibtex条目

@techreport{stegherr2023,
  author    = {Helena Stegherr and Leopold Luley and Jonathan Wurth and Michael Heider and J{\"o}rg H{\"a}hner},
  title     = {A framework for modular construction and evaluation of metaheuristics},
  institution = {Fakult{\"a}t f{\"u}r Angewandte Informatik},
  series    = {Reports / Technische Berichte der Fakult{\"a}t f{\"u}r Angewandte Informatik der Universit{\"a}t Augsburg},
  number    = {2023-01},
  pages     = {25},
  year      = {2023},
}

依赖关系

~11–20MB
~286K SLoC