2011-03-01 53 views
1

我刚刚开始学习遗传算法,并且本质上是将本教程http://lethain.com/entry/2009/jan/02/genetic-algorithms-cool-name-damn-simple/写入javascript。有一些更好的代表我的数据集。array.toSource()中的奇怪数据学习遗传算法

无论如何,当通过newPop.toSource(),我得到

 
[[#1=[[30,22],#2=[30,85],#3=[30,76]...]]],[#1#,#2#,#3#...#15]]] 

我从来没有见过我的.toSource输出这个样子的I输出,我原以为只是里面

两个数组的数组

我的代码是

 
var newPop=populate(data,population,0,70); 

function individual(population, min, max){ 
    var newIndivids=[]; 
    for(s in 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; 
} 

有什么我做错了我的代码这是给我这个怪阵结构?

+0

嗯skynet.js已成为自我意识? – Loktar 2011-03-01 21:16:28

+0

你确定代码是正确的吗?它至少有一个语法错误。 – Pointy 2011-03-01 21:17:14

+0

Yeah as Pointy ..指出,你错过了pop.push之后的关闭paren,也建议不要使用单词pop,因为pop是一个弹出数组中最后一项的方法。 – Loktar 2011-03-01 21:19:35

回答

1

不知道这些是什么东西#1, #2, ...是,但toSource()是壁虎具体:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/toSource
我的猜测是,它是某种在这一点上“参照”对象在内存中,即不可移植的输出。

我建议你用JSON.stringify来代替,它会输出一个可移植的数据结构的字符串表示。

JSON全局对象将在Firefox/Safari /铬现成可用的,但如果你还需要在IE中,你可以在这里:http://www.json.org/js.html

然后扭转这一点,并取回一个实际的生活对象,使用JSON.parse

var data = JSON.parse(str); 
+0

有趣的是,我看着mozzilla的确切页面,但没有得到你的答案。奇怪的是,当我做JSON.strigify时,我得到一个数组,而不是一个对象。但这正是我想要的,所以我认为这很好。 – pedalpete 2011-03-01 21:33:42

+0

哎呀,也许不是全部答案。 JSON.stringify将数组作为字符串返回(或将其转换为字符串)。我需要能够通过它作为对象或数组来运行,例如get newPop [3]。 – pedalpete 2011-03-01 21:38:39

+1

我以为你只是需要以某种方式移动数据。我更新了我的答案,希望有所帮助。否则,你为什么要尝试去做源? – adamJLev 2011-03-01 21:44:03