LibMOON is a multiobjective optimization framework that spans from single-objective optimization to multiobjective optimization. It aims to enhance the understanding of optimization problems and facilitate fair comparisons between MOO algorithms. A submission to NeurIPS 2024 DB track.
"I raise my cup to invite the moon.
With my shadow we become three from one."
-- Li Bai
- Xiaoyuan Zhang (Maintainer of Pareto set learning, gradient-based solver)
- Ji Cheng
- Liang Zhao (Maintainer of MOBO)
- Weiduo Liao
- Zhe Zhao
- Xi Lin
- Cheng Gong
- Longcan Chen
- Yingying Yu
- Hongzong Li (For the non-local search)
- Prof. Jingda Deng (Xi'an Jiaotong University) (For advice of High-D hypervolume computation)
- Prof. Yifan Chen (Hong Kong Baptist University) (For advice of OR)
- Prof. Ke Shang (Shenzhen University) (For advice of approximate hypervolume-based methods)
- Prof. Han Zhao (University of Illinois at Urbana-Champaign) (For advice of fariness classification)
The corresponding author is Chair Prof. Qingfu Zhang (FIEEE, City University of Hong Kong).
- Xiaoyuan Zhang (xzhang2523-c@my.cityu.edu.hk)
- QQ group:
For more information on methodologies, please visit our GitHub repository. Contributions and stars are welcome!
(1) A standardlized gradient based framework.
For more information on problem specifics, please refer to the Readme_problem.md
file.
Here's a list of synthetic problems along with relevant research papers and project/code links:
Problem | Paper | Project/Code |
---|---|---|
ZDT | Paper | Project |
DTLZ | Paper | Project |
MAF | Paper | Project |
WFG | Paper | Code |
Fi's | Paper | Code |
RE | Paper | Code |
This section details problems related to multitask learning, along with their corresponding papers and project/code references:
Problem | Paper | Project/Code |
---|---|---|
MO-MNISTs | PMTL | COSMOS |
Fairness Classification | COSMOS | COSMOS |
Federated Learning | Federal MTL | COSMOS |
Synthetic (DST, FTS...) | Envelop | Project |
Robotics (MO-MuJoCo...) | PGMORL | Code |
LibMOON includes a variety of solvers tailored for different needs as img below shows. The following solvers are currently:
- GradAggSolver
- EPOSolver
- MOO-SVGDSolver (*)
- MGDASolver
- PMGDASolver
- PMTLSolver
- HVGradSolver
(*) The original MOO-SVGD code does not include an implementation for Multitask Learning (MTL). Our release of MOO-SVGD is the first open-source code that supports MTL.
Method | Property | #Obj | Support | Published | Complexity |
---|---|---|---|---|---|
Aggregation fun. based, e.g. Tche,mTche,LS,PBI,... | Pareto solution with aggregations. | Any | Y | ||
COSMOS code | Approximated exact solution. | Any | Y | ICDM 2021 | |
EPO code | Exact solution. | Any | Y | ICML 2020 | |
MOO-SVGD code | A set of diverse Pareto solution. | Any | Y | NeurIPS 2021 | |
MGDA code | Arbitray Pareto solutions. Location affected highly by initialization. | Any | Y | NeurIPS 2018 | |
PMGDA | Pareto solutions satisfying any preference. | Any | Y | Under review | |
PMTL code | Pareto solutions in sectors. | 2. 3 is difficult. | Y | NeurIPS 2019 | |
HVGrad WangHao code | It is a gradient-based HV method. | 2/3 | Y | CEC 2023 |
Here,
Time complexity of gradient based methods are as follows,
- Tier 1. GradAggSolver.
- Tier 2. MGDASolver, EPOSolver, PMTLSolver.
- Tier 3. GradHVSolver
- Tier 4. MOOSVGDSolver
Important things to notice: The original code MOO-SVGD does not offer a MTL implement. Our code is the first open source code for MTL MOO-SVGD.
LibMOON supports various models of PSL solvers, categorized as follows:
- EPO-based PSL
- Agg-based PSL
- PMGDA-based PSL
- Evolutionary-based PSL
- PSL-MONO
- PSL-DirHV-EI
- DirHV-EGO
- HV Net, a model for handling high-volume data, available here.
Libmoon is available on PyPI. You can install it using pip:
pip install libmoon==0.1.11
- Example1: Finding a size-K (K=5) Pareto solutions with four lines of code.
from libmoon.solver.gradient.methods import EPOSolver
from libmoon.util_global.initialization import synthetic_init
from libmoon.util_global.weight_factor import uniform_pref
from libmoon.util_global import get_problem
problem = get_problem(problem_name='ZDT1')
prefs = uniform_pref(n_prob=5, n_obj=problem.n_obj, clip_eps=1e-2)
solver = EPOSolver(problem, step_size=1e-2, n_iter=1000, tol=1e-2)
res = solver.solve(x=synthetic_init(problem, prefs), prefs=prefs)
- Example2: PSL in a problem with three lines of solving problem and two lines of evaluating the results.
from libmoon.solver.psl.core_psl import AggPSLSolver
from libmoon.util_global import get_problem
from libmoon.util_global.weight_factor import uniform_pref
from torch import Tensor
problem = get_problem(problem_name='ZDT1')
# agg list [ ’ls ’, ’tche ’, ’mtche ’, ’pbi ’, ... ]
prefs = uniform_pref(n_prob=100, n_obj=problem.n_obj, clip_eps=1e-2)
solver = AggPSLSolver(problem, agg='ls')
model = solver.solve()
eval_y = problem.evaluate(model(Tensor(prefs).cuda()))
=======
LibMOON is a multiobjective optimization framework that spans from single-objective optimization to multiobjective optimization. It aims to enhance the understanding of optimization problems and facilitate fair comparisons between MOO algorithms. A submission to NeurIPS 2024 DB track.
"I raise my cup to invite the moon.
With my shadow we become three from one."
-- Li Bai
- Xiaoyuan Zhang (Maintainer of Pareto set learning, gradient-based solver)
- Ji Cheng
- Liao Zhao (Maintainer of MOBO)
- Weiduo Liao
- Zhe Zhao
- Xi Lin
- Cheng Gong
- Longcan Chen
- YingYing Yu
- Prof. Jingda Deng (Xi'an Jiaotong University) (For advice of High-D hypervolume computation)
- Prof. Yifan Chen (Hong Kong Baptist University) (For advice of OR)
- Prof. Ke Shang (Shenzhen University) (For advice of approximate hypervolume-based methods)
- Prof. Han Zhao (University of Illinois at Urbana-Champaign) (For advice of fariness classification)
The corresponding author is Chair Prof. Qingfu Zhang (FIEEE, City University of Hong Kong).
- Xiaoyuan Zhang (xzhang2523-c@my.cityu.edu.hk)
- QQ group:
For more information on methodologies, please visit our GitHub repository. Contributions and stars are welcome!
(1) A standardlized gradient based framework.
For more information on problem specifics, please refer to the Readme_problem.md
file.
Here's a list of synthetic problems along with relevant research papers and project/code links:
Problem | Paper | Project/Code |
---|---|---|
ZDT | Paper | Project |
DTLZ | Paper | Project |
MAF | Paper | Project |
WFG | Paper | Code |
Fi's | Paper | Code |
RE | Paper | Code |
This section details problems related to multitask learning, along with their corresponding papers and project/code references:
Problem | Paper | Project/Code |
---|---|---|
MO-MNISTs | PMTL | COSMOS |
Fairness Classification | COSMOS | COSMOS |
Federated Learning | Federal MTL | COSMOS |
Synthetic (DST, FTS...) | Envelop | Project |
Robotics (MO-MuJoCo...) | PGMORL | Code |
LibMOON includes a variety of solvers tailored for different needs as img below shows. The following solvers are currently:
- GradAggSolver
- EPOSolver
- MOO-SVGDSolver (*)
- MGDASolver
- PMGDASolver
- PMTLSolver
- HVGradSolver
(*) The original MOO-SVGD code does not include an implementation for Multitask Learning (MTL). Our release of MOO-SVGD is the first open-source code that supports MTL.
Method | Property | #Obj | Support | Published | Complexity |
---|---|---|---|---|---|
Aggregation fun. based, e.g. Tche,mTche,LS,PBI,... | Pareto solution with aggregations. | Any | Y | ||
COSMOS code | Approximated exact solution. | Any | Y | ICDM 2021 | |
EPO code | Exact solution. | Any | Y | ICML 2020 | |
MOO-SVGD code | A set of diverse Pareto solution. | Any | Y | NeurIPS 2021 | |
MGDA code | Arbitray Pareto solutions. Location affected highly by initialization. | Any | Y | NeurIPS 2018 | |
PMGDA | Pareto solutions satisfying any preference. | Any | Y | Under review | |
PMTL code | Pareto solutions in sectors. | 2. 3 is difficult. | Y | NeurIPS 2019 | |
HVGrad WangHao code | It is a gradient-based HV method. | 2/3 | Y | CEC 2023 |
Here,
Time complexity of gradient based methods are as follows,
- Tier 1. GradAggSolver.
- Tier 2. MGDASolver, EPOSolver, PMTLSolver.
- Tier 3. GradHVSolver
- Tier 4. MOOSVGDSolver
Important things to notice: The original code MOO-SVGD does not offer a MTL implement. Our code is the first open source code for MTL MOO-SVGD.
LibMOON supports various models of PSL solvers, categorized as follows:
- EPO-based PSL
- Agg-based PSL
- PMGDA-based PSL
- Evolutionary-based PSL
- PSL-MONO
- PSL-DirHV-EI
- DirHV-EGO
- HV Net, a model for handling high-volume data, available here.
Libmoon is available on PyPI. You can install it using pip:
pip install libmoon==0.1.11
- Example1: Finding a size-K (K=5) Pareto solutions with four lines of code.
from libmoon.solver.gradient.methods import EPOSolver
from libmoon.util_global.initialization import synthetic_init
from libmoon.util_global.weight_factor import uniform_pref
from libmoon.util_global import get_problem
problem = get_problem(problem_name='ZDT1')
prefs = uniform_pref(n_prob=5, n_obj=problem.n_obj, clip_eps=1e-2)
solver = EPOSolver(problem, step_size=1e-2, n_iter=1000, tol=1e-2)
res = solver.solve(x=synthetic_init(problem, prefs), prefs=prefs)
- Example2: PSL in a problem with three lines of solving problem and two lines of evaluating the results.
from libmoon.solver.psl.core_psl import AggPSLSolver
from libmoon.util_global import get_problem
from libmoon.util_global.weight_factor import uniform_pref
from torch import Tensor
problem = get_problem(problem_name='ZDT1')
# agg list [ ’ls ’, ’tche ’, ’mtche ’, ’pbi ’, ... ]
prefs = uniform_pref(n_prob=100, n_obj=problem.n_obj, clip_eps=1e-2)
solver = AggPSLSolver(problem, agg='ls')
model = solver.solve()
eval_y = problem.evaluate(model(Tensor(prefs).cuda()))
If you find our code useful, please cite our paper:
@software{libmoon_2024,
author = {Zhang, Xiaoyuan and Zhao, Liang and Yu, Yingying and Lin, Xi and Chen, Yifan and Zhao, Han and Zhang, Qingfu},
title = {{LibMOON: A Gradient-based MultiObjective
OptimizatioN Library in PyTorch}},
url = {https://github.com/xzhang2523/libmoon},
version = {2.0.4},
year = {2024}
}