algorithmic modeling for Rhino

Introducing a new component that generates a Self-Organising Map from high dimensional input data.

A self-organizing map (SOM) or self-organizing feature map (SOFM) is a type of artificial neural network (ANN) that is trained using unsupervised learning to produce a low-dimensional (typically two-dimensional), discretised representation of the input space of training samples. Self-organizing maps are different from other artificial neural networks in the sense that they use a neighborhood function to preserve the topological properties of the input space.

This makes SOMs useful for visualizing low-dimensional views of high-dimensional data, akin to multidimensional scaling. The artificial neural network introduced by the Finnish professor Teuvo Kohonen in the 1980s is sometimes called a Kohonen map or network. The Kohonen net is a computationally convenient abstraction building on work on biologically neural models from the 1970s and morphogenesis models dating back to Alan Turing in the 1950s


Files (last updated 18/03/16):

The component will appear under Extra>ANN

For anyone interested in how it works, a short introduction to artificial neural networks (in particular SOMs) written by myself is here:

Copyright 2015 John Harding and released under the GNU General Public License

Thanks to Christian Derix for first introducing me to the SOM and applied neural networks in general.

Views: 5309


You need to be a member of Grasshopper to add comments!

Join Grasshopper

Comment by Max Marschall on February 18, 2016 at 11:17am

Hi John,

Can I use the Kohonen Map component WITHOUT losing diversity?

I'm trying to organize a multi-dimensional phase space of a stadium design and create a fitness landscape in which similar variations are more or less close to one another. I tried with 3 parameters and the results looked promising:

However, when I did a test with 4 parameters, it seemed like higher values on one parameter automatically lead to higher values on another:

It looks like a lot of variation is missing, although I remapped the values to the domains I wanted for my inputs:

Is what I want to do even possible? And is the SOM component the way to go? Would be great to get some advice!







  • Add Photos
  • View All

© 2020   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service