HyperVolume 功能在 Python 3 中不起作用

HyperVolume function not working in Python 3

基于找到的 HyperVolume 函数 here (direct download link),我正在尝试 return 我的算法的超体积指标。但是,即使是测试代码也不起作用:

from hv import HyperVolume
referencePoint = [2, 2, 2]
hyperVolume = HyperVolume(referencePoint)
front = [[1, 0, 1], [0, 1, 0]]
result = hyperVolume.compute(front)

我收到的错误似乎与我正在使用 Python 3 这一事实有关,而函数本身正在使用 Python 2。有解决办法吗? Python3中有没有实现类似的功能?

我也看过 this one in deap,但似乎有同样的问题。

LE:有人问我具体的错误,所以我会在解决问题时记录下来

  1. name xrange 未定义 - 通过替换为 range
  2. 修复
  3. TypeError: unorderable types: Node() < Node()

使用 2to3 将 hv.py 转换为 hv3.py:

$ 2to3 hv.py > hv3.py.patch
$ cp hv.py hv3.py
$ patch < hv3.py.patch

然后将您的导入行更改为

from hv3 import HyperVolume

如果要2to3改变修改原文件,需要通过-w选项,如图documentation

$ 2to3 -w hv.py

使用 2to3 并替换 hv.py 的以下行来修复 TypeError:

decorated.sort()

sorted(decorated, key=lambda n: n[0])

它应该像 python2 一样工作。