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.
viusą dwiema zmiennymi stanu neuronu. Tutajvjest „szybką” zmienną reprezentującą potencjał komórki w czasie iujest „wolną” zmienną reprezentującą pewne właściwości błony.vZmienna jest najważniejsza, ponieważ jest to wyjście symulacji.a,b,c, Idsą 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ścicchodzi o potencjał resetowania, czyli potencjał błonowy, do którego komórka powraca po wzbogaceniu.Ireprezentuje prąd wejściowy do neuronu. W symulacjach sieciowych zmieni się to z czasem, ale dla naszych celów będziemy traktowaćIjako stałą.
Model
Ten model ma bardzo prosty pseudokod. Najpierw bierzemy stałe wartości abcdi używamy ich do inicjalizacji voraz 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 Ijest stałe przez cały czas).
tkiedykolwiek będzie negatywny?