« Back to top page

Single and Multi-objective Optimization Benchmark Problems Focusing on Human-Powered Aircraft Design

The benchmark problem for human-powered aircraft design introduced in the paper `Single and Multi-Objective Optimization Benchmark Problems Focusing on Human-Powered Aircraft Design`

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]
  • directions: Return the optimization directions.
    • Returns: list[optuna.study.StudyDirection]
  • 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 to self.nx. xn_value must be a float in [0, 1].
    • Returns: List of length self.nf.
  • evaluate_constraints(params: dict[str, float]): Evaluate the constraint functions and return the list of constraint functions values. This method is only available in ConstrainedProblem.
    • Args:
      • params: A dictionary representing the decision variables, with the same format and value range as in evaluate.
    • Returns: List of length self.ng.

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