c++ - Using genetic algorithms for neural networks -


currently working on project use genetic algorithms optimize neural networks. realize not best way optimize them, i'm new both wanted try using them.

my plans follows (subject change, lot). input neurons using data set have positive number (including decimals 2 places, floating point numbers), between 0 20000. because importance in how numbers compare each other in value rather how big are, first divided highest number of values inputted. them multiplied weights (any positive or negative float) before going hidden layer. each neuron in hidden layer summing of it's inputs until done being calculated. run through logistics function , outputted.

my environment visual studio c++ 2010 express , i'm using clr.

my problem lies in genetic algorithm , how work. adjusting weights. problem when randomly changes bit in 1 of weights (mutation rate), make weights extraordinarily high or low, causing overflow or other error when multiplied input , added others. have no idea how organize chromosomes either. so, better perform randomization selection weights rather bits @ random , changing them random number within defined range? looking suggestions on how organize without causing errors making values end big or small while maintaining performance.

thanks, (and sorry if should in theoretical computer science, thought wouldn't fit in there)

(artificial) neural networks (anns) notoriously difficult optimize, , genetic algorithms (gas) reasonably approach doing (mainly because else tends limited in how can work). of course there alternatives work too, more complicated , subtle program , tune correctly (back-propagation simulated annealing , learning momentum). , understand doing project play around things.

you might want @ evolutionary neuro-controllers (enc), field genetic (or evolutionary) algorithms employed train anns complex navigation tasks (e.g. inter-planetary space missions 1 of applications of have done research on).

for ann part, suggest don't limit logistics functions (i know sigmoid inspired biological neurons, doesn't mean best time). many other functions exist well, logistics functions used in part because make back-propagation faster , simpler do. but, radial-basis functions work wonders (imo , have seen, successful applications of anns used radial-basis functions, i.e. rbf-nn). typically, people use either gaussian functions, hyper-spherical functions , often, triangular functions (called fuzzy networks, huge class of anns).

as gas, not recommend type of mutation describing (i.e. flip bits) reasons mentioned. people don't use kind of mutation when dealing real-valued genes. 1 easy mutation method decide (with probability) mutate individual, pick 1 element of gene mutated , generate new gene element replace using random number generator (rand()). this, can limit scale of generated gene elements avoid problems of turning individual degenerate (i.e. 1 wrong gene element can make entire individual useless). genes? well, ann, typically large vector containing weights of neurons in net. can guess people apply gas if number of neurons large. recommend use tournament selection selecting individuals reproduction. cross-over (i.e. mixing 2 parents make child), keep order of weights , pick each element of child weight either parent @ random equal probability.

i have done described above , works problems (reduced size , high complexity, i.e. no obvious optimal solution).

finally, don't expect work easily. typically, require population size , number of generation much higher expect (after all, evolution slow process!). so, don't try population of 10 individuals , run 50 generations, , sadly "oh guess doesn't work...". try more in order of thousands of individuals in population , several thousands hundred thousand generations, depending on scale of problem applying to, of course.


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -