63 lines · 1.7 KB · Python
RawDownload
"""Multi-objective optimization example using pymoo. This script demonstrates multi-objective optimization usingNSGA-II on the ZDT1 benchmark problem.""" from pymoo.algorithms.moo.nsga2 import NSGA2from pymoo.problems import get_problemfrom pymoo.optimize import minimizefrom pymoo.visualization.scatter import Scatterimport 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()