アンIzhikevichニューロンは離散時間ステッピングシミュレーションで使用するために設計された生物学的ニューロンのシンプルで非常に効果的なモデルです。このゴルフチャレンジでは、このモデルを実装します。
パラメーター
このモデルには、生理学的に正確なモデルの多数のパラメーターと比較して、2つの微分方程式に編成された7つの変数のみが含まれます。
v
およびu
は、ニューロンの2つの状態変数です。ここで、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
(for 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
許容できます。
あなたの値は、あなたの言語がフロートをどのように扱うかに応じて、上記のものと正確に同じである必要はありません。
参照実装
これは、モデルを示すためにPerlで書いたTIO実装です。パラメーターは、上記リンクの論文の「チャタリング」ニューロンのパラメーターであり、これは、このモデルが、高活動と低活動の状態を交互に切り替えるなど、ニューロンのより複雑な特性の一部を再現する方法のデモンストレーションとして機能します。出力を見ると、ニューロンがすぐに数回スパイクする場所を確認できますが、しばらく待ってからさらに数回スパイクします(セル入力電圧I
が常に一定であるにもかかわらず)。
t
これまで負になりますか?