Sebuah Izhikevich neuron adalah sederhana namun model yang cukup efektif dari neuron biologis, dirancang untuk digunakan dalam simulasi waktu-melangkah diskrit. Dalam tantangan golf ini, Anda akan menerapkan model ini.
Parameter
Model ini hanya melibatkan 7 variabel yang disusun dalam 2 persamaan diferensial, dibandingkan dengan lusinan parameter model fisiologis yang akurat.
v
danu
merupakan dua variabel keadaan neuron. Di sini,v
adalah variabel "cepat" yang mewakili potensi sel dari waktu ke waktu, danu
merupakan variabel "lambat" yang mewakili sifat membran tertentu. Thev
variabel yang paling penting satu, karena ini adalah output dari simulasi.a
,b
,c
, Dand
yang konstanta yang menggambarkan sifat-sifat neuron tetap. Berbagai jenis neuron memiliki konstanta yang berbeda, tergantung pada perilaku yang diinginkan. Khususnya,c
adalah potensi reset, yang merupakan potensi membran sel kembali setelah spiking.I
mewakili arus input ke neuron. Dalam simulasi jaringan, ini akan berubah seiring waktu, tetapi untuk tujuan kami, kami akan memperlakukannyaI
sebagai konstanta tetap.
Model
Model ini memiliki kodesemu yang sangat sederhana. Pertama, kami mengambil nilai konstan abcd
dan menggunakannya untuk menginisialisasi v
dan u
:
v = c
u = b * c
Selanjutnya, kita mengulang-ulang kode simulasi sebanyak yang diinginkan. Setiap iterasi mewakili 1 milidetik waktu.
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
Implementasi dunia nyata tertentu mencakup langkah-langkah tambahan untuk akurasi numerik, tetapi kami tidak memasukkannya di sini.
Memasukkan
Sebagai masukan, program anda / fungsi harus mengambil nilai-nilai a
, b
, c
, d
, I
, dan t
(jumlah langkah waktu untuk mensimulasikan). Setelah diatur, tidak ada parameter ini yang akan berubah selama simulasi sederhana kami. Urutan input tidak masalah: Anda dapat menentukan urutan program Anda mengambil parameter ini.
Keluaran
Output akan berupa daftar angka yang mewakili potensi membran sel (diberikan oleh variabel v
) selama simulasi. Daftar dapat dalam format apa pun yang sesuai.
Anda memiliki pilihan apakah akan memasukkan nilai 0 simulasi (konfigurasi awal sebelum waktu berlalu) dalam output Anda. Misalnya, untuk input 0.02 0.2 -50 2 10 6
(untuk a b c d I t
), output dari keduanya
-50
-40
-16.04
73.876224
-42.667044096
-25.8262335380956
29.0355029192068
atau
-40
-16.04
73.876224
-42.667044096
-25.8262335380956
29.0355029192068
bisa diterima.
Nilai Anda tidak harus persis sama dengan yang di atas, tergantung pada bagaimana bahasa Anda menangani float.
Implementasi Referensi
Berikut ini adalah implementasi TIO yang saya tulis di Perl untuk menunjukkan model. Parameternya adalah neuron "mengobrol" dari makalah yang dihubungkan di atas, dan ini berfungsi sebagai demonstrasi bagaimana model ini mampu menciptakan kembali beberapa sifat neuron yang lebih kompleks, seperti berganti-ganti antara keadaan aktivitas tinggi dan rendah. Jika Anda melihat outputnya, Anda dapat melihat di mana neuron segera melonjak beberapa kali, tetapi kemudian menunggu beberapa saat sebelum melonjak beberapa kali lagi (meskipun tegangan input sel I
konstan sepanjang waktu).
t
negatif?