I'm just starting to learn genetic algorithms and I'm essentially writting this tutorial http://lethain.com/entry/2009/jan/02/genetic-algorithms-cool-name-damn-simple/ to javascript. with a few changes which better represent my dataset.
Anyway, when I output via newPop.toSource(), I get
[[#1=[[30,22],#2=[30,85],#3=[30,76]...]]],[#1#,#2#,#3#...#15]]]
I've never seen my .toSource output look like this, I was expecting just an array with two arrays inside it
My code is
var newPop=populate(data,population,0,70);
function individual(population, min, max){
var newIndivids=[];
for(s i开发者_Go百科n population){
newIndivids.push(population[s]);
newIndivids[s][0]+=rand;
}
return newIndivids;
}
function populate(count,population,min,max){
var popul=[];
for(indiv in count){
popul.push(individual(population,min,max));
}
return popul;
}
Is there something I'm doing wrong in my code which is giving me this strange array structure??
Not sure what those #1, #2, ... things are, but toSource() is gecko specific: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/toSource
My guess is that it's some kind of "reference" to the object in memory at that point, i.e. not portable output.
I suggest you use JSON.stringify instead, which will output a portable string representation of your data structure.
The JSON global object will be available in Firefox/Safari/Chrome out of the box, but if you also need it in IE you can get it here: http://www.json.org/js.html
Then to reverse this and get back an actual living object, use JSON.parse:
var data = JSON.parse(str);
加载中,请稍侯......
精彩评论