#black-box-optimization #problem #generator #benchmark #black-box #landscape

bin+lib problem_generator

TD Mk Landscape 基准生成器,用于与黑盒优化算法配合使用

6 个版本

0.3.0 2022 年 1 月 4 日
0.2.1 2021 年 12 月 26 日
0.1.3 2021 年 8 月 5 日
0.1.2 2021 年 7 月 11 日

#189 in 性能分析

Apache-2.0 协议

110KB
2K SLoC

问题生成器 - TD Mk Landscape 基准生成器

此仓库包含在研讨会论文《TD Mk Landscapes 基准生成器》中介绍的问题生成器的源代码,该论文由 Tobias van Driessel 和 Dirk Thierens 在 GECCO '21 分析优化启发式算法行为研讨会中提出:https://dl.acm.org/doi/10.1145/3449726.3463177。这篇研讨会论文是我硕士论文研究的一部分。

问题生成器是一个二进制/库,用于生成 TD Mk Landscapes,这对于基准测试黑盒优化器非常有用。

主要功能

  • 生成问题并计算这些问题的全局最优解(或最优解)
  • 生成一些用于问题生成的输入定义域文件

包含定义域文件生成应使从头开始生成 TD Mk Landscape 问题并使用它来基准测试算法变得容易。

研讨会论文摘要

我们介绍了一个公开的树分解(TD)Mk Landscapes 基准生成器。Whitley 等人[1]介绍了 TD Mk Landscapes,以消除相邻 NK Landscapes 中不必要的限制,同时仍然允许在多项式时间内计算全局最优解。这使得 TD Mk Landscapes 更宽容,同时与相邻 NK Landscapes 一样方便。这些特性使它非常适合基准测试黑盒算法。然而,Whitley 等人引入了一种仅构建相邻 NK Landscapes 的构造算法。最近,Thierens 等人[2]介绍了一种算法 CliqueTreeMk,可以构建任何 TD Mk Landscape 并找到其最优解。在这项工作中,我们更详细地介绍了 CliqueTreeMk,实现了它以供公共使用,并在一个示例 TD Mk Landscape 问题上展示了 LT-GOMEA 的结果。结果表明,重叠度更高的欺骗陷阱问题不一定降低 LT-GOMEA 的性能和有效性。

目录

快速开始

示例输出问题

一个示例输出问题可以在 data/ 文件夹中找到,如果只想使用示例输出问题。

二进制

最快的方式是,如果你已经安装了 Rust,就使用 cargo install problem_generator,如果没有,可以从 发行版页面 下载可执行文件。更多信息请见 安装。创建一个新的根目录,我们将在此目录中存储目标域和问题文件夹,并创建一个新的配置文件以生成一些问题

mkdir example/problem_generation -p
vim example/problem_generation/deceptive_trap_separated.txt

复制以下内容

M 1 4
k 5 6
o 0 1
b 1 2
deceptive-trap

然后输入 problem_generator configuration_folder example 以每个配置生成一个问题,这些可以在 problems 文件夹中找到。相应的目标域值可以在 codomain_files 文件夹中找到。

Rust

要在项目中使用 problem_generator,您只需将 problem_generator 添加到您的 cargo.toml

[dependencies]
problem_generator = "^0.3.0"

库文档可以在 doc.rs 上找到。

C++

当前正在进行中的工作是为该库创建一个 C++ 封装器,大部分工作已经完成,可以在 cpp-integration 分支 中找到。这将被 IOHprofiler/IOHexperimenter 基准测试框架用于集成 TD Mk Landscape 基准测试生成器。请注意,C++ 封装器可以相当容易地调整为一个 C 封装器。

安装

二进制

有多种选择可供选择

  • 下载可执行文件
    1. 发行版页面 下载可执行文件
  • 使用 crates.io 安装
    1. 如果您还没有安装 Rust,请运行 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 来安装 Rustup 和 Rust 编程语言
    2. 然后运行 cargo install problem_generatorcrates.io 安装问题生成器
  • 编译
    1. 如果您还没有安装 Rust,请运行 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 来安装 Rustup 和 Rust 编程语言
    2. 然后检出此存储库 git clone https://github.com/tobiasvandriessel/problem-generator && cd problem-generator
    3. 然后运行 cargo install --path .cargo build --release,具体取决于您是想安装还是只是构建。

用法/文档

文档 解释了问题生成器的用法。

参考

[1] 达雷尔·惠特利,弗朗西斯科·奇卡诺,布莱恩·W·戈德曼。 “灰色盒优化用于Mk景观(NK景观和MAX-kSAT)”。

[2] 迪克·瑟伦斯,托比亚斯·范·德里斯尔。 “树分解Mk景观的基准生成器”。

许可证

版权所有 2021 托比亚斯·范·德里斯尔

根据Apache许可证2.0版(以下简称“许可证”);除非符合许可证要求或书面同意,否则不得使用此文件。您可以在以下地址获取许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”分发,不提供任何明示或暗示的保证或条件。有关许可证的具体语言,请参阅许可证,以了解对许可证权限和限制的规范。

依赖关系

~8-17MB
~214K SLoC