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 Risto Miikkulainen To Appear In Dinh Phung, Claude Sammut and Geoffrey I. Webb, editors, Encyclopedia of Machine Lea... 2022

Neuroevolution Risto Miikkulainen In Sammut, C. and Webb, G. I., editors, Encyclopedia of Machine Learning, 2nd Edition, Berlin... 2015

Neuroevolution Risto Miikkulainen In Encyclopedia of Machine Learning, New York, 2010. Springer. 2010