1 个不稳定版本
0.1.0 | 2023年7月14日 |
---|
#979 in 算法
在 3 crate 中使用
520KB
9K SLoC
MAHF
元启发式算法模块化构建和评估框架。
MAHF 通过将元启发式算法分解为其基本组件,使构建和实验分析变得简单。
该框架不仅支持进化算法,还支持任何其他元启发式框架,包括非基于群体的、构建性和混合方法。
概述
MAHF 旨在使元启发式算法的构建和修改尽可能简单和可靠。它提供了一整套用于日志记录、评估和比较这些启发式算法的实用程序。
关键特性包括
- 简单且模块化的元启发式算法构建
- 轻松的状态管理和跟踪
- 可用的常见算子集合
- 流行元启发式算法的模板
- 灵活的运行时信息日志记录
尽管 MAHF 主要作为研究工具开发,但它也可以用于解决实际问题。
入门指南
要求
- Rust 编程语言
- 要么是
gcc
要么是clang
安装
将以下内容添加到您的 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
来构建并打开文档。
相关项目
- mahf-bmf:公共连续基准函数
- mahf-coco:到 COCO 基准框架的绑定
- mahf-tsplib:到 TSPLIB 库的绑定
贡献
我们欢迎社区贡献,并感谢您对改进此项目的兴趣。很快将提供贡献指南。
许可证
本项目的许可证为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