HyperVolume功能在Python 3中不起作用

时间:2016-06-27 15:16:52

标签: python deap

基于找到here的HyperVolume函数(直接下载link),我正在尝试为我的算法返回超级卷指标。但是,测试代码甚至都不起作用:

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.有没有办法解决这个问题?是否在Python 3中实现了类似的功能?

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

LE:我已经被要求提供具体的错误,所以我会记录下这些错误,因为它们正在被解决

  1. 未定义名称xrange - 通过替换为范围
  2. 来修复
  3. TypeError: unorderable types: Node() < Node()

2 个答案:

答案 0 :(得分:1)

使用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

答案 1 :(得分:0)

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

decorated.sort()

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

它应该像python2一样工作。