Released 1997
The SANE-C package contains the source code for the Hierarchical SANE system, written in C. This package has been rewritten in Java and extensively revised as the JavaSANE package; it is recommended that JavaSANE is used instead of SANE-C, which is mostly research code. SANE is designed as an efficient method for forming neuro-control networks in reinforcement learning tasks. For more details on SANE and some of its applications, see a paper on SANE (and others under Neuroevolution Methods and Applications), or the Neuroevolution Methods and Applications research descriptions. This package is designed to be an easy starting point for applying SANE to a new domain. First, decide and set the number of inputs and outputs for the network in sane.h. You should also set the number of hidden neurons and the population sizes to your liking. Then, simply write the function eval_net() in skeleton-main.c. eval_net is a function that takes a neural network as input and returns it's fitness. The current eval_net is just a stub that returns 1.0 for all networks. Once eval_net is defined, you can run SANE and it will try to find networks that optimize the value returned by your eval_net function.

Comments to


v1.0 5/9/96 moriarty
v2.0 5/1/97 moriarty
- Population seeding functions
- Local learning functions
- More cohesive neuron/network data structures
- Floating point chromosomes instead of bitwiserepresentations
v2.1 8/21/2000 by Bram Stolk (
- Converted code from K&R to ANSI C
- cleaned up warnings etc.

David E. Moriarty Ph.D. Alumni moriarty [at] alumni utexas net
Neuroevolution 2021
Risto Miikkulainen, To Appear In Encyclopedia of Machine Learning and Data Science, 3rd Edition, Dinh Phung, Claude Sammut and Geoffrey I. Webb (Eds.), New York, 2021. Springer.
Neuroevolution 2015
Risto Miikkulainen, In Encyclopedia of Machine Learning, 2nd Edition, Sammut, C. and Webb, G. I. (Eds.), Berlin, 2015. Springer.
Neuroevolution 2010
Risto Miikkulainen, In Encyclopedia of Machine Learning, New York 2010. Springer.