← 返回模型库
MODEL / 优化

多目标规划(NSGA-II)

成本低与效益高、精度高与耗时短这类互相冲突的目标要同时考虑,需要给出的是一组折中方案而不是单一解。

核心公式

\min_{\mathbf{x}}\ \mathbf{F}(\mathbf{x})=\left(f_1(\mathbf{x}),f_2(\mathbf{x}),\dots,f_m(\mathbf{x})\right)^{\top}

Python 最小示例

下载 .py 文件 ↓

依赖见代码开头;示例在自己的 Python 环境运行,页面不执行代码。用于理解方法,正式参赛请补齐数据检验与误差分析。

Python · 多目标规划(NSGA-II)
# 依赖: pymoo
import numpy as np
from pymoo.algorithms.moo.nsga2 import NSGA2
from pymoo.core.problem import ElementwiseProblem
from pymoo.optimize import minimize

class BiObjective(ElementwiseProblem):
    def __init__(self):
        super().__init__(n_var=2, n_obj=2, xl=np.array([0.0, 0.0]), xu=np.array([1.0, 1.0]))

    def _evaluate(self, x, out, *args, **kwargs):
        out['F'] = [x[0] ** 2 + x[1] ** 2, (x[0] - 1.0) ** 2 + (x[1] - 1.0) ** 2]

res = minimize(BiObjective(), NSGA2(pop_size=60), ('n_gen', 120), seed=1, verbose=False)
print('Pareto 前沿前 5 个点:\n', np.round(res.F[:5], 4))   # 要报告前沿而不是单个解

用它研究过哪些问题?

浏览赛题库 →