Tag: 模拟退火

使用模拟退火的图形着色

我正在尝试使用模拟退火来提出图形着色问题的算法。 在线有一般算法,但是当我看到它时,我无法理解如何将此算法应用于此问题。 图中的每个节点必须具有来自它的neibours的不同颜色。 我怎样才能使用模拟退火算法。 这个问题的“温度”,“时间表”是什么? 请帮我理解这个。 谢谢

模拟退火TSP

我正在寻找在Java中实现模拟退火算法以找到旅行商问题的最佳路线,到目前为止,我已经实施了暴力,并且正在寻找修改该代码以便使用模拟退火。 显然,蛮力和模拟退火是非常不同的,并且使用非常不同的function。 我知道模拟退火使用一个称为温度的变量,然后在算法运行时冷却; 温度从高处开始逐渐冷却。 虽然温度很高,但算法更可能选择比当前更差的解决方案,从而消除了类似爬山算法中的局部最大值。 由于它冷却,算法更不可能接受更糟糕的解决方案,因此它可以专注于特定区域,并且可以快速找到最佳路径。 我相信我理解算法是如何工作的,但是我把它放到Java中有困难,我有2个类; 一个名为City的城市, getDistance包含计算每个城市细节的方法,如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(); } […]