Home
Why moo-rs?
Rust performance
moors is a pure Rust crate and it's exposed completely independent to Python.
Pluggable operators
Swap crossover, mutation, selection and survival operators freely — or bring your own.
Many-objective ready
From classic NSGA-II to reference-vector methods like NSGA-III and REVEA — all included.
Available Multi-Objective Algorithms
A concise index of the currently available algorithms.
Introduction to Multi-Objective Optimization
Multi-objective optimization refers to a set of techniques and methods designed to solve problems where multiple objectives must be satisfied simultaneously. These objectives are often conflicting, meaning that improving one may deteriorate another. For instance, one might seek to minimize production costs while maximizing product quality at the same time.
General Formulation
A multi-objective optimization problem can be formulated in a generic mathematical form. If we have \(k\) objective functions to optimize, it can be expressed as:
Where: - \( x \) represents the set of decision variables. - \( f_i(x) \) are the objective functions. - \( g_i(x) \leq 0 \) and \( h_j(x) = 0 \) represent the constraints_fn of the problem (e.g., resource limits, quality requirements, etc.).
Unlike single-objective optimization, here we seek to optimize all objectives simultaneously. However, in practice, there is no single "best" solution for all objectives. Instead, we look for a set of solutions known as the Pareto front or Pareto set.
Advantages for Multi-Objective Optimization
- Natural Handling of Multiple Objectives: By operating on a population of solutions, GAs can maintain an approximation to the Pareto front during execution.
- Flexibility: They can be easily adapted to different kinds of problems (discrete, continuous, constrained, etc.).
- Robustness: They tend to perform well in the presence of noise or uncertainty in the problem, offering acceptable performance under less-than-ideal conditions.
Beauty and Misbehavior Optimization Problem
In this unique optimization problem, there is only one individual who optimizes both beauty and misbehavior at the same time: my little dog Arya!
Arya not only captivates with her beauty, but she also misbehaves in the most adorable way possible. This problem serves as a reminder that sometimes the optimal solution is as heartwarming as it is delightfully mischievous.