【发布时间】:2019-01-24 21:25:48
【问题描述】:
为了好奇,我正在搞乱遗传算法。
当我撞墙时,我正在做生成切换部分。我从以前的演员数组中删除了下一代的父母,将它们推入父母数组并正在处理从父母数组中删除随机父母对并将它们存储在 progen1 和 progen2 变量中,但由于某种原因,内部数组 cromssomo progen1 是未定义的,事件虽然我可以在 progen1 存储在父母数组中时访问它的元素。
这段代码:
var n1=Math.floor((Math.random(Math.floor(parents.length))));
console.log(parents[n1].cromossomo[0]);
var progen1=parents.splice(n1);
console.log(progen1.cromossomo[0]);
var n2=Math.floor((Math.random(Math.floor(parents.length))));
var progen2=parents.splice(n2);
产生:
{dx: -4.805923044269889, dy: -2.447397585132567}dx: -4.805923044269889dy: -2.447397585132567__proto__: Object
scripts.js:94 Uncaught TypeError: Cannot read property '0' of undefined
at switchGeneration (scripts.js:94)
at run (scripts.js:140)
我快疯了,不知道为什么会这样!
【问题讨论】:
-
这里的父母是什么?也显示你的html
-
是我存储上一代最适合的成员的数组
-
splice返回一个数组。阅读documentation。progen1.cromossomo将不存在;你需要得到progen1[0].cromossomo[0]。 -
你希望这条线做什么
var progen1=parents.splice(n1);? -
由于随机数产生完全相同的数字两次的问题,我需要暂时从父母身上移除后代
标签: javascript arrays genetic-algorithm