Files
gh-k-dense-ai-claude-scient…/skills/pymoo/scripts/multi_objective_example.py
2025-11-30 08:30:10 +08:00

64 lines
1.7 KiB
Python

"""
Multi-objective optimization example using pymoo.
This script demonstrates multi-objective optimization using
NSGA-II on the ZDT1 benchmark problem.
"""
from pymoo.algorithms.moo.nsga2 import NSGA2
from pymoo.problems import get_problem
from pymoo.optimize import minimize
from pymoo.visualization.scatter import Scatter
import matplotlib.pyplot as plt
def run_multi_objective_optimization():
"""Run multi-objective optimization example."""
# Define the problem - ZDT1 (bi-objective)
problem = get_problem("zdt1")
# Configure NSGA-II algorithm
algorithm = NSGA2(
pop_size=100,
eliminate_duplicates=True
)
# Run optimization
result = minimize(
problem,
algorithm,
('n_gen', 200),
seed=1,
verbose=True
)
# Print results summary
print("\n" + "="*60)
print("MULTI-OBJECTIVE OPTIMIZATION RESULTS")
print("="*60)
print(f"Number of solutions in Pareto front: {len(result.F)}")
print(f"Number of generations: {result.algorithm.n_gen}")
print(f"Number of function evaluations: {result.algorithm.evaluator.n_eval}")
print("\nFirst 5 solutions (decision variables):")
print(result.X[:5])
print("\nFirst 5 solutions (objective values):")
print(result.F[:5])
print("="*60)
# Visualize results
plot = Scatter(title="ZDT1 - NSGA-II Results")
plot.add(result.F, color="red", alpha=0.7, s=30, label="Obtained Pareto Front")
# Add true Pareto front for comparison
pf = problem.pareto_front()
plot.add(pf, color="black", alpha=0.3, label="True Pareto Front")
plot.show()
return result
if __name__ == "__main__":
result = run_multi_objective_optimization()