54 lines
2.6 KiB
C#

// using System;
// using Unity.Mathematics;
// /// <summary>
// /// The Pulsar represents a type of neuron that operates based on
// /// the product of its weighted inputs rather than the traditional summation.
// /// Drawing inspiration from the concept of pulsars in astrophysics
// /// —highly magnetized rotating neutron stars that emit beams of radiation—
// /// the Pulsar could symbolize dynamic, focused output based on the interaction of multiple factors.
// /// </summary>
// /// Multiplicative Functionality:
// /// Instead of summing inputs, the Pulsar takes the weighted product of its inputs.
// /// This means that all inputs must be active (non-zero) for the neuron to "pulse" or activate.
// /// Output Behavior:
// /// The output could amplify or diminish depending on the magnitude of the inputs.
// /// The product would be sensitive to small values,
// /// which means that even a small input could significantly lower the overall output if multiplied.
// /// Activation Mechanism:
// /// The activation function can further refine the output from the product result.
// /// For instance, a certain threshold could be used to determine if a pulse occurs.
// /// Modeling Complex Interactions:
// /// The Pulsar could be particularly beneficial for modeling situations where interactions multiply rather than add.
// /// This is useful in fields such as economics (e.g., compound growth models),
// /// biology (e.g., interaction of hormones), and machine learning where multiplicative relationships exist.
// [Serializable]
// public class Pulsar : Neuron {
// public Pulsar(Cluster parent, string name) : base(parent, name) {
// // To prevent mistakes, bias one (instead of zero for standard neurons)
// this.bias = new float3(1, 1, 1);
// }
// public Pulsar(ClusterPrefab parent, string name) : base(parent, name) {
// // To prevent mistakes, bias one (instead of zero for standard neurons)
// this.bias = new float3(1, 1, 1);
// }
// public override Nucleus ShallowCloneTo(Cluster newParent) {
// Pulsar clone = new(newParent, this.name);
// CloneFields(clone);
// return clone;
// }
// public override void UpdateStateIsolated() {
// float3 product = this.bias;
// //Applying the weight factors
// foreach (Synapse synapse in this.synapses) {
// float3 input = synapse.weight * synapse.nucleus.outputValue;
// product *= input;
// }
// // Activation function
// this.outputValue = Activator(product);
// }
// }