我目前正在開發一個項目(TSP),並試圖將一些模擬退火僞代碼轉換爲Java。我過去在將僞代碼轉換爲Java代碼方面取得了成功,但是我無法將其成功轉換。來自僞代碼的Java模擬退火
僞代碼:
T0(T and a lowercase 0) Starting temperature
Iter Number of iterations
λ The cooling rate
1. Set T = T0 (T and a lowercase 0)
2. Let x = a random solution
3. For i = 0 to Iter-1
4. Let f = fitness of x
5. Make a small change to x to make x’
6. Let f’ = fitness of new point
7. If f’ is worse than f then
8. Let p = PR(f’, f, Ti (T with a lowercase i))
9. If p > UR(0,1) then
10. Undo change (x and f)
11. Else
12. Let x = x’
13. End if
14. Let Ti(T with a lowercase i) + 1 = λTi(λ and T with a lowercase i)
15. End for
Output: The solution x
如果有人能告訴我這在Java中一個基本的標記了,我會非常感激 - 我似乎無法推測出來!
我正在跨多個類使用一些函數(我不會列出,因爲它是無關我的要求)。我已經有了一個smallChange()
方法和一個fitness
函數 - 我是否可能需要創建一些不同版本的所述方法?例如,我有這樣的東西:
public static ArrayList<Integer> smallChange(ArrayList<Integer> solution){
//Code is here.
}
我可能需要另一個版本的這種方法接受不同的參數?沿着線的東西:
public static double smallChange(double d){
//Code is here.
}
所有我需要是如何用Java編寫的時候,這將看一個基本的想法 - 我將能夠使它適應我的代碼,一旦我知道它應該是什麼樣子的正確的語法,但我似乎無法通過這個特殊的障礙。
謝謝。
米克
在這裏,你還可以看看我的實現(它的一部分)。它保持非常通用。 http://stackoverflow.com/a/18657788/1809463 – mike 2013-09-06 12:39:20