Score on returning with food

This commit is contained in:
Pascal Serrarens 2026-08-11 16:43:36 +02:00
parent 45511cd1b4
commit 22fe85478b
3 changed files with 22 additions and 8 deletions

View File

@ -188,14 +188,19 @@ namespace NanoBrain {
else { else {
uint instanceCount = 1; uint instanceCount = 1;
foreach (ExternalClusterData externalCluster in clusterData.clusters) { foreach (ExternalClusterData externalCluster in clusterData.clusters) {
if (externalCluster.name == synapseData.clusterName) if (externalCluster.clusterName == synapseData.clusterName) {
instanceCount = externalCluster.instanceCount; instanceCount = externalCluster.instanceCount;
//extPrefab.name = externalCluster.name;
if (this.nuclei.Find(nucleus => nucleus.name == synapseData.clusterName) is not Cluster extCluster) {
extCluster = new(extPrefab, this, instanceCount);
//extCluster.name = clusterData.name;
extCluster.name = externalCluster.name;
}
Neuron extNeuron = extCluster.GetNeuron(synapseData.neuronName);
Debug.Log("Add receiver for external");
extNeuron.AddReceiver(receiver);
}
} }
if (this.nuclei.Find(nucleus => nucleus.name == synapseData.clusterName) is not Cluster extCluster)
extCluster = new(extPrefab, this, instanceCount);
Neuron extNeuron = extCluster.GetNeuron(synapseData.neuronName);
Debug.Log("Add receiver for external");
extNeuron.AddReceiver(receiver);
} }
} }
else { else {
@ -387,7 +392,7 @@ namespace NanoBrain {
foreach (Synapse synapse in neuron.synapses) { foreach (Synapse synapse in neuron.synapses) {
if (synapse.trainable) { if (synapse.trainable) {
synapse.weight = (float)randomGenerator.NextDouble() * 2.0f - 1.0f; synapse.weight = (float)randomGenerator.NextDouble() * 2.0f - 1.0f;
//Debug.Log($"{neuron.name}-{synapse.neuron.name} weight = {synapse.weight}"); // Debug.Log($"{neuron.name}-{synapse.neuron.name} weight = {synapse.weight}");
} }
} }
} }
@ -934,10 +939,12 @@ namespace NanoBrain {
[Serializable] [Serializable]
public class ExternalClusterData { public class ExternalClusterData {
public string name; public string name;
public string clusterName;
public uint instanceCount; public uint instanceCount;
public ExternalClusterData(Cluster cluster) { public ExternalClusterData(Cluster cluster) {
this.name = cluster.name; this.name = cluster.name;
this.clusterName = cluster.prefab.name;
this.instanceCount = (uint)cluster.instanceCount; this.instanceCount = (uint)cluster.instanceCount;
} }
} }

View File

@ -180,6 +180,8 @@ namespace NanoBrain {
_outputValue = value; _outputValue = value;
if (this.isFiring) if (this.isFiring)
WhenFiring?.Invoke(); WhenFiring?.Invoke();
else
WhenNotFiring?.Invoke();
} }
} }
public float3 activation => outputValue; public float3 activation => outputValue;
@ -228,6 +230,8 @@ namespace NanoBrain {
/// </summary> /// </summary>
public Action WhenFiring; public Action WhenFiring;
public Action WhenNotFiring;
/// <summary> /// <summary>
/// When true, the value will not be reset after timeToSleep. /// When true, the value will not be reset after timeToSleep.
/// </summary> /// </summary>

View File

@ -120,7 +120,10 @@ namespace NanoBrain {
public bool trainable; public bool trainable;
public SynapseData(Synapse synapse) { public SynapseData(Synapse synapse) {
this.clusterName = synapse.neuron.parent.name; if (synapse.neuron.parent.prefab != null)
this.clusterName = synapse.neuron.parent.prefab.name;
else
this.clusterName = synapse.neuron.parent.name;
this.neuronName = synapse.neuron.name; this.neuronName = synapse.neuron.name;
this.weight = synapse.weight; this.weight = synapse.weight;
this.trainable = synapse.trainable; this.trainable = synapse.trainable;