Izhikevich нейрон является простым , но довольно эффективной моделью биологического нейрона, предназначенным для использования в дискретное время пошагового моделирования. В этой игре в гольф вы будете реализовывать эту модель.
параметры
Эта модель включает в себя только 7 переменных, организованных в 2 дифференциальных уравнения, по сравнению с десятками параметров физиологически точной модели.
v
иu
две переменные состояния нейрона. Здесьv
- «быстрая» переменная, представляющая потенциал клетки со временем, иu
«медленная» переменная, представляющая определенные свойства мембраны.v
Переменная является наиболее важным, так как это выход моделирования.a
,b
,c
, Иd
являются фиксированными константами , которые описывают свойства нейрона. Различные типы нейронов имеют разные константы, в зависимости от желаемого поведения. Примечательно, чтоc
это потенциал сброса, то есть мембранный потенциал, к которому клетка возвращается после пика.I
представляет входной ток для нейрона. В сетевых симуляторах это будет меняться со временем, но для наших целей мы будем рассматривать егоI
как фиксированную постоянную.
Модель
Эта модель имеет очень простой псевдокод. Сначала мы берем постоянные значения abcd
и используем их для инициализации v
и u
:
v = c
u = b * c
Далее, мы перебираем код симуляции столько раз, сколько пожелаем. Каждая итерация представляет 1 миллисекунду времени.
for 1..t:
if v >= 30: # reset after a spike
v = c
u = u + d
v += 0.04*v^2 + 5*v + 140 - u + I
u += a * (b*v - u)
print v
Некоторые реальные реализации включают в себя дополнительные шаги для точности чисел, но мы не включаем их здесь.
вход
Как вход, ваша программа / функция должна принимать значения a
, b
, c
, d
, I
, и t
(число шагов по времени для имитации). После установки ни один из этих параметров не будет изменяться во время нашего простого моделирования. Порядок ввода не имеет значения: вы можете указать порядок, в котором ваша программа принимает эти параметры.
Выход
Выходными данными будет список чисел, представляющих потенциал мембраны клетки (заданный переменной v
) в течение моделирования. Список может быть в любом подходящем формате.
У вас есть выбор: включить ли 0-е значение симуляции (начальная конфигурация до истечения какого-либо времени) в ваши выходные данные. Например, для ввода 0.02 0.2 -50 2 10 6
(для a b c d I t
), вывода либо
-50
-40
-16.04
73.876224
-42.667044096
-25.8262335380956
29.0355029192068
или
-40
-16.04
73.876224
-42.667044096
-25.8262335380956
29.0355029192068
приемлемо
Ваши значения не обязательно должны быть такими же, как указано выше, в зависимости от того, как ваш язык обрабатывает плавающие выражения.
Реализация эталона
Вот реализация TIO, которую я написал на Perl для демонстрации модели. Параметры - это «болтающий» нейрон из статьи, связанной выше, и это служит демонстрацией того, как эта модель способна воссоздать некоторые из более сложных свойств нейронов, таких как чередование состояний высокой и низкой активности. Если вы посмотрите на выходной сигнал, то увидите, что нейрон сразу несколько раз скачет, но затем подождет некоторое время, прежде чем вспыхнет еще несколько раз (несмотря на то, что входное напряжение ячейки I
остается постоянным все время).
t
когда-нибудь отрицательным?