蚂蚁系统(信息素踪迹)

时间:2015-09-27 16:33:59

标签: javascript

如何在JavaScript中实现此功能?谢谢。

Ant System(AS)是文献中提出的第一种ACO算法(Dorigo等,1991,Dorigo等,1996)。其主要特征是信息素值由已完成巡视的蚂蚁的所有更新。解决方案组件 c_ {i,j} 是图的边缘, \ tau_ {i,j} 的信息素​​更新,即与信息素相关联的信息素加入城市 i j 的边缘按以下方式执行:

\tau_{i,j} <- (1-\rho)*\tau_{i,j} + \sum\limits_{k=1}^{m} \Delta\tau_{i,j}^{k}

当蒸发率 rho 在区间(0,1)中时, m 是蚂蚁的数量, \ Delta * \ tau_ {i ,j} ^ {k} 是由 k -th ant放在边缘(i,j)上的信息素数量。如果是蚂蚁在其巡视中使用边缘,放置在该边缘上的信息素数量计算如下,

\Delta\tau_{i,j}^{k} = 1/L_{k}

其中 L_ {k} k-th 蚂蚁的游览长度。如果蚂蚁不使用边缘(i,j),则 \ Delta \ tau_ {i,j} ^ {k} 为零。

enter image description here

我正在努力....

 pher[i][j]= pher[i][j] *(1.0-rho) + numAnts*(.......

1 个答案:

答案 0 :(得分:0)

所以这是一个总和的例子。但我不了解算法的其余部分。你有任何信息素矩阵吗?

function sumk2m(k0,m,f){
    var result = 0;
    for(var k = k0; k<m ; k++){
        result = result+f(k);
    }
    return result
}

function isedgeintour(k){
    //I don't know what's this!
}

function L(k){
    //I don't know what's this either!
}

var deltapher = function (k){
    if(isedgeintour(k)){
        return 1/L(k);
    } else {
        return 0;
    }
}

pher[i][j]= pher[i][j] *(1.0-rho) + sumk2m(1,numAnts,deltapher)