多目标优化算法之非支配排序遗传算法-II(NSGA-II)
一、引言生活中我们总在“两难抉择”——物流配送想“成本最低”又想“时效最快”路径规划想“距离最短”又想“能耗最少”。这些‘多个目标要同时优化’的问题单靠经验很难找到最优解而NSGA-II非支配排序遗传算法-II就是解决这类问题的高效工具。它是多目标优化领域最具代表性的算法之一通过模拟生物进化的逻辑在相互冲突的目标之间找到平衡广泛应用于管理科学与工程的物流、路径等场景今天我们就用通俗的语言可落地的代码把它讲明白。1.多目标优化现实情况中决策者往往需要同时考虑多个相互冲突的目标既要追求成本最低又要实现服务水平最高既要做到能耗最小又要力争产量最大既要控制风险最小又要争取收益最大这类需要平衡多个相互冲突目标的问题被称为多目标优化问题Multi‑Objective Optimization, MOO。即多目标优化问题是指在给定的一组约束条件下同时优化多个目标函数的问题。形式上可以表示为其中目标之间通常不可同时达到最优。2.帕累托最优在多目标优化问题中一个解被称为帕累托最优解当且仅当不存在其他解能在不恶化任一目标的情况下至少在一个目标上实现严格改进。换句话说帕累托最优解代表了决策的最佳权衡边界——在这条边界上任何试图让某个目标变得更好的尝试都必然导致其他目标变得更差。举例想象选购一辆车方案A价格最低但油耗较高方案B油耗最低但价格较贵方案C价格和油耗都适中如果不存在另一款车能在价格和油耗上都不差于A且至少一项严格更好那么A就是帕累托最优解。帕累托最优不是追求“完美”而是承认“取舍”的智慧。3.非支配排序非支配排序Non-dominated Sorting是多目标优化算法中的一种分层筛选技术用于将候选解按帕累托支配关系分成不同等级的前沿层。那么排序所依据的“支配”关系究竟是什么呢 简单来说解A支配解B需同时满足两个条件全面不落后A在所有优化目标上表现都不差于B至少一项领先A在至少一个目标上表现严格优于B。举例以物流配送中心选址为例假设我们需要权衡“成本”与“服务覆盖率”两个目标。解P成本10万元覆盖率达85%解Q成本12万元覆盖率为80%解P在成本更低的同时还实现了更高的覆盖率——它在两个目标上都优于解Q。因此我们说”P支配Q“。在排序时P就会比Q获得更高的优先级更有可能进入靠前的精英前沿。二、NSGA‑II 的算法设计原理NSGA-IINon-dominated Sorting Genetic Algorithm II是Deb等人在2002年提出的多目标优化算法通过非支配排序和拥挤度距离计算实现高效搜索具有以下核心特点一快速非支配排序Non-dominated Sorting非支配排序Non‑dominated Sorting这是算法实现Pareto最优解筛选的核心逻辑操作步骤简单易懂1.从当前种群中找出所有不被任何个体支配的解这些解共同构成第一前沿F12.将第一前沿F1从种群中移除3.在剩余的个体中重复上述筛选和移除操作依次得到第二前沿F2、第三前沿F3……以此类推红色圆点构成第一前沿F1代表不被任何解支配的最优解集蓝色方块构成第二前沿F2是移除F1后剩余解中的非支配集绿色三角构成第三前沿 F3层级靠后、优越等级更低二拥挤距离为了在同一层帕累托前沿中挑选出分布最均匀、最具代表性的解NSGA-II 引入了拥挤距离这一度量。它就像一个“个人空间”测量仪距离越大说明该解周围越稀疏对种群多样性的贡献就越大越值得被保留。拥挤距离用于衡量同一个非支配层级内的解之间的分布密度。具体计算方法是对于每个目标函数计算该目标函数值相邻的两个解之间的距离并将这些距离相加。拥挤距离越大表示该解周围的解越稀疏。从图中我们可以看出值较小时表示该个体周围比较拥挤。为了保持种群多样性需要设计相应的拥挤度评价算子使算法最终收敛到分布均匀的 Pareto 最优前沿。由于经过了排序和拥挤距离的计算群体中每个个体 i 都得到两个属性一是非支配序 rank (i)用于表征个体所处 Pareto 前沿的优劣等级二是拥挤距离 d(i)用于表征同一前沿内个体周围分布的稀疏程度。可定义偏序关系对于任意两个个体 i 和 j当满足条件rank(i)rank(j)或满足rank(i)rank(j) 且 d(i)d(j) 时则认为个体 i 在偏序关系下优于个体 j记作 inj也就是说当两个个体属于不同层级时优先保留非支配序更低、质量更高的个体从而保证算法的收敛能力当两个个体处于同一 Pareto 前沿时则优先选择拥挤距离更大、分布更稀疏的个体以此拉开个体间距、维持种群多样性使最终解集能够均匀分布在 Pareto 最优前沿上。这张拥挤度比较算子示意图展示了 NSGA-II 算法中个体筛选的核心逻辑,优先保留非支配排序更靠前的解同排序下则选择拥挤度更高的个体以此在收敛到帕累托最优前沿的同时维持种群分布的多样性避免算法陷入局部最优。三精英保留策略精英保留策略是NSGA‑II中确保算法收敛到真正最优解的关键机制。简单来说它的核心思想是“不让优秀的前辈被后辈完全取代”。NSGA‑II的精英保留策略通过以下步骤实现合并两代将当前父代种群大小为N和新生成的子代种群大小为N合并形成一个规模为2N的临时种群。全面评估对这个2N的合并种群进行非支配排序计算每个个体的前沿层级和拥挤距离。择优录取按照“前沿层级优先同层拥挤距离优先”的原则从最好的个体开始挑选直到选满N个个体组成新一代种群。三、NSGA-II 算法流程首先随机初始化规模为N的种群并计算各个体的多目标函数值随后对种群进行非支配排序划分Pareto等级并通过选择、交叉和变异生成子代种群。进入迭代阶段后将父代与子代合并成规模为2N的种群进行快速非支配排序并在同一等级内计算拥挤距离。按照“优先选择等级低、等级相同时选择拥挤距离大”的原则筛选出新的父代种群实现精英保留随后再次进行选择、交叉和变异令进化代数GenGen1。若未达到最大迭代次数则重复上述过程否则输出第一非支配层作为最终的Pareto最优解集。具体的流程如下所述1.类的初始化该构造函数用于初始化NSGA-II算法的基本参数设置种群大小、迭代代数、目标数与变量数、交叉率与变异率并定义每个决策变量的取值范围。2. 目标函数评估这一步是算法的 “价值判断” 环节针对具体的优化问题将种群中每个个体的决策变量转换为目标函数值。以二维决策变量x1、x2为例按照 ZDT1 问题的数学公式计算出每个个体对应的两个目标值f 1、f 2最终输出一个包含所有个体目标值的数组。这些目标值是后续判断个体优劣、进行非支配排序的核心依据 —— 只有明确了每个个体的目标表现才能区分其在种群中的层级。3.非支配排序通过两两比较个体目标值统计每个个体的被支配计数和支配列表将不被任何个体支配的个体归入第一前沿然后迭代去除前沿个体的支配关系依次获得后续前沿最终返回所有非支配层级的索引列表。4.拥挤度距离计算非支配前沿中个体的拥挤度距离若前沿个体数≤2则所有距离设为无穷大否则对每个目标维度按目标值排序后将边界个体的距离置为无穷大以确保它们在选择中被优先保留维持Pareto前沿的延展性中间个体累加相邻个体在该维度上的归一化差值最终返回每个个体的距离值用于衡量种群多样性。5.生成子代采用二元锦标赛选择策略基于非支配层级和拥挤度从父代种群中筛选优质个体组成交配池对交配池个体执行模拟二进制交叉SBX生成子代再对每个子代进行多项式变异最终生成与父代规模相同的子代种群。6.种群迭代更新合并父代与子代种群重新执行非支配排序按 “先非支配层级、后拥挤度” 的优先级筛选个体保留与初始种群规模一致的个体作为下一代种群完成一次迭代。四、案例——物流配送路径的多目标优化为了更直观地理解 NSGA-II 的实际应用我们构建一个简化但具有现实意义的管理科学案例——物流配送路径优化问题。案例在实际配送过程中企业往往面临两个典型目标目标1总配送距离最短目标2总能耗最低但现实中最短路径未必能耗最低例如拥堵路段油耗高等问题。因此这是一个典型的多目标冲突优化问题。一问题建模假设某配送中心需要为若干客户配送货物用f1(x)表示总行驶距离f2(x)表示总能耗则建立双目标优化模型其中决策变量x表示一条配送路径且两个目标函数同时最小化由于两个目标往往互相冲突因此不存在单一最优解而是一组Pareto最优路径组合。二代码实现下面给出一个简化连续型双目标函数示例用于演示NSGA-II如何逼近Pareto前沿。我们构造两个冲突目标函数决策变量 x 为连续变量实际路径优化中需将配送顺序编码为染色体核心算法机制保持一致目标函数 f1(x)x2可类比为 “总行驶距离”随 x 增大而单调递增目标函数 f2(x)(x−2)2可类比为 “总能耗”随 x 增大而单调递减取值范围 x∈[0,2]保证两个目标存在明显冲突不存在单一全局最优解只能得到一组 Pareto 最优解集从 NSGA-II 运行结果可以看出收敛性所有非支配解均分布在理论 Pareto 前沿附近说明算法成功逼近了真实前沿没有明显偏离。多样性解集覆盖了从 f1较小到 f1较大的整个区间两端点 (0,4)和 (4,0) 也得到体现表明拥挤度距离机制有效维持了种群多样性。均匀性散点在前沿上分布较为均匀未出现大段空白或过度聚集这得益于 NSGAII 的精英保留策略和基于拥挤度的选择。五、总结NSGAII 通过快速非支配排序、拥挤度距离与精英保留策略在收敛性与多样性之间取得了良好平衡是多目标优化领域的经典算法。本文结合物流路径优化案例展示了其在求解冲突目标问题时的有效性——算法能生成分布均匀、逼近真实 Pareto 前沿的解集。凭借结构清晰、易于实现等优点NSGAII 已被广泛应用于管理科学与工程的多个领域并为后续改进算法奠定了基础。作者 | 蔡爱希 张雪飞责编 | 邱宇审核 | 徐小峰