首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蚂蚁系统(信息素踪迹)

蚂蚁系统(信息素踪迹)
EN

Stack Overflow用户
提问于 2015-09-27 16:33:58
回答 1查看 114关注 0票数 0

如何在JavaScript中实现这一点?谢谢。

蚂蚁系统( Ant,AS)是文献中首次提出的蚁群算法(Dorigo等人)。1991年,Dorigo等人。(1996年)。它的主要特点是信息素值由所有已完成巡演的蚂蚁更新。解决方案组件c_{i,j}是图的边缘,\tau_{i,j}的信息素更新,也就是与城市i和j相连的信息素,执行如下:

代码语言:javascript
复制
\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个蚂蚁放置在边缘(i,j)上的信息素的数量。如果一只蚂蚁在它的旅行中使用一个边缘,那么放置在该边缘上的信息素的数量计算如下,

代码语言:javascript
复制
\Delta\tau_{i,j}^{k} = 1/L_{k}

其中L_{k}是第k个蚂蚁的游程长度.如果ant不使用边(i,j),则\Delta\tau_{i,j}^{k}为零。

我在努力..。

代码语言:javascript
复制
 pher[i][j]= pher[i][j] *(1.0-rho) + numAnts*(.......

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-27 17:25:57

这是一个求和的例子。但我不明白算法的其余部分。例如,你们有信息素矩阵吗?

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32810214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档