IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> CSP202109第三题——脉冲神经网络 -> 正文阅读

[人工智能]CSP202109第三题——脉冲神经网络

思路

定义存储结构
输入
正整数N,S,P,T,表示一共有N个神经元,S个突触和P个脉冲源,输 出时间刻T。
正实数Dt
N个神经元,每个神经元v u a b c d,以及上一次的v和u。
结构体数组,数组下标为神经元的编号
P个脉冲源的r参数正整数。
S个突触。脉冲源的r参数正整数。两个整数s,t、一个实数w和一个正整数D ,其中s和t分别是入结点和出结点的编号;w和D分别表示脉冲强度和传播延迟。
计算所有脉冲源在1到T时刻,是否会发送脉冲,并将脉冲强度值赋值到连接的神经元lk中
计算每个时刻,每个神经元按照公式计算。如果值满足条件,发出脉冲。
遍历每个神经元,求得T时刻的最值和发送脉冲数的最值

代码

#include <iostream>
#include <bits/stdc++.h>
 
using namespace std;

static unsigned long next = 1;

/* RAND_MAX assumed to be 32767 */
int myrand(void) {
    next = next * 1103515245 + 12345;
    return((unsigned)(next/65536) % 32768);
}

int N, S, P, T;
double Dt;
int rn;
struct neural {
	double v_pre, u_pre;
	double v, u;
	double a, b, c, d;
}NN[1000];

int r[1000];
double IK[1000][10000] = {0};

struct edg {
	int from, to;
	double w;
	int D;
}e[1000];
 
int main()
{
	scanf("%d%d%d%d", &N, &S, &P, &T);
	scanf("%lf", &Dt);
	int rn;
	double vv, uu, aa, bb, cc, dd;
	int sum = 0;
	while (sum < N) {
		scanf("%d%lf%lf%lf%lf%lf%lf", &rn, &vv, &uu, &aa, &bb, &cc, &dd);
		for (int i=sum; i<sum+rn; i++) {
			NN[i].v_pre = NN[i].v = vv;
			NN[i].u_pre = NN[i].u = uu;
			NN[i].a = aa;
			NN[i].b = bb;
			NN[i].c = cc;
			NN[i].d = dd;
		}
		sum += rn;
	}
	
	for (int i=0; i<P; i++) {
		scanf("%d", &r[i]);
	}
	
	for (int i=0; i<S; i++) {
		int ff, tt;
		double ww;
		int DD;
		scanf("%d%d%lf%d", &ff, &tt, &ww, &DD);
		e[i].from = ff;
		e[i].to = tt;
		e[i].w = ww;
		e[i].D = DD; 
	}
	
	for (int t=1; t<=T; t++) {
		for (int i=0; i<P; i++) {
			if (r[i] > myrand()) {
				for (int j=0; j<S; j++) {
					if ((e[j].from==i+N) && (t+e[j].D<=T)) {
						IK[e[j].to][t+e[j].D] = e[j].w;
					}
				}
			}
		}
	}
	
	int cnt[1000] = {0};
	for (int t=1; t<=T; t++) {
		for (int i=0; i<N; i++) {
			NN[i].v = NN[i].v_pre + Dt*(0.04*NN[i].v_pre*NN[i].v_pre + 5*NN[i].v_pre + 140.0 - NN[i].u_pre) + IK[i][t];
			NN[i].u = NN[i].u_pre + Dt*NN[i].a*(NN[i].b*NN[i].v_pre - NN[i].u_pre);
			if (NN[i].v >= 30) {
				cnt[i]++;
				NN[i].v = NN[i].c;
				NN[i].u += NN[i].d;
				for (int j=0; j<S; j++) {
					if ((e[j].from==i) && (t+e[j].D<=T)) {
						IK[e[j].to][t+e[j].D] += e[j].w;
					}
				}
			}
			NN[i].v_pre = NN[i].v;
			NN[i].u_pre = NN[i].u;
		}
	}
	
	double minv = NN[0].v, maxv = NN[0].v;
	int mincnt = cnt[0], maxcnt = cnt[0];
	for (int i=1; i<N; i++) {
		if (minv > NN[i].v)
			minv = NN[i].v;
		if (maxv < NN[i].v)
			maxv = NN[i].v;
		if (mincnt > cnt[i])
			mincnt = cnt[i];
		if (maxcnt < cnt[i])
			maxcnt = cnt[i];
	}
	printf("%.3lf %.3lf\n", minv, maxv);
	printf("%d %d\n", mincnt, maxcnt);
	
    return 0;
 }

结果

骗分在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-05 12:02:52  更:2021-12-05 12:03:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 4:00:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码