mooutils

Multi-Objective Optimization Utilities

https://github.com/adbjesus/mooutils

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.9%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

Multi-Objective Optimization Utilities

Basic Info
  • Host: GitHub
  • Owner: adbjesus
  • License: mit
  • Language: C++
  • Default Branch: main
  • Size: 170 KB
Statistics
  • Stars: 2
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Created almost 4 years ago · Last pushed almost 4 years ago
Metadata Files
Readme License Citation Zenodo

README.md

MOOUtils - Multi-Objective Optimization Utilities

MOOUtils is a C++20 library containing several utilities to help implement multi-objective optimization algorithms. Currently, it consists of the following headers:

  • mooutils/concepts.hpp - contains the C++20 concepts considered throughout the library in particular to identify what constitutes a decision, objective, or constraint vector, how a solution class can claim to have such vectors, and what defines a solution set.
  • mooutils/indicators.hpp - contains functions for common multi-objective quality indicators and incremental structures for those indicators.
  • mooutils/orders.hpp - contains common orders such as Pareto dominance and lexicographical order to compare solutions.
  • mooutils/queues.hpp - contains different types of commonly considered queues to keep solutions.
  • mooutils/sets.hpp - contains different types of non-dominated (minimal) sets to keep solutions.
  • mooutils/solution.hpp - contains functions related to a solution, e.g., to get a particular vector from a solution, as well as, base classes that can be easily used to design a solution.

Note: This library is still under active development and breaking changes may occur between minor versions. Nonetheless, the code is tested and all algorithms and data structures are expected to be correct.

Dependencies

Installation

To install the library you need to first configure the project:

sh cmake -B build

Then, run:

sh cmake --install build --prefix "installdir"

This will install the library in the installdir folder.

Setup for development

To configure an enviroment for development you can use the following cmake configuration:

bash cmake -B build \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DMOOUTILS_ENABLE_TESTS=ON \ -DMOOUTILS_ENABLE_BENCHMARKS=ON \ -DMOOUTILS_ENABLE_WARNINGS=ON

This will turn on building the tests, benchmarks, and warnings.

Using with CMAKE

This library is prepared for easy inclusion with cmake. In particular, after installing the library, it should be possible to include it in a cmake project by adding:

CMake find_package(mooutils)

Alternatively, it can be fetched from this repo with FetchContent:

CMake include(FetchContent) FetchContent_Declare( mooutils GIT_REPOSITORY https://github.com/adbjesus/mooutils.git ) FetchContent_MakeAvailable(mooutils) add_library(mooutils::mooutils ALIAS mooutils)

Then, simply link it to the target:

CMake target_link_libraries(sometarget mooutils::mooutils)

Using with nix flakes

This library is prepared to be used with nix flakes. As such, if you are using nix flakes to manage the dependencies of your project you can include the url to this repository in your inputs, and add it as a dependency.

Owner

  • Name: Alexandre Jesus
  • Login: adbjesus
  • Kind: user
  • Location: Portugal
  • Company: University of Coimbra

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Jesus"
  given-names: "Alexandre D."
  orcid: "https://orcid.org/0000-0001-7691-0295"
title: "mooutils"
doi: 10.5281/zenodo.6855878
date-released: 2022
url: "https://github.com/adbjesus/mooutils"

GitHub Events

Total
  • Watch event: 1
Last Year
  • Watch event: 1