目录
2. 非支配排序(Fast Non-dominated Sorting)
一、NSGA-II 是干什么的?
NSGA-II 是一种求解多目标优化问题的算法,比如你在做决策时,不止一个目标要优化(例如:又要快,又要省钱)。
这时候,你无法只优化一个目标,而是希望得到一组折中解,也叫Pareto最优解集,即这些解在任何目标上都没有其他解“全面更好”。
二、通过一个简单例子来解释
例子:挑选手机
你现在要买手机,希望它满足两个目标:
-
目标1:价格越低越好(目标函数 f1)
-
目标2:性能越高越好(目标函数 f2)
但现实中,价格低的手机性能往往不高,性能高的手机价格可能也贵。所以这是一个典型的多目标问题。
三、NSGA-II 解决步骤
1. 初始化种群
假设初始随机生成 6 款手机(即个体),每个有不同的价格和性能:
手机 | 价格(元) | 性能(分) | f1=价格 | f2=-性能(我们希望最小化) |
---|---|---|---|---|
A | 2000 | 80 | 2000 | -80 |
B | 2500 | 90 | 2500 | -90 |
C | 1800 | 70 | 1800 | -70 |
D | 3000 | 95 | 3000 | -95 |
E | 1700 | 60 | 1700 | -60 |
F | 2100 | 75 | 2100 |