CCF-CSP202109-3脉冲神经网络

2023-10-27

题目要求实现一个脉冲神经网络的模拟器,主要由三部分:神经元,脉冲源,突触 构成,其中,神经元和脉冲源都由突触连接,可以是 脉冲源-->神经元,也可以是 神经元-->神经元,因此可以把它看成是一个有向图,脉冲源只有出度,神经元可以既有出度,又有入度,而突触就是把每个点相连的边。

对脉冲源分析:

每个脉冲源都有一个参数 r ,只有在 r > myrand()时脉冲源才会释放一次脉冲到神经元。

对神经元分析:

每个神经元有两个关键参数 u 和 v,只有在某时刻该神经元的 v >= 30 时该神经元才会释放一次脉冲, 释放脉冲后 v 变成 c , u 变成 u+d。

对突触分析:

每个突触都有两个参数 w 和 d,w 表示脉冲强度,d表示传输延迟,也就是说无论是神经元还是脉冲源发射了脉冲,其脉冲值都只与相连的突触有关。

分析完毕见代码:

#include <iostream>
#include <cstring>

using namespace std;
static unsigned long _next = 1;

const double INF = 1e8;

//RAND_MAX assumed to be 32767
int myrand(void) {
    _next = _next * 1103515245 + 12345;
    return((unsigned)(_next/65536) % 32768);
}
const int N = 2010;
int n,S,P,T;
double dt;
int h[N],e[N*2],D[N*2],ne[N*2],idx;
double w[N],v[N],u[N],a[N],b[N],c[N],d[N];
int r[N],cnt[N];
double I[1024][N/2];

void Add(int a,int b,double c,int d)
{
    e[idx] = b;
    w[idx] = c;
    D[idx] = d;
    ne[idx] = h[a];
    h[a] = idx++;
}//采用邻接表存储,在存储连接关系时也要额外存储突触的两个性质

int main()
{
    memset(h,-1,sizeof h);
    scanf("%d%d%d%d",&n,&S,&P,&T);
    scanf("%lf",&dt);
    for(int i = 0;i < n;)
    {
        int rn;
        scanf("%d",&rn);
        double vv,uu,aa,bb,cc,dd;
        scanf("%lf%lf%lf%lf%lf%lf",&vv,&uu,&aa,&bb,&cc,&dd);
        for(int j = 0;j < rn;j++,i++)
        {
            v[i] = vv;u[i] = uu;a[i] = aa;b[i] = bb;c[i] = cc;d[i] = dd;
        }
    }//读入神经元相关数据
    for(int i = n;i < n+P;i++)
    {
        scanf("%d",&r[i]);
    }//读入脉冲源相关数据
    int mod = 0;//mod的目的是找到最大的时间跨度,存储空间不够,只能开成循环数组了
    for(int i = 0;i < S;i++)
    {
        int a0,b0,d0;
        double c0;
        scanf("%d%d%lf%d",&a0,&b0,&c0,&d0);
        mod = max(mod,d0+1);
        Add(a0,b0,c0,d0);//对有向图进行初始化
    }
    for(int i = 0;i < T;i++)
    {
        int t = i % mod;
        for(int j = n;j < n+P;j++)
        {
            if(r[j] > myrand())
            {
                for(int k = h[j]; k != -1;k = ne[k])
                {
                    int x = e[k];
                    I[(t+D[k])%mod][x] += w[k];
                }
            }//发射脉冲
        }
        for(int j = 0;j < n;j++)
        {
            double vv = v[j],uu = u[j];
            v[j] = vv+dt*(0.04*vv*vv+5*vv+140-uu)+I[t][j];
            u[j] = uu+dt*a[j]*(b[j]*vv-uu);
            if(v[j] >= 30)
            {
                for(int k = h[j]; k != -1;k = ne[k])
                {
                    int x = e[k];
                    I[(t+D[k])%mod][x] += w[k];
                }
                cnt[j]++;
                v[j] = c[j];
                u[j] = u[j]+d[j];
            }
        }
        memset(I[t],0,sizeof I[t]);
    }
    double minv = INF,maxv = -INF;
    int minc = INF,maxc = -INF;
    for(int i = 0;i < n;i++)
    {
        minv = min(minv,v[i]);
        maxv = max(maxv,v[i]);
        minc = min(minc,cnt[i]);
        maxc = max(maxc,cnt[i]);
    }
    printf("%.3f %.3f\n",minv,maxv);
    printf("%d %d",minc,maxc);
    return 0;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CCF-CSP202109-3脉冲神经网络 的相关文章

  • 【路径规划】基于A*算法路径规划研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 基于java的ssh医院在线挂号系统设计与实现

    基于java的ssh医院在线挂号系统设计与实现 I 引言 A 研究背景和动机 基于Java的SSH医院在线挂号系统设计与实现的研究背景和动机 随着信息技术的迅速发展和应用 医院在线挂号系统已成为医院管理的重要组成部分 传统的挂号方式存在许多
  • 让CHAT介绍下V2ray

    CHAT回复 V2Ray是一个网络工具 主要用于科学上网和保护用户的网络安全 它的名字源自Vmess Ray 光线 通过使用新的网络协议 为用户提供稳定且灵活的代理服务 下面是一些V2Ray的主要特性 1 多协议支持 V2Ray 提供了大量
  • 利用CHAT上传文件的操作

    问CHAT autox js ui 上传框 CHAT回复 上传文件的操作如果是在应用界面中的话 由于Android对于文件权限的限制 你可能不能直接模拟点击选择文件 一般来说有两种常见的解决方案 一种是使用intent来模拟发送一个文件路径
  • 用CHAT分析高校体育智慧教学体系构建与探索研究现状

    CHAT回复 现阶段 高校体育智慧教学体系的构建与探索研究还处于初级阶段 但全球数字化转型大潮的推动下 一些较为前沿的研究和实践已经开始出现 1 教学平台的建设 很多高校已经开始尝试使用在线教育平台进行体育教学 把传统的面对面授课模式转变为
  • 扬帆证券:三只松鼠去年扣非净利预增超1.4倍

    在 高端性价比 战略驱动下 三只松鼠 300783 重拾增势 1月15日晚间 三只松鼠发布成绩预告 预计2023年度净赢利为2亿元至2 2亿元 同比增加54 97 至70 47 扣非后净赢利为1亿元至1 1亿元 同比增速达146 9 至17
  • 明日 15:00 | NeurIPS 2023 Spotlight 论文

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 哔哩哔哩直播通道 扫码关注AITIME哔哩哔哩官方账号预约直播 1月17日 15 00 16 00 讲者介绍 黄若孜 腾讯AI LAB游戏AI研究员 2020年复旦大学硕士毕业后
  • 基于opencv的大米计数统计(详细处理流程+代码)

    在我每周的标准作业清单中 有一项是编写计算机视觉算法来计算该图像中米粒的数量 因此 当我的一个好朋友M给我发了一张纸上的扁豆照片 显然是受到上述转发的启发 请我帮他数一下谷物的数量时 它勾起了我怀旧的回忆 因此 我在我的旧硬盘上寻找很久以前
  • 无人机视角、多模态、模型剪枝、国产AI芯片部署

    无人机视角 多模态 模型剪枝 国产AI芯片部署是当前无人机技术领域的重要研究方向 其原理和应用价值在以下几个方面进行详细讲述 一 无人机视角 无人机视角是指在无人机上搭载摄像头等设备 通过航拍图像获取环境信息 并进行图像处理和分析 这种技术
  • 性能大减80%,英伟达芯片在华“遇冷”,我方霸气回应:不强求

    中国这么大一块市场 谁看了不眼馋 在科技实力大于一切的今天 高端芯片的重要性不言而喻 作为半导体产业发展过程中不可或缺的一环 芯片技术也一直是我国技术发展的一大 心病 在美西方等国的联手压制下 我国芯片技术发展处处受阻 至今也未能在高端芯片
  • 机器学习算法实战案例:时间序列数据最全的预处理方法总结

    文章目录 1 缺失值处理 1 1 统计缺失值 1 2 删除缺失值 1 3 指定值填充 1 4 均值 中位数 众数填充
  • 主流进销存系统有哪些?企业该如何选择进销存系统?

    主流进销存系统有哪些 企业该如何选择进销存系统 永久免费 的软件 这个可能还真不太可能有 而且就算有 也只能说是相对免费 因为要么就是数据存量有限 要么就是功能有限 数据 信息都不保障 并且功能不完全 免费 免费软件 免费进销存 诸如此类
  • 回望计算机视觉会议ICCV的31年

    作者 原野寻踪 编辑 汽车人 原文链接 https zhuanlan zhihu com p 670393313 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 本文只做
  • CorelDRAW2024官方中文版重磅发布更新

    35年专注于矢量设计始于1988年并不断推陈出新 致力为全球设计工作者提供更高效的设计工具 CorelDRAW 滋养并见证了一代设计师的成长 在最短的时间内交付作品 CorelDRAW的智能高效会让你一见钟情 CorelDRAW 全称 Co
  • 15天学会Python深度学习,我是如何办到的?

    陆陆续续有同学向我们咨询 Python编程如何上手 深度学习怎么学习 如果有人能手把手 一对一帮帮我就好了 我们非常理解初学者的茫然和困惑 大量视频 书籍 广告干扰了大家的判断 学习Python和人工智能 成为内行人不难 为此 我们推出了
  • 深度学习:人脸识别系统 Tensorflow 人脸检测 Python语言 facenet人脸识别算法 毕业设计(源码)✅

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 选择我们就是选择放心 选择安心毕业 感兴趣的可以先收藏起来 点赞 关注不迷路 毕业设计 2023 2024年计算机毕业
  • 【GRNN-RBFNN-ILC算法】【轨迹跟踪】基于神经网络的迭代学习控制用于未知SISO非线性系统的轨迹跟踪(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 第1部分 2 2 第2部分
  • 深度学习(5)--Keras实战

    一 Keras基础概念 Keras是深度学习中的一个神经网络框架 是一个高级神经网络API 用Python编写 可以在TensorFlow CNTK或Theano之上运行 Keras优点 1 允许简单快速的原型设计 用户友好性 模块化和可扩
  • 自动驾驶离不开的仿真!Carla-Autoware联合仿真全栈教程

    随着自动驾驶技术的不断发展 研发技术人员开始面对一系列复杂挑战 特别是在确保系统安全性 处理复杂交通场景以及优化算法性能等方面 这些挑战中 尤其突出的是所谓的 长尾问题 即那些在实际道路测试中难以遇到的罕见或异常驾驶情况 这些问题暴露了实车
  • 对中国手机作恶的谷歌,印度CEO先后向三星和苹果低头求饶

    日前苹果与谷歌宣布合作 发布了 Find My Device Network 的草案 旨在规范蓝牙追踪器的使用 在以往苹果和谷歌的生态形成鲜明的壁垒 各走各路 如今双方竟然达成合作 发生了什么事 首先是谷歌安卓系统的市场份额显著下滑 数年来

随机推荐