我刚刚开始学习遗传算法,我本质上是将本教程http://lethain.com/entry/2009/jan/02/genetic-algorithms-cool-name-damn-simple/写入javascript。有一些更好的代表我的数据集的变化。
无论如何,当我通过newPop.toSource()输出时,我得到了
[[#1=[[30,22],#2=[30,85],#3=[30,76]...]]],[#1#,#2#,#3#...#15]]]
我从来没有看到我的.toSource输出看起来像这样,我只期待一个内部有两个数组的数组
我的代码是
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 :(得分:1)
不确定那些#1, #2, ...
内容是什么,但toSource()
是特定于gecko的:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/toSource
我的猜测是,它是内存中物体的某种“参考”,即不是便携式输出。
我建议您改用JSON.stringify
,它将输出数据结构的可移植字符串表示形式。
{/ 1}}全局对象将在Firefox / Safari / Chrome中开箱即用,但如果您在IE中也需要它,可以在此处获取:http://www.json.org/js.html
然后要反转并获取实际的生物,请使用JSON
:
JSON.parse