在geatpy中的moea_psy_NSGA2_templet模版里,怎么记录每次迭代后的HV和IGD值
时间: 2024-02-17 22:05:19 浏览: 114
在geatpy中的moea_psy_NSGA2_templet模版中,可以通过添加代码记录每次迭代后的HV和IGD值。具体地,可以在函数solve函数的代码中,找到以下部分:
```python
# 开始进化!!
while self.terminated != True:
self.currentGen += 1
self.population = self.selection(self.problem, self.population, self.currentGen, self.maxGen)
self.vary(self.problem, self.population, self.currentGen, self.maxGen)
self.evaluate(self.problem, self.population, self.currentGen, self.maxGen)
self.replacement(self.problem, self.population, self.currentGen, self.maxGen)
```
在上述代码之后,可以添加以下代码:
```python
# 记录每次迭代后的HV和IGD值
hv = moea_indicator(self.population.ObjV, 'HV')
igd = moea_indicator(self.population.ObjV, 'IGD', self.problem.paretoFront())
record.append([self.currentGen, hv, igd])
```
其中,moea_indicator是geatpy中的一个函数,可以用于计算多目标优化问题的评价指标,例如HV和IGD。record是一个列表,用于记录每次迭代后的HV和IGD值,每次迭代后会将当前的迭代次数、HV值和IGD值按照顺序添加到record列表中。
注意,上述代码中的self.population.ObjV是当前种群的目标函数值,self.problem.paretoFront()是真实的帕累托前沿,需要根据具体情况进行修改。
阅读全文