Data-Driven Multitask Optimization Laboratory

D²MTOLab Logo

Documentation PyPI version Downloads GitHub Stars Python Version License

Overview

D²MTOLab (Data-Driven Multitask Optimization Laboratory) is a comprehensive Python platform for optimization research, featuring 110+ algorithms, 180+ benchmark problems, and powerful tools for problem definition, algorithm development, and performance evaluation.

Whether you’re working on expensive black-box optimization, multiobjective optimization, or complex multitask scenarios, D²MTOLab provides a flexible and extensible framework to accelerate your research and support real-world applications.

Features

  • Comprehensive Algorithms - 110+ algorithms for expensive/inexpensive, single/multitask, single/multiobjective optimization

  • Rich Problem Suites - 180+ benchmark problems and real-world applications

  • Data-Driven Optimization - Surrogate modelling (GP, BO) for expensive optimization

  • Flexible Framework - Simple API and intuitive workflow for rapid prototyping

  • Fully Extensible - Easy to add custom algorithms and problems

  • Powerful Analysis Tools - Built-in visualization and statistical analysis

  • Parallel Computing - Multi-core support for batch experiments

Documentation

Quick Start

Installation

pip install ddmtolab

Requirements: Python 3.10+, PyTorch 2.5+, NumPy 2.0+

Basic Usage

import numpy as np
from ddmtolab.Methods.mtop import MTOP
from ddmtolab.Algorithms.MTSO.MTBO import MTBO

# Define objective function
def forrester(x):
    return (6 * x - 2) ** 2 * np.sin(12 * x - 4)

# Create and solve optimization problem
problem = MTOP()
problem.add_task(forrester, dim=1)
results = MTBO(problem).optimize()

print(f"Best solution: {results.best_decs}")
print(f"Best objective: {results.best_objs}")

Batch Experiments

from ddmtolab.Methods.batch_experiment import BatchExperiment
from ddmtolab.Methods.data_analysis import DataAnalyzer
from ddmtolab.Algorithms.STSO.BO import BO
from ddmtolab.Algorithms.MTSO.MTBO import MTBO
from ddmtolab.Problems.MTSO.cec17_mtso_10d import CEC17MTSO_10D

if __name__ == '__main__':
    batch_exp = BatchExperiment(base_path='./Data', clear_folder=True)

    prob = CEC17MTSO_10D()
    batch_exp.add_problem(prob.P1, 'P1')
    batch_exp.add_problem(prob.P2, 'P2')

    batch_exp.add_algorithm(BO, 'BO', n_initial=20, max_nfes=100)
    batch_exp.add_algorithm(MTBO, 'MTBO', n_initial=20, max_nfes=100)

    batch_exp.run(n_runs=20, max_workers=8)
    DataAnalyzer().run()

Optimization Visualization

Optimization Animation

Key Components

Algorithms (110+)

Category

Type

Algorithms

STSO

Inexpensive

GA, DE, PSO, SL_PSO, KLPSO, CSO, CMA_ES, IPOP_CMA_ES, sep_CMA_ES, MA_ES, xNES, OpenAI_ES, AO, GWO, EO

STSO

Expensive

BO, EEI_BO, ESAO, SHPSO, SA_COSO, TLRBF, GL_SADE, AutoSAEA, DDEA_MESS, LSADE

STMO

Inexpensive

NSGA_II, NSGA_III, NSGA_II_SDR, SPEA2, MOEA_D, MOEA_DD, MOEA_D_FRRMAB, MOEA_D_STM, RVEA, IBEA, TwoArch2, MSEA, C_TAEA, CCMO

STMO

Expensive

ParEGO, K_RVEA, DSAEA_PS, KTA2, REMO, ADSAPSO, CSEA, DISK, DRLSAEA, DirHV_EI, EDN_ARMOEA, EIM_EGO, EM_SAEA, KTS, MGSAEA, MMRAEA, MOEA_D_EGO, MultiObjectiveEGO, PCSAEA, PEA, PIEA, SAEA_DBLL, SSDE, TEA, CPS_MOEA, MCEA_D

MTSO

Inexpensive

MFEA, MFEA_II, EMEA, EBS, G_MFEA, MTEA_AD, MKTDE, MTEA_SaO, SREMTO, LCB_EMT, BLKT_DE, DTSKT, EMTO_AI, MFEA_AKT, MFEA_DGD, MFEA_VC, MTDE_ADKT, MTEA_HKTS, MTEA_PAE, MTES_KG, SSLT_DE, TNG_SNES

MTSO

Expensive

MTBO, RAMTEA, SELF, EEI_BO_plus, MUMBO, BO_LCB_CKT, BO_LCB_BCKT, MFEA_SSG, SaEF_AKT

MTMO

Inexpensive

MO_MFEA, MO_MFEA_II, MO_EMEA, MO_MTEA_SaO, MTDE_MKTA, MTEA_D_DN, EMT_ET, EMT_PD, EMT_GS, MO_MTEA_PAE, MO_SBO, MTEA_D_TSD, MTEA_DCK

MTMO

Expensive

ParEGO_KT

Problems (180+)

Category

Problem Suites

STSO

CLASSICALSO (8), CEC10_CSO (20)

STMO

ZDT (6), DTLZ (9), WFG (9), UF (10), CF (10), MW (14)

MTSO

CEC17_MTSO (9), CEC17_MTSO_10D (9), CEC19_MaTSO, CMT (9), STOP (12)

MTMO

CEC17_MTMO (9), CEC19_MTMO (10), CEC19_MaTMO, CEC21_MTMO (10), MTMO_DTLZ, MTMOInstances

RWO

PEPVM, PINN_HPO (12), SOPM, SCP, MO_SCP, PKACP, NN_Training, TSP (6)

Citation

If you use D²MTOLab in your research, please cite:

@software{ddmtolab2025,
  author = {Jiangtao Shen},
  title = {D$^2$MTOLab: A Python Platform for Data-Driven Multitask Optimization},
  year = {2025},
  url = {https://github.com/JiangtaoShen/DDMTOLab}
}

Contact

License

This project is licensed under the MIT License.