Neuron Izhikevicha to prosty, ale dość skuteczny model neuronu biologicznego, zaprojektowany do zastosowania w dyskretnej symulacji z krokami w czasie. W tym wyzwaniu golfowym wdrożysz ten model.
Parametry
Model ten obejmuje tylko 7 zmiennych zorganizowanych w 2 równania różniczkowe, w porównaniu do kilkudziesięciu parametrów fizjologicznie dokładnego modelu.
v
iu
są dwiema zmiennymi stanu neuronu. Tutajv
jest „szybką” zmienną reprezentującą potencjał komórki w czasie iu
jest „wolną” zmienną reprezentującą pewne właściwości błony.v
Zmienna jest najważniejsza, ponieważ jest to wyjście symulacji.a
,b
,c
, Id
są przymocowane stałe, które opisują właściwości neuronu. Różne typy neuronów mają różne stałe, w zależności od pożądanego zachowania. W szczególnościc
chodzi o potencjał resetowania, czyli potencjał błonowy, do którego komórka powraca po wzbogaceniu.I
reprezentuje prąd wejściowy do neuronu. W symulacjach sieciowych zmieni się to z czasem, ale dla naszych celów będziemy traktowaćI
jako stałą.
Model
Ten model ma bardzo prosty pseudokod. Najpierw bierzemy stałe wartości abcd
i używamy ich do inicjalizacji v
oraz u
:
v = c
u = b * c
Następnie przeglądamy kod symulacyjny tyle razy, ile potrzeba. Każda iteracja odpowiada 1 milisekundie czasu.
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
Niektóre rzeczywiste implementacje zawierają dodatkowe kroki dla dokładności numerycznej, ale nie uwzględniamy ich tutaj.
Wejście
Jako dane wejściowe, program / funkcja powinna przyjąć wartości a
, b
, c
, d
, I
, i t
(liczba kroków czasowych do symulacji). Po ustawieniu żaden z tych parametrów nie będzie się zmieniał podczas naszej prostej symulacji. Kolejność wprowadzania nie ma znaczenia: możesz określić kolejność, w jakiej program pobiera te parametry.
Wynik
Wyjściem będzie lista liczb reprezentujących potencjał błonowy komórki (podana przez zmienną v
) w trakcie symulacji. Lista może mieć dowolny odpowiedni format.
Masz wybór, czy dołączyć do wyjścia wartość 0 symulacji (wstępna konfiguracja przed upływem czasu). Na przykład dla wejścia 0.02 0.2 -50 2 10 6
(for a b c d I t
) wyjście dowolnego z nich
-50
-40
-16.04
73.876224
-42.667044096
-25.8262335380956
29.0355029192068
lub
-40
-16.04
73.876224
-42.667044096
-25.8262335380956
29.0355029192068
jest do zaakceptowania.
Twoje wartości nie muszą być dokładnie takie same jak powyższe, w zależności od tego, jak Twój język obsługuje zmiennoprzecinkowe.
Wdrożenie referencyjne
Oto implementacja TIO, którą napisałem w Perlu, aby zademonstrować model. Parametry są takie jak „gadający” neuron z powyższego artykułu, co służy jako demonstracja tego, jak ten model jest w stanie odtworzyć niektóre z bardziej złożonych właściwości neuronów, takich jak naprzemienne zmienianie stanów wysokiej i niskiej aktywności. Jeśli spojrzysz na wynik, możesz zobaczyć, gdzie neuron natychmiast gwałtownie podnosi kilka razy, ale potem czeka jeszcze chwilę, zanim przyspieszy jeszcze kilka razy (mimo że napięcie wejściowe komórki I
jest stałe przez cały czas).
t
kiedykolwiek będzie negatywny?