Data-Driven Multitask Optimization Laboratory
Project description
DDMTOLab
Data-Driven Multitask Optimization Laboratory
📖 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:
🎯 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
- Author: Jiangtao Shen
- Email: j.shen5@exeter.ac.uk
- Documentation: https://jiangtaoshen.github.io/DDMTOLab/
- Issues: GitHub Issues
📜 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83036fcf0e57d2220d0aa0f62d159d28c51ef2a7cc1fce349e5731f5b7e0e27c
|
|
| MD5 |
74e8dcd2e135e68c0f7b5a68d352b04d
|
|
| BLAKE2b-256 |
06219eb705f3a6c73e514b3bc0cf0ef7ad41af2381f616f0c1dc00ca6c1563ea
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18a57822c3b5dfc4b420cbbd4ff682f1325c00ecab4a9f37859a04511a82c870
|
|
| MD5 |
12b68a5a725473f81b7544bb05386bdb
|
|
| BLAKE2b-256 |
0a778808e2b7f0f6f5df9d04708d03ee763673c564741603a02d87d61794a381
|