Abstract
The benchmark for human-powered aircraft (hpa) design is introduced in the paper Single and Multi-Objective Optimization Benchmark Problems Focusing on Human-Powered Aircraft Design. The original benchmark is available here. This package serves as a wrapper for the original benchmark.
APIs
class ConstrainedProblem(problem_name: str, n_div: int = 4, level: int = 0 )
problem_name
: The name of a benchmark problem. All problem names and their explanations are provided here.n_div
: The wing segmentation number and alters the problem’s dimension. It must be an integer greater than 0. Concretely, the number of sections in this figure. The default value used in the paper is 4.level
: The difficulty level of the problem. It must be in[0, 1, 2]
Note that Problem
also receives the same set of arguments.
Method and Properties
search_space
: Return the search space.- Returns:
dict[str, optuna.distributions.BaseDistribution]
- Returns:
directions
: Return the optimization directions.- Returns:
list[optuna.study.StudyDirection]
- Returns:
evaluate(params: dict[str, float])
: Evaluate the objective function given a dictionary of parameters.- Args:
params
: A dictionary representing decision variable like{"x0": x1_value, "x1": x1_value, ..., "xn": xn_value}
. The number of parameters must be equal toself.nx
.xn_value
must be afloat
in[0, 1]
.
- Returns: List of length
self.nf
.
- Args:
evaluate_constraints(params: dict[str, float])
: Evaluate the constraint functions and return the list of constraint functions values. This method is only available inConstrainedProblem
.- Args:
params
: A dictionary representing the decision variables, with the same format and value range as in evaluate.
- Returns: List of length
self.ng
.
- Args:
The properties and functions of classes in hpa.problem
are also available such as nx
.
Installation
The dependencies can be installed via:
pip install pandas scipy optunahub
Or you can install the required packages from optunahub as well.
pip install -r https://hub.optuna.org/benchmarks/hpa/requirements.txt
Example
from __future__ import annotations
import optuna
import optunahub
hpa = optunahub.load_module("benchmarks/hpa")
problem = hpa.ConstrainedProblem("HPA131")
study = optuna.create_study(directions=problem.directions)
study.optimize(problem, n_trials=10)
if len(problem.directions) == 1:
print(study.best_trial)
else:
print(study.best_trials)
Reference
@inproceedings{namura2025single,
title={Single and multi-objective optimization benchmark problems focusing on human-powered aircraft design},
author={Namura, Nobuo},
booktitle={International Conference on Evolutionary Multi-Criterion Optimization},
pages={195--210},
year={2025},
organization={Springer}
}
- Package
- benchmarks/hpa
- Author
- Optuna Team
- License
- MIT License
- Verified Optuna version
- 4.1.0
- Last update
- 2025-04-25