Basal GangliaΒΆ

Purpose: This demo introduces the basal ganglia model that the SPA exploits to do action selection.

Comments: This is just the basal ganglia, not hooked up to anything. It demonstrates that this model operates as expected, i.e. supressing the output corresponding to the input with the highest input value.

This is an extension to a spiking, dynamic model of the Redgrave et al. work. It is more fully described in several CNRG lab publications. It exploits the ‘nps’ class from Nengo.

Usage: After running the demo, play with the 5 input sliders. The highest slider should always be selected in the output. When they are close, interesting things happen. You may even be able to tell that things are selected more quickly for larger differences in input values.

Output: See the screen capture below.

../_images/basalganglia.png
Code:
import nef
import nps

D=5
net=nef.Network('Basal Ganglia') #Create the network object

net.make_input('input',[0]*D) #Create a controllable input function 
                              #with a starting value of 0 for each of D
                              #dimensions
net.make('output',1,D,mode='direct')  
                 #Make a population with 100 neurons, 5 dimensions, and set 
                 #the simulation mode to direct
nps.basalganglia.make_basal_ganglia(net,'input','output',D,same_neurons=False,
    neurons=50)  #Make a basal ganglia model with 50 neurons per action
net.add_to_nengo()

Nengo User Manual

Table Of Contents

This Page