Skip to main content

Data-Driven Multitask Optimization Laboratory

Project description

DDMTOLab

DDMTOLab Logo

Data-Driven Multitask Optimization Laboratory

Documentation GitHub Stars Python Version License


📖 Overview

DDMTOLab is a comprehensive Python platform designed for data-driven multitask optimization, featuring 30+ algorithms, 100+ benchmark problems, and powerful experiment tools for algorithm development and performance evaluation.

Whether you're working on expensive black-box optimization, multi-objective optimization, or complex multi-task scenarios, DDMTOLab provides a flexible and extensible framework to accelerate your research and support real-world applications.

✨ Features

  • 🚀 Comprehensive Algorithms - Single/multi-task, single/multi-objective optimization algorithms
  • 📊 Rich Problem Suite - Extensive benchmark functions and real-world applications
  • 🤖 Data-Driven Optimization - Surrogate modelling 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
  • 📝 Complete Documentation - Comprehensive Tutorial and API reference

🚀 Quick Start

👉 Get Started with Our Tutorial

DDMTOLab requires:

  • Python 3.10+
  • PyTorch 2.5+ with CUDA 12.1 support (optional, for GPU-accelerated Gaussian Process modeling)
  • BoTorch 0.16+
  • GPyTorch 1.14+
  • NumPy 2.0+
  • SciPy 1.15+
  • scikit-learn 1.7+
  • Pandas 2.3+
  • Matplotlib 3.10+
  • tqdm

Installation

git clone https://github.com/JiangtaoShen/DDMTOLab.git
cd DDMTOLab
pip install -r requirements.txt

Basic Usage

import numpy as np
from ddmtolab.Methods.mtop import MTOP
from ddmtolab.Algorithms.STSO.GA import GA

# Step 1: Define objective function
def t1(x):
    """Forrester function: (6x-2)^2 * sin(12x-4)"""
    return (6 * x - 2) ** 2 * np.sin(12 * x - 4)

# Step 2: Create optimization problem
problem = MTOP()
problem.add_task(t1, dim=1)

# Step 3: Run optimization
results = GA(problem).optimize()

# Step 4: Display results
print(results.best_decs, results.best_objs)

# Step 5: Analyze and visualize
from ddmtolab.Methods.test_data_analysis import TestDataAnalyzer
TestDataAnalyzer().run()

Batch Experiments

from ddmtolab.Methods.batch_experiment import BatchExperiment
from ddmtolab.Methods.data_analysis import DataAnalyzer
from ddmtolab.Algorithms.STSO.GA import GA
from ddmtolab.Algorithms.STSO.PSO import PSO
from ddmtolab.Algorithms.STSO.DE import DE
from ddmtolab.Algorithms.MTSO.EMEA import EMEA
from ddmtolab.Algorithms.MTSO.MFEA import MFEA
from ddmtolab.Problems.MTSO.cec17_mtso import CEC17MTSO

if __name__ == '__main__':
    # Step 1: Create batch experiment manager
    batch_exp = BatchExperiment(
        base_path='./Data',      # Data save path
        clear_folder=True        # Clear existing data
    )

    # Step 2: Add test problems
    cec17mtso = CEC17MTSO()
    batch_exp.add_problem(cec17mtso.P1, 'P1')
    batch_exp.add_problem(cec17mtso.P2, 'P2')
    batch_exp.add_problem(cec17mtso.P3, 'P3')

    # Step 3: Add algorithms with parameters
    batch_exp.add_algorithm(GA, 'GA', n=100, max_nfes=20000)
    batch_exp.add_algorithm(DE, 'DE', n=100, max_nfes=20000)
    batch_exp.add_algorithm(PSO, 'PSO', n=100, max_nfes=20000)
    batch_exp.add_algorithm(MFEA, 'MFEA', n=100, max_nfes=20000)
    batch_exp.add_algorithm(EMEA, 'EMEA', n=100, max_nfes=20000)

    # Step 4: Run batch experiments
    batch_exp.run(n_runs=20, verbose=True, max_workers=8)

    # Step 5: Configure data analyzer
    analyzer = DataAnalyzer(algorithm_order=['GA', 'DE', 'PSO', 'EMEA', 'MFEA'])

    # Step 6: Run data analysis
    results = analyzer.run()

📊 Example Results

Results from the batch experiment above:

Convergence 1 Convergence 2 Runtime

🎯 Key Components

Algorithms

40+ state-of-the-art optimization algorithms across four categories:

Category Algorithms
STSO GA, DE, PSO, SL-PSO, KL-PSO, CSO, CMA-ES, AO, GWO, EO, BO, EEI-BO
STMO NSGA-II, NSGA-III, NSGA-II-SDR, SPEA2, MOEA/D, MOEA/DD, RVEA, IBEA, Two_Arch2, MSEA, CCMO
MTSO MFEA, MFEA-II, EMEA, G-MFEA, MTBO, RAMTEA, SELF, EEI-BO+, MUMBO, LCB-EMT
MTMO MO-MFEA, MO-MFEA-II

Problems

132+ benchmark problems across five categories:

Category Problem Suites
STSO Classical Functions (9), CEC10-CSO (18)
STMO ZDT (6), UF (10), DTLZ (9)
MTSO CEC17-MTSO (9), CEC17-MTSO-10D (9), CEC19-MaTSO (6)
MTMO CEC17-MTMO (9), CEC19-MTMO (10), CEC19-MaTMO (6), CEC21-MTMO (10), MTMO-Instance (2)
Real-World PEPVM (1), PINN-HPO (12), SOPM (2), SCP (1), MO-SCP (2), PKACP (1)

Methods

  • Batch Experiments: Parallel execution framework for large-scale testing
  • Data Analysis: Statistical testing (Wilcoxon, Friedman) and visualization tools
  • Performance Metrics: IGD, HV, Spacing, Spread, FR, CV, and more
  • Algorithm Components: Reusable building blocks for rapid development

📄 Citation

If you use DDMTOLab in your research, please cite:

@software{ddmtolab2025,
  author = {Jiangtao Shen},
  title = {DDMTOLab: 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 - see the LICENSE file for details.


Made with ❤️ by Jiangtao Shen

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ddmtolab-1.0.0.tar.gz (894.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ddmtolab-1.0.0-py3-none-any.whl (446.2 kB view details)

Uploaded Python 3

File details

Details for the file ddmtolab-1.0.0.tar.gz.

File metadata

  • Download URL: ddmtolab-1.0.0.tar.gz
  • Upload date:
  • Size: 894.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for ddmtolab-1.0.0.tar.gz
Algorithm Hash digest
SHA256 83036fcf0e57d2220d0aa0f62d159d28c51ef2a7cc1fce349e5731f5b7e0e27c
MD5 74e8dcd2e135e68c0f7b5a68d352b04d
BLAKE2b-256 06219eb705f3a6c73e514b3bc0cf0ef7ad41af2381f616f0c1dc00ca6c1563ea

See more details on using hashes here.

File details

Details for the file ddmtolab-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ddmtolab-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 446.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for ddmtolab-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 18a57822c3b5dfc4b420cbbd4ff682f1325c00ecab4a9f37859a04511a82c870
MD5 12b68a5a725473f81b7544bb05386bdb
BLAKE2b-256 0a778808e2b7f0f6f5df9d04708d03ee763673c564741603a02d87d61794a381

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page