1
// ******************************************************************************************
2
// 物体降温退火过程中,其能量转移服从Boltzmann distribution规律 P(E) ∝ exp(-E/kT);
3
// P(E)是系统处于低能E的概率(probability),k为Boltzmann常数,T为系统温度。
4
// 模拟退火算法原理
5
// (1)初始温度T(0) = T0。迭代次数t=0,任意初始状态做当前解V(0)∈V
6
// (2)按某一规则有当前状态产生当前状态的下一次侯选状态。
7
// 计算目标代价变化△C,若△C<0则接受解,(△ delta)
8
// 否则考虑当前温度下状态活动概率 P(△C) = exp(-△C/T);P(△C)≥λ则接受解,否则不接受
9
// λ(lambda)为预先指定或随机产生的正数。 (0<λ<1)
10
// (3)按某种策略对T更新(降温)。
11
// (4)按某种标准检查退火过程是否应该结束,若不满足则转(2)
12
// (5)输出状态V(t)做问题解
13
// ******************************************************************************************
14
15
using System;
16
using System.Drawing;
17
18
namespace Algorithm.SimulatedAnnealing
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19