当前位置: 首页 > article >正文

蚁群算法c++

//轮盘赌选择下一步行进城市
int citySelect(int k, int f)
{
    int c = 0;//记录蚂蚁可行进的城市个数


    //1、计算可行进的各城市 选择概率
    for (int m = 0; m < cityNum; m++)
    {
        //若城市(i,j)之间有路且j不在蚂蚁k的禁忌表中,则计算概率
        if (dist(ants[k].loc, m) != -1 && !ifCityInTabu(m, k))
        {
            cityProb[c].num = m;
            cityProb[c].prob = citySelProb(k, m);
            c++;
        }
    }

    //2、线性化选择概率
    for (int m = 0; m < c; m++)
    {
        for (int n = m; n >= 0; n--)
        {
            lineCityProb[m] += cityProb[n].prob;
        }
    }

    //3、产生随机数选择城市
    double r = rand() / double(RAND_MAX);
    int j = 0;   //选取的目标城市
    for (int m = 0; m < cityNum; m++)
    {
        if (r <= lineCityProb[m])
        {
            j = cityProb[m].num;
            updateAnt(k, j);
            if (j == f)
                ants[k].flag = 1;  //若蚂蚁k下一步城市为目的地城市,则修改标志
            return j;
        }

    }
}

 


http://www.kler.cn/a/2252.html

相关文章:

  • Vue.js 项目创建流程
  • react 中 useContext Hook 作用
  • 量化交易系统开发-实时行情自动化交易-3.4.2.2.Okex交易数据
  • 【数据结构与算法】第12课—数据结构之归并排序
  • 【121. 买卖股票的最佳时机】——贪心算法/动态规划
  • CSS多列布局:打破传统布局的束缚
  • 【前端八股文】浏览器系列:性能优化——HTML、CSS、JS、渲染优化
  • 【Java集合】Collection接口中的常用方法
  • RK3588平台开发系列讲解(显示篇)DP显示调试方法
  • 关于STM32用DMA传输UART空闲中断中接收的数据时无法接收数据问题以及解决办法
  • STL库中list的迭代器实现痛点分析
  • 数据清洗是清洗什么?
  • 【Linux】进程的概念--程序地址空间(2)
  • 投稿指南【NO.7】目标检测论文写作模板(初稿)
  • nodejs+vue校园超市小卖部零食在线购物商城系统
  • Postman接口与压力测试实例
  • 计算机网络-DNS和域名关系
  • 运行YOLOv8实现识别
  • 微信小程序根据CODE获取用户open_id
  • TCP三次握手/四次挥手
  • C语言例程:学生成绩管理程序
  • 「Vue面试题」vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?
  • define,typedef,inline 的区别
  • nginx 快速入门
  • IDEA一键构建Docker镜像
  • WPF UpdateSourceTrigger属性