【发布时间】:2011-07-06 20:02:55
【问题描述】:
我刚刚开始学习遗传算法,我基本上是在将本教程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(数据,人口,0,70); 函数个体(人口,最小,最大){ var newIndivids=[]; 对于(人口){ newIndivids.push(人口[s]); newIndivids[s][0]+=rand; } 返回新个体; } 函数填充(计数,人口,最小,最大){ var popul=[]; for(indiv in count){ popul.push(个人(人口,最小,最大)); } 返回流行; }我的代码中是否有什么错误导致了这个奇怪的数组结构??
【问题讨论】:
-
嗯,skynet.js 有自我意识了吗?
-
您确定代码正确吗?它至少有一个语法错误。
-
是的,正如 Pointy.. 指出的那样,您在 pop.push 之后缺少一个结束括号,也建议不要使用 pop 这个词,因为 pop 是一种弹出数组中最后一项的方法。
-
另外,您忘记了声明“s”和“indiv”的
var关键字。 -
好的 - 好吧
var是一个非常好的主意,除非你知道你想要一个全局变量 - 通常,使用全局变量作为数组索引有点疯狂:-) 我们都确定我们了解“toSource()”输出的“奇怪”究竟是什么吗?
标签: javascript genetic-algorithm