# Multi-objective optimization
URL: https://docs.datarobot.com/en/docs/api/dev-learning/accelerators/adv-analytics-tools/multi-objective-opt.html

> Implement a Streamlit application using DataRobot deployments to optimize multiple targets at once and explore Pareto-optimal trade-offs.

# Multi-objective optimization

[Access this AI accelerator on GitHub](https://github.com/datarobot-community/ai-accelerators/blob/main/advanced_ml_and_api_approaches/multi_objective_optimization/run_multi_objective_optimization.ipynb)

This accelerator demonstrates how to implement a Streamlit application for multi-objective optimization using DataRobot deployments, allowing users to optimize multiple targets simultaneously. The application acts as a simulation environment: it runs many trials, uses DataRobot’s prediction API as the core of each trial, and supports Monte Carlo–style sampling (e.g., Random and Quasi-Monte Carlo samplers), illustrating how to build custom simulations that integrate with DataRobot and external optimization tools.

The notebook outlines how to:

1. Create multiple DataRobot projects : Upload training data, configure project settings for each target, and run Autopilot with cross-validation.
2. Build deployments : Select the top-performing model for each target, create registered model versions, and deploy to a prediction server.
3. Set up the Streamlit application : Upload the application to DataRobot, configure optimization parameters (e.g., trial count, objective directions and weighting), and run simulations to view optimization results.

The application uses Optuna to suggest parameters and request predictions from the DataRobot API on each trial, then computes and displays the Pareto front. Current capabilities and features include six types of optimization algorithms, adjustable trial count, numexpr support for individual optimization targets, objective variable weighting, parameter reliability statistics, display of hypervolume and target-vs-feature plots, 2D/3D Pareto front display, localization support (EN/JP), and support for both dedicated prediction servers and serverless deployment. The optimization application process flow is shown below:

```
sequenceDiagram
    participant User
    participant App as Streamlit App
    participant Op as Optuna
    participant DR as DataRobot API

    User->>App: Adjust settings
    User->>App: Click "Simulation Start!"

    App->>DR: Load deployment infos
    DR-->>App: Return deployment infos

    loop For each trial
        App->>Op: Create study
        Op->>Op: Suggest parameters
        Op->>DR: Request predictions
        DR-->>Op: Return predictions
        Op->>Op: Update study
    end

    App->>App: Calculate Pareto front
    App->>User: Display optimization results
```

---
