模拟退火算法以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。以图1为例,模拟退火算法在搜索到局部最优解A后,会以一定的概率接受到E的移动。也许经过几次这样的不是局部最优的移动后会到达D点,于是就跳出了局部最大值A。
根据热力学的原理,在温度为T时,出现能量差为dE的降温的概率为P(dE),表示为:
P(dE) = exp( dE/(kT) )
其中k是一个常数,exp表示自然指数,且dE<0。这条公式说白了就是:温度越高,出现一次能量差为dE的降温的概率就越大;温度越低,则出现降温的概率就越小。又由于dE总是小于0(否则就不叫退火了),因此dE/kT < 0 ,所以P(dE)的函数取值范围是(0,1) 。
在一个树状的Data Center中,有n个虚拟机(VM)pair需要对调位置(
称为交换)以减少根交换机的流量负载,
请问如何调度n个pair的交换以使得所有的交换完成总时间最短
?
已知:A为目前初始空闲带宽,Ci为交换第i对VM对的代价(
兆字节),Gi为交换完第i对VM后所减少的带宽消耗, 此后该带宽可用来交换第i+1对VM。
目标:能够最小化总交换时间的xi排列。
数学描述如下:
该问题的背景见附件,附件的论文是挑出这n个交换pair,
我们是在附件的基础上研究如何调度这n个pair的交换。
请用模拟退火找最优解