多目标优化里头,NSGA-II 算法还挺经典的,属于进化算法中的老大哥级别。它是在老版 NSGA 的基础上做了不少优化,比如非支配排序快了不少,速度快,代码也不臃肿。精英策略的引入也让好个体不容易被淘汰,结果更稳,收敛也更快。
精英策略的引入挺关键,防止了“好苗子”在迭代中被随机干掉的尴尬。举个例子,如果你在做路径规划、多目标调度这类事儿,这点能帮你节省不少调参时间。
拥挤度比较这块也蛮有意思。以前的 NSGA 要手动设置共享半径,麻烦还容易出锅。NSGA-II 直接上密度排序,你不用再关心那些参数细节,个体分布也更均匀,结果看起来就舒服多了。
资源是打包好的NSGA-II.zip
,里面代码结构清晰,跑起来也顺溜。用 MATLAB 或者 Python 的小伙伴都能找到参考版本,想改造也方便。
如果你最近正好在搞多目标优化相关的项目,比如算法竞赛、论文实验或者生产调度建模啥的,建议你下载看看,不一定要直接用,但肯定能启发不少思路。
顺便贴几个相关链接,想深入可以看看:
- NSGA-II 算法中的非支配排序
- Efficient and Compressed NSGA-II Implementation for MATLAB
- Python 实现 NSGA-II 算法详解及案例
- EvoLib 开源多目标优化算法 NSGA-II 及其改进版
如果你更偏向 MATLAB 实现,也有现成资源,响应也快,推荐你看看 这个优化控制模型。