2016-06-27 38 views
1

基於發現的HyperVolume函數here(直接下載link),我試圖返回我的算法的超級卷度量標準。然而,甚至沒有測試代碼的工作:HyperVolume函數不能在Python 3中工作

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. TypeError: unorderable types: Node() < Node()
+0

*遇到錯誤*請[編輯]你的問題,幷包括他們。 –

+0

我可以做,但它會在錯誤發生後出錯,我只能一次發佈1個,因爲它們正在被解決...... –

回答

1

使用2to3的轉換hv.py到hv3.py:

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

釷EN改變你的進口線

from hv3 import HyperVolume 

如果你想2to3改變修改原來的文件,你需要通過-w選項,如圖所示documentation

$ 2to3 -w hv.py 
+0

我嘗試了應用2to3(希望我做到了右),https://gyazo.com/bf0816763e9d62a9bccef088bb3a3b69 但是,我仍然遇到同樣的錯誤,當我運行我的主要功能。 –

+0

@SilviuTofan:如果你沒有將'-w'開關傳遞給'2to3',它不會修改文件。請參閱[文檔](https://docs.python.org/2/library/2to3.html#using-2to3):「使用-w標誌啓用更改」。 –

+0

哦,對不起。我做了傳球,但仍然是相同的結果。但是,當我手動修改'range'到'xrange'時,它修改了這個。但功能本身仍然有效。功能本身可能有問題嗎?儘管如此,這是非常不可能的,因爲參考文獻似乎足夠可信。 –