RNeat-master.zip

  • gifamo8571
    了解作者
  • R language
    开发工具
  • 323KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2020-03-24 18:00
    上传日期
RNeat - Neuroevolution of Augmenting Topologies (NEAT) - Genetic neural network evolution
RNeat-master.zip
  • RNeat-master
  • man
  • newConfigNEAT.Rd
    773B
  • NEATSimulation.GetStateHistoryForGenomeAndSpecies.Rd
    664B
  • NEATSimulation.RunSingleGeneration.Rd
    802B
  • compute.Rd
    2KB
  • rneatneuralnetcontinuetraining.Rd
    2KB
  • newNEATSimulation.Rd
    8.3KB
  • rneatneuralnet.Rd
    2.3KB
  • vignettes
  • figures
  • crossover1.png
    47.3KB
  • linkMutate.png
    14KB
  • squareRootNetwork.png
    27.7KB
  • enableDisableMutate.png
    13.6KB
  • nodeMutate.png
    19.8KB
  • genotype-phenotype.png
    16.9KB
  • crossover2.png
    43.5KB
  • pointMutate.png
    12.2KB
  • rneat-vignette.R
    7.8KB
  • rneat-vignette.html
    193.4KB
  • rneat-vignette.Rmd
    12.2KB
  • R
  • Examples
  • squareRoot.R
    1.4KB
  • polebalance.R
    7.1KB
  • neat.R
    33.2KB
  • neatCharting.R
    14.1KB
  • neatFormula.R
    8.5KB
  • DESCRIPTION
    583B
  • .gitignore
    31B
  • RNeat.Rproj
    433B
  • .Rbuildignore
    28B
  • NAMESPACE
    1009B
内容介绍
#' @importFrom methods is #' @importFrom stats median runif #' @importFrom animation saveVideo ani.options config.video.phenotypedurationseconds = 1 config.video.performancedurationseconds = 1 #' Configuration for setting the number of system inputs/outputs, the max number of nodes and the total number of genomes #' #' @param numInputs The number of inputs to the neural network #' @param numOutputs The number of outputs from the neural network #' @param maxNumOfNodes The maximum number of neural network nodes #' @param speciesPopulation The number of genomes to simulate #' @return configNEAT class #' @export newConfigNEAT <- function(numInputs,numOutputs,maxNumOfNodes, speciesPopulation=200){ assertTrueFunc(is(numInputs,"numeric"),"NumInputs must be a number") assertTrueFunc(is(numOutputs,"numeric"),"NumOutputs must be a number") assertTrueFunc(is(maxNumOfNodes,"numeric"),"MaxNumOfNodes must be a number") assertTrueFunc(is(speciesPopulation,"numeric"),"SpeciesPopulation must be a number") assertTrueFunc(numInputs>0,"NumInputs must be greater than 0") assertTrueFunc(numOutputs>0,"NumOutputs must be greater than 0") assertTrueFunc(maxNumOfNodes>0,"MaxNumOfNodes must be greater than 0") assertTrueFunc(speciesPopulation>0,"SpeciesPopulation must be greater than 0") res <- list(MutateConnectionChance=0.25, MutateLinkChance=2, MutateBiasChance=0.4, MutateNodeChance=0.5, MutateEnableChance=0.2, MutateDisableChance=0.4, MutateStepSize=0.1, MutationIncOrDecRate=0.05, PerturbChance=0.9, StaleSpecies=25, CrossoverChance=0.75, SpeciesPopulation=speciesPopulation, SpeciesDeltaDisjoint=2, SpeciesDeltaWeight=0.4, SpeciesDeltaThreshold=1, Inputs=numInputs, Outputs=numOutputs, MaxNodes=maxNumOfNodes ) class(res) <- "configNEAT" return(res) } print.newConfigNEAT <- function(configNEAT){ dumpItemFunc(configNEAT) } neatseq <- function(from,to){ if(to==0){ return (list()) } else { return (seq(from,to)) } } assertTrueFunc <- function(testExpression, messageIfNotTrue){ if(!testExpression){ cat(paste("Assertion Fail:",messageIfNotTrue,"\n")) stop() } } dumpItemFunc <- function(item){ for(key in ls(item)){ print(paste(key,item[key])) } } sigmoid <- function(x,mu=4.9){ return(2/(1+exp(-mu*x))-1) } newInnovation <- function(){ UseMethod("newInnovation") } pkg.env <- new.env() pkg.env$innovation <- 0 newInnovation.default <- function(){ #stop("New innovation function not implemented") pkg.env$innovation <- pkg.env$innovation + 1 return (pkg.env$innovation) } newPool <- function(neatConfig){ UseMethod("newPool") } newPool.default <- function(neatConfig){ res <- list(species=list(),generation=0,innovation=neatConfig$Outputs,currentSpecies=1,currentGenome=1,currentFrame=0,maxFitness=0,minFitness=0,meanFitness=0,medianFitness=0) class(res) <- "pool" return(res) } print.pool <- function(pool){ dumpItemFunc(pool) } newSpecies <- function(){ UseMethod("newSpecies") } newSpecies.default <- function(){ res <- list(topFitness=0,staleness=0,genomes=list(),averageFitness=0) class(res) <- "species" return(res) } print.species <- function(species){ dumpItemFunc(species) } newGenome <- function(neatConfig){ UseMethod("newGenome") } newGenome.default <- function(neatConfig){ #for(item in nodeGenes) { assertTrueFunc(is(item,"nodegene"),"Node genes list must only contain nodegene class") } #for(item in connectionGenes) { assertTrueFunc(is(item,"connectiongene"),"Connection genes list must only contain connectiongene class") } res <- list(ConnectionGenes=list(), Fitness=0, AdjustedFitness=0, Network=list(), MaxNeuron=neatConfig$Inputs, GlobalRank=0, MutationRate=list(Connections=neatConfig$MutateConnectionChance, Link=neatConfig$MutateLinkChance, Bias=neatConfig$MutateBiasChance, Node=neatConfig$MutateNodeChance, Enable=neatConfig$MutateEnableChance, Disable=neatConfig$MutateDisableChance, Step=neatConfig$MutateStepSize)) class(res) <- "genome" return(res) } print.genome <- function(genome){ dumpItemFunc(genome) } basicgenome <- function(neatConfig){ g <- newGenome(neatConfig) g$MaxNeuron <- neatConfig$Inputs return (mutateGenome(g,neatConfig)) } newConnectiongene <- function(){ UseMethod("newConnectiongene") } newConnectiongene.default <- function(){ #assertTrueFunc(is(inNode,"nodegene"),"InNode must be a node gene") #assertTrueFunc(is(outNode,"nodegene"),"OutNode must be a node gene") #assertTrueFunc(is.numeric(weight),"Weight must be a numeric value") #assertTrueFunc(is(enabled,"logical"),"Enabled must be a boolean") #assertTrueFunc(is.numeric(innovation),"Innovation must be a numeric value") res <- list(InNode=NA,OutNode=NA,Weight=0,Enabled=T,Innovation=0) class(res) <- "connectiongene" return(res) } print.connectiongene <- function(connectiongene){ dumpItemFunc(connectiongene) } newNeuron <- function(){ UseMethod("newNeuron") } newNeuron.default <- function(){ res <- list(Incoming=list(),Value=0) class(res) <- "neuron" return(res) } print.neuron <- function(neuron){ dumpItemFunc(neuron) } newNetwork <- function(){ UseMethod("newNetwork") } newNetwork.default <- function(){ res <- list(Neurons=list()) class(res) <- "network" return (res) } print.network <- function(network){ dumpItemFunc(network) } #NEED TO BE EXCEPTIONALLY CAREFUL DUE TO PASS BY VALUE AND NOT REF LIKE LUA generateNetwork <- function(genome,neatConfig){ assertTrueFunc(is(genome,"genome"),"Genome must be a of class genome") network <- newNetwork() for(i in seq(1,neatConfig$Inputs)){ network$Neurons[[i]] <- newNeuron() } for(o in seq(1,neatConfig$Outputs)){ network$Neurons[[o+neatConfig$MaxNodes]] <- newNeuron() } #print(network) sortOutNodeIndex <- order(sapply(genome$ConnectionGenes,"[[","OutNode"),na.last=F) #NA Treatment? #print(sortOutNodeIndex) for(idx in sortOutNodeIndex){ gene <- genome$ConnectionGenes[[idx]] #if(gene$Enabled){ if(is.null(network$Neurons[[gene$OutNode]])){ network$Neurons[[gene$OutNode]] <- newNeuron() } #print("Trying to set the gene") #print(gene) network$Neurons[[gene$OutNode]]$Incoming[[length(network$Neurons[[gene$OutNode]]$Incoming)+1]] <- gene if(is.null(network$Neurons[gene$InNode])){ network$Neurons[[gene$InNode]] <- newNeuron() } #} } genome$Network <- network return (genome) } evaluateNetwork <- function(network,inputs,neatConfig){ assertTrueFunc(is(network,"network"),"Network must be a of class network") #print("EvaluateNetwork") #print(network) if(length(inputs) != neatConfig$Inputs){ stop("Number of inputs does not match the number in the config") } for(i in seq(1,neatConfig$Inputs)){ network$Neurons[[i]]$Value <- inputs[[i]] } #print(network$Neurons) for(j in seq(1,length(network$Neurons))){ totalSum <- 0 if(!is.null(network$Neurons[[j]])){ for(i in neatseq(1,length(network$Neurons[[j]]$Incoming))){ #Do i need a null filter here? incoming <- network$Neurons[[j]]$Incoming[[i]] if(!is.null(incoming) && incoming$Enabled){ other <- network$Neurons[[incoming$InNode]] # print("incoming") # print(incoming) # print("other") # print(other) # print(paste("Incoming weight is:",incoming$Weight,"Incoming value",other$Value)) totalSum <- totalSum + incoming$Weight * other$Value # p
评论
    相关推荐
    • sahiwdpb.zip
      基于欧几里得距离的聚类分析,多姿态,多角度,有不同光照,最大信噪比的独立分量分析算法,多目标跟踪的粒子滤波器,基于人工神经网络的常用数字信号调制,鲁棒性好,性能优越,IDW距离反比加权方法,matlab开发工具...
    • fs817.zip
      Contains a common array signal processing algorithm, Data analysis, plotting, etc., Is a two hidden layer back propagation neural network.
    • fenfou.zip
      已经调试成功.内含m文件,可直接运行,含噪脉冲信号进行相关检测,包括AHP,因子分析,回归分析,聚类分析。
    • yypjzjvj.zip
      数值类综合算法 常用数值计算工具包(龙贝格算法、改进欧拉法、TlMnptk、复合辛普森),Matlab数学建模工具箱(以及众多实例)。 常用算法:如Floyd算法、qnPDSbC、动态规划、组合算法、贪婪算法
    • android从bootloader到launcher启动流程整理
      讲述android 开机流程 从boot rom---bootloader---init--zygote---systemserver---ams 并附上自己整理的每个流程的流程图 ,清晰熟悉android 启动流程
    • 基于python开发的全国新工商采集工具 v1.2版本
      这个软件是通过scrapy爬虫框架结合代理IP池再加上request模拟请求技术以及验证码识别技术,可以做到日更新采集全国新工商信息。采集的数据自动存储在mysql数据库表里,可下载全量1.8亿多企业工商基本信息和36维度的详细信息.支持sql和excel导出数据包格式。
    • 卷积神经网络
      这是卷积神经网络的一个实际用例,已经调试好了,能够在matlab上成功运行,适合从事卷积神经网络(CNN)研究的人员学习使用。
    • OFDM的MATLAB仿真
      1.使用Matlab实现一个OFDM系统。 OFDM系统具体参数参照LTE标准,具体为: 系统带宽:5MHz; OFDM符号长度:0.0714ms; 子载波间隔:15kHz; CP长度:OFDM符号长度的7 ; FFT点数:512; 2.选择一种降低OFDM系统峰均比的算法,在1的基础上实现,并分析其性能。
    • matlab匹配滤波代码-matlab_for_thesis:Matlab博士学位论文代码
      matlab匹配滤波代码博士论文的MATLAB代码 博士论文的MATLAB代码的一部分,“井田双色散水下声通道中的多载波通信”。 函数下的func_JingTian文件夹 FUNC_JINGTIAN包含多载波通信中一些通常需要的功能: OFDM调制/解调模块,包括几种数据辅助的信道估计方法和差分解调; 快速实现GFDM和C-FBMC调制/解调,分别包括时域和频域的迫零(ZF)和匹配滤波(MF)均衡; 为OFDM信道估计中使用的压缩感测方法计算字典的功能; 增加信道效应,施加宽带多普勒失真的功能; 通过线性调频Z变换(CZT)以任意精度对频域中的信号进行重采样; Hermite函数合成的信号之间的交叉歧义函数的计算。 演示文件夹 以下列出了四个演示 demo1:使用基本追踪(BP)算法形式的压缩感知方法对OFDM进行稀疏2-D信道估计; demo2:比较基本数据辅助OFDM信道估计算法,包括常规频域插值和基于IDFT的变换域方法; demo3:圆形滤波器组多载波(C-FBMC / OQAM)的基于DFT特征向量的原型滤波器合成; demo4:用于广义频分复用(GFDM)的辅助日期辅助无干
    • Wind-Energy-Prediction-using-LSTM:使用LSTM进行风能预测的时间序列分析
      使用长期短期记忆(LSTM)进行风能预测 有关完整的详细信息,请阅读CSE 523项目报告.pdf。 介绍 由于风速/功率具有可再生性和环境友好性,因此在地球上受到越来越多的关注。 随着全球风电装机容量的Swift增加,风电行业正在发展为大型企业。 可靠的短期风速预测在风能转换系统中起着至关重要的作用,例如风轮机的动态控制和电力系统调度。 精确的预测需要克服由于天气条件波动而导致的可变能源生产问题。 风产生的功率高度依赖于风速。 尽管它是高度非线性的,但风速在特定时间段内遵循特定模式。 我们利用这种时间序列模式来获得有用的信息,并将其用于功率预测。 LSTM用于对数据执行不同的实验并得出结论。 结论 我们的目标是改善对使用风能发电的功率的预测,并且已经实现了将LSTM用作机器学习模型并对其进行模型优化。 我们还观察到,如果风速小于4 m / s,则系统生成的功率为零。 LSTM无法学习这