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:有人问我具体的错误,所以我会在解决问题时记录下来
- name xrange 未定义 - 通过替换为 range
修复
- 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 一样工作。
基于找到的 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:有人问我具体的错误,所以我会在解决问题时记录下来
- name xrange 未定义 - 通过替换为 range 修复
- 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 一样工作。