internal void AddConnection(INeuralConnection connection, ILearningRule rule) { Contract.Requires(connection != null); Contract.Requires(rule != null); Contract.Requires(rule.AlgorithmType == GetType()); connectionList.AddLast(new LearningConnection(connection, rule)); }
public static Synapse Connect(Neuron n1, Neuron n2, float weight, int delay, ILearningRule learningRule) { Synapse syn = new Synapse(n1, n2, weight, delay, learningRule.GetCopy()); n1.AddPostSynapse(syn); n2.AddPreSynapse(syn); return(syn); }
internal LearningConnection(INeuralConnection connection, ILearningRule rule) { Contract.Requires(connection != null); Contract.Requires(rule != null); Connection = connection; Rule = rule; }
public static void MakeConnection(Group sourceGroup, Group destinationGroup, float weight, int delay, ConnectionPatternDelegate connectionPattern, ILearningRule learningRule) { for (int i = 0; i < sourceGroup.Count; i++) { for (int j = 0; j < destinationGroup.Count; j++) { if (connectionPattern(i, j)) { Synapse syn = new Synapse(sourceGroup[i], destinationGroup[j], weight, delay, learningRule.GetCopy()); sourceGroup[i].AddPostSynapse(syn); destinationGroup[j].AddPreSynapse(syn); } } } }
private void AddLearningAlgo(ILearningConnection connection, ILearningRule rule, Dictionary<Tuple<Type, int>, LearningAlgorithm> algos) { var key = Tuple.Create(rule.AlgorithmType, rule.GroupID); LearningAlgorithm algo; if (!algos.TryGetValue(key, out algo)) { algo = (LearningAlgorithm)Activator.CreateInstance(rule.AlgorithmType); algo.BeginInit(); algos.Add(key, algo); if (algo.BackwardIterationMode == BackwardIterationMode.BackPropagation) doBackpropagation = true; } algo.AddConnection(connection, rule); }
public Synapse(Neuron pre, Neuron post, float synapseWeight, int synapseDelay, ILearningRule synapseLearningRule) : this(pre, post, new SynapseCore(synapseWeight, synapseDelay, synapseLearningRule)) { }
public static void MakeRandomValueConnection(Group sourceGroup, Group destinationGroup, float minWeight, float maxWeight, int minDelay, int maxDelay, ConnectionPatternDelegate connectionPattern, ILearningRule learningRule) { float range = maxWeight - minWeight; for (int i = 0; i < sourceGroup.Count; i++) { for (int j = 0; j < destinationGroup.Count; j++) { if (connectionPattern(i, j)) { float randWeight = (float)rand.NextDouble() * range + minWeight; int randDelay = rand.Next(minDelay, maxDelay + 1); Synapse syn = new Synapse(sourceGroup[i], destinationGroup[j], randWeight, randDelay, learningRule.GetCopy()); sourceGroup[i].AddPostSynapse(syn); destinationGroup[j].AddPreSynapse(syn); } } } }
public SynapseCore(float synapseWeight, int synapseDelay, ILearningRule synapseLearningRule) { Weight = synapseWeight; Delay = synapseDelay; learningRule = synapseLearningRule; }