In[]:=
ClearAll["Global`*"]​​​​hbias={2.,2.,2.,2.,-2.,-2.,-2.,0.,-10.,-10.,-10.,10.,10.};​​JJ={{0.,0.,-1.,-1.,2.,0.,2.,0.,0.,0.,0.,0.,0.,0.},{0.,0.,-1.,-1.,0.,2.,0.,0.,0.,0.,0.,0.,0.,2.},{-1.,-1.,0.,0.,2.,2.,0.,0.,0.,0.,0.,0.,0.,0.},{-1.,-1.,0.,0.,0.,0.,2.,0.,0.,0.,0.,0.,0.,2.},{2.,0.,2.,0.,0.,0.,0.,-1.,-1.,0.,2.,1.,0.,0.},{0.,2.,2.,0.,0.,0.,-1.,2.,0.,-1.,0.,0.,1.,0.},{2.,0.,0.,2.,0.,-1.,0.,2.,0.,-1.,0.,0.,1.,0.},{0.,0.,0.,0.,-1.,2.,2.,0.,-1.,2.,2.,1.,-2.,0.},{0.,0.,0.,0.,-1.,0.,0.,-1.,0.,0.,2.,1.,0.,0.},{0.,0.,0.,0.,0.,-1.,-1.,2.,0.,0.,0.,0.,1.,0.},{0.,0.,0.,0.,2.,0.,0.,2.,2.,0.,0.,-2.,0.,0.},{0.,0.,0.,0.,1.,0.,0.,1.,1.,0.,-2.,0.,0.,0.},{0.,0.,0.,0.,0.,1.,1.,-2.,0.,1.,0.,0.,0.,0.},{0.,2.,0.,2.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}};​​​​n=12;​​T=1;​​b=hbias[[1;;n]];​​W=JJ[[1;;n,1;;n]];​​​​tsim={0,10};​​xinit=RandomReal[{0,1},n];​​minit=Table[-1,n];​​​​eqns=Flatten@Table[
x
i
'[t]-
m
i
[t]*(1+Exp[-
m
i
[t]*2*
z
i
[t]/T]),
z
i
[t]==b[[i]]+Sum[W[[i,j]]*
m
j
[t],{j,n}],
x
i
[0]xinit[[i]],
m
i
[0]minit[[i]],With[{x=
x
i
,m=
m
i
},WhenEvent[{x[t]0,x[t]1},m[t]2*Round[x[t]]-1]],{i,n}];​​​​xvars=Table[
x
i
,{i,n}];​​mvars=Table[
m
i
,{i,n}];​​sol=First@NDSolve[eqns,Flatten@{xvars,mvars},{t,tsim[[1]],tsim[[2]]},DiscreteVariablesmvars]
Out[]=
First[{}]