44 : std::make_unique<SigmoidFunction>(0.0, 10.0);
51 constexpr double epsilon = 1e-6;
52 return std::abs(
tau - other.
tau) < epsilon &&
56 [[nodiscard]] std::string
toString()
const override
58 std::ostringstream result;
59 result <<
"Parameters: ["
60 <<
"Tau: " << std::fixed << std::setprecision(2) <<
tau <<
", "
79 std::string str =
"Bump 2D: [";
80 str +=
"Centroid: (" + std::format(
"{:.2f}",
centroid_x) +
", " + std::format(
"{:.2f}",
centroid_y) +
"), ";
81 str +=
"Amplitude: " + std::format(
"{:.2f}",
amplitude) +
", ";
82 str +=
"Area: " + std::format(
"{:.2f}",
area) +
", ";
83 str +=
"Velocity: (" + std::format(
"{:.2f}",
velocity_x) +
", " + std::format(
"{:.2f}",
velocity_y) +
")]";
95 std::vector<NeuralField2DBump>
bumps;
106 std::string str =
"Neural field 2D state [";
107 str +=
"Stable: " + std::string(
stable ?
"true" :
"false") +
", ";
112 for (
const auto& bump :
bumps)
113 str += bump.toString();
129 double* act_ =
nullptr;
130 double* inp_ =
nullptr;
131 double* rest_ =
nullptr;
132 bool computeStateMetrics_ =
true;
133 std::vector<NeuralField2DBump> prevBumps_;
138 void init()
override;
139 void step(
double t,
double deltaT)
override;
140 std::string
toString()
const override;
141 std::shared_ptr<Element>
clone()
const override;
156 void calculateActivation(
double t,
double deltaT);
157 void calculateOutput();
158 void updateState(
double deltaT);
159 void updateBumps(
double deltaT);
Abstract base class for all simulation elements.
Definition element.h:28
Definition neural_field_2d.h:125
std::vector< NeuralField2DBump > getBumps() const
Definition neural_field_2d.h:151
bool isStable() const
Definition neural_field_2d.h:148
void setThresholdForStability(double threshold)
Definition neural_field_2d.h:146
std::string toString() const override
Definition neural_field_2d.cpp:162
double getHighestActivation() const
Definition neural_field_2d.h:150
NeuralField2DParameters getParameters() const
Definition neural_field_2d.cpp:182
void step(double t, double deltaT) override
Advance the element by one time step.
Definition neural_field_2d.cpp:29
void setComputeStateMetrics(bool enable)
Definition neural_field_2d.h:152
bool getComputeStateMetrics() const
Definition neural_field_2d.h:153
double getLowestActivation() const
Definition neural_field_2d.h:149
std::shared_ptr< Element > clone() const override
Definition neural_field_2d.cpp:171
void init() override
Initialize the element (called once before the simulation loop).
Definition neural_field_2d.cpp:15
void setParameters(const NeuralField2DParameters ¶meters)
Definition neural_field_2d.cpp:176
double getStabilityThreshold() const
Definition neural_field_2d.h:147
Definition element_parameters.h:10
Abstract base for activation functions applied to a neural field.
Definition activation_function.h:36
Definition element_parameters.h:188
Definition element_parameters.h:206
Definition neural_field_2d.h:69
double centroid_x
Definition neural_field_2d.h:70
double amplitude
Definition neural_field_2d.h:72
std::string toString() const
Definition neural_field_2d.h:77
void print() const
Definition neural_field_2d.h:87
double area
Definition neural_field_2d.h:73
double velocity_y
Definition neural_field_2d.h:75
double centroid_y
Definition neural_field_2d.h:71
double velocity_x
Definition neural_field_2d.h:74
Definition neural_field_2d.h:15
double tau
Definition neural_field_2d.h:16
NeuralField2DParameters(double tau, double restingLevel, const ActivationFunction &af)
Definition neural_field_2d.h:25
NeuralField2DParameters()
Definition neural_field_2d.h:20
bool operator==(const NeuralField2DParameters &other) const
Definition neural_field_2d.h:49
std::unique_ptr< ActivationFunction > activationFunction
Definition neural_field_2d.h:18
std::string toString() const override
Definition neural_field_2d.h:56
double startingRestingLevel
Definition neural_field_2d.h:17
NeuralField2DParameters & operator=(const NeuralField2DParameters &other)
Definition neural_field_2d.h:36
NeuralField2DParameters(const NeuralField2DParameters &other)
Definition neural_field_2d.h:29
Definition neural_field_2d.h:94
double highestActivation
Definition neural_field_2d.h:98
double previousActivationNorm
Definition neural_field_2d.h:102
double previousActivationAvg
Definition neural_field_2d.h:101
std::string toString() const
Definition neural_field_2d.h:104
void print() const
Definition neural_field_2d.h:118
std::vector< NeuralField2DBump > bumps
Definition neural_field_2d.h:95
double lowestActivation
Definition neural_field_2d.h:97
double thresholdForStability
Definition neural_field_2d.h:99
double previousActivationSum
Definition neural_field_2d.h:100
bool stable
Definition neural_field_2d.h:96
Logistic (exponential) sigmoid.
Definition activation_function.h:70