我期待在Java中實現模擬退火算法以找到Travelling Salesman Problem的最佳路線,到目前爲止,我已經實現了蠻力,我期待修改代碼才能使用模擬退火。顯然,強力和模擬退火是非常不同的,並且使用非常不同的功能。模擬退火TSP
我明白模擬退火使用稱爲然後冷卻作爲算法運行溫度的變量;溫度從高處開始並逐漸降溫。雖然溫度較高,但該算法更可能選擇比當前更差的解決方案,從而消除了類似爬山算法中的局部最大值。當它冷卻時,算法不太可能接受更差的解決方案,因此它可以專注於特定區域,並且可以快速找到最佳路線。
我相信,我明白是怎麼算法的作品,但我有麻煩把這個成Java,我有2個班;一個稱爲市剛剛包含的方法制定出每個城市的詳細信息,如getIndex
,getDistance
等 算法類從輸入文件並將其存儲在一個陣列中讀取(int [][]
)
下面的代碼是該算法對於我想修改模擬退火的蠻力而言,如果有人能夠幫助我做到這一點,我會大量讚賞它。
public static void doBF()
{
int random1 = generateRand();
if (towns2.size() > random1)
{
Town town = towns2.get(random1);
visitedTowns[i] = town;
towns2.remove(town);
i++;
if (lastTown != 1000)
{
journey += town.getDistance(lastTown);
}
lastTown = town.getIndex();
}
else
{
doBF();
}
}