Neuroid is a Nucleus
This commit is contained in:
parent
2bae70fae2
commit
88bf20b9c2
@ -28,16 +28,15 @@ public class NeuroidNetwork {
|
||||
}
|
||||
}
|
||||
|
||||
public class Neuroid {
|
||||
public class Neuroid : Nucleus {
|
||||
public string name;
|
||||
|
||||
public int layerIx;
|
||||
public int stale = 0;
|
||||
|
||||
public readonly Dictionary<Neuroid, Synapse> synapses = new();
|
||||
// public readonly Dictionary<Neuroid, Synapse> synapses = new();
|
||||
|
||||
public Vector3 outputValue;
|
||||
public HashSet<Neuroid> outputNeuroids = new();
|
||||
// public HashSet<Neuroid> outputNeuroids = new();
|
||||
|
||||
public bool average = false;
|
||||
//public bool quadratic = false;
|
||||
@ -46,7 +45,7 @@ public class Neuroid {
|
||||
|
||||
public NeuroidNetwork net;
|
||||
|
||||
public Neuroid(NeuroidNetwork net, string name) {
|
||||
public Neuroid(NeuroidNetwork net, string name) : base(net) {
|
||||
this.net = net;
|
||||
this.name = name;
|
||||
if (this.net != null)
|
||||
@ -58,9 +57,9 @@ public class Neuroid {
|
||||
this.synapses[input] = new(input, Vector3.zero, 1.0f);
|
||||
}
|
||||
|
||||
public void AddReceiver(Neuroid receiver) {
|
||||
this.outputNeuroids.Add(receiver);
|
||||
}
|
||||
// public void AddReceiver(Neuroid receiver) {
|
||||
// this.outputNeuroids.Add(receiver);
|
||||
// }
|
||||
|
||||
public void ResetWeights() {
|
||||
foreach (Synapse synapse in this.synapses.Values)
|
||||
|
||||
@ -1,17 +1,26 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
public class Nucleus {
|
||||
public class State {
|
||||
|
||||
}
|
||||
//public Neuroid output;
|
||||
public readonly Dictionary<Neuroid, Synapse> synapses = new();
|
||||
|
||||
public State state;
|
||||
public HashSet<Neuroid> outputNeuroids = new();
|
||||
|
||||
public int layerIx;
|
||||
|
||||
public Neuroid output;
|
||||
|
||||
public Nucleus(NeuroidNetwork neuroidNet) {
|
||||
this.output = new(neuroidNet, "Nucleus output");
|
||||
//this.output = new(neuroidNet, "Nucleus output");
|
||||
}
|
||||
|
||||
public void AddReceiver(Neuroid receiver) {
|
||||
this.output.AddReceiver(receiver);
|
||||
public virtual void AddReceiver(Neuroid receiver) {
|
||||
//this.output.AddReceiver(receiver);
|
||||
this.outputNeuroids.Add(receiver);
|
||||
}
|
||||
|
||||
// public void GetInputFrom(Neuroid input, float weight = 1.0f) {
|
||||
// input.AddReceiver(this);
|
||||
// this.synapses[input] = new(input, Vector3.zero, weight);
|
||||
// }
|
||||
|
||||
}
|
||||
@ -1,14 +1,24 @@
|
||||
public class Roaming : Nucleus {
|
||||
|
||||
public float avoidanceForce;
|
||||
public Neuroid avoidance;
|
||||
|
||||
public Neuroid output;
|
||||
|
||||
|
||||
public const int BoundaryType = 1;
|
||||
public const int BoidType = 2;
|
||||
|
||||
public Roaming(NeuroidNetwork neuroidNet, Perception perception, SwarmControl sc) : base(neuroidNet) {
|
||||
avoidance = new(neuroidNet, "Separation") { inverse = true };
|
||||
this.avoidanceForce = sc.avoidanceForce;
|
||||
|
||||
avoidance = new(neuroidNet, "Avoidance") { inverse = true };
|
||||
perception.SendPositions(avoidance);
|
||||
|
||||
this.output = new(neuroidNet, "Roaming");
|
||||
output.GetInputFrom(avoidance, -sc.avoidanceForce);
|
||||
}
|
||||
|
||||
public override void AddReceiver(Neuroid receiver) {
|
||||
output.AddReceiver(receiver);
|
||||
}
|
||||
}
|
||||
@ -6,6 +6,8 @@ public class Swarming : Nucleus {
|
||||
public Neuroid avoidance;
|
||||
public Neuroid boundary;
|
||||
|
||||
public Neuroid output;
|
||||
|
||||
public const int BoundaryType = 1;
|
||||
public const int BoidType = 2;
|
||||
|
||||
@ -21,9 +23,9 @@ public class Swarming : Nucleus {
|
||||
|
||||
boundary = new(neuroidNet, "Boundary");
|
||||
|
||||
this.output = new(neuroidNet, "Swarming");
|
||||
output.GetInputFrom(alignment, sc.alignmentForce);
|
||||
output.GetInputFrom(cohesion, sc.cohesionForce);
|
||||
output.GetInputFrom(avoidance, -sc.avoidanceForce);
|
||||
output.GetInputFrom(boundary, sc.boundaryForce);
|
||||
}
|
||||
}
|
||||
}}
|
||||
Loading…
x
Reference in New Issue
Block a user