【问题标题】:My code code infinitely and crashes the page我的代码代码无限并崩溃页面
【发布时间】:2018-08-27 10:36:32
【问题描述】:

这是我的代码:

// Population
var Gene = function(text){
    if(text){
        this.text = text;
    }
};

Gene.fitness = 0;
Gene.generation = 0;

var word = new Gene('Hello');

// This is where it crashes!!
// Make elements
var genArr = [];
var population = 20;
var mutation = 0;
for(var i = 0; i < population; i++){
   var gene = "";
    var abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    for (var j = 0; i < word.text.length; j++) {
        var element = abc.charAt(Math.floor(Math.random() * abc.length));
        gene += element;
    }
    genArr.push(gene);
}

// Divide them - fitness
// 1/20 - 0.05% each
var fitElements = [];
for (var i = 0; i < genArr.length; i++) {
    var score = 0;
    var curWord = Array.from(genArr[i]);
    for (var j = 0; j < word.text.length; j++) {
        if(genArr[j].substr(j, 1) == word.text.substr(j, 1)){
            score += 1;
        }
    }
    if(score > 0){
        fitElements.push([genArr[i], (score * (1 / population)) ** 2]);
    }
}

for (var i = 0; i < fitElements.length; i++) {
    console.log('Element: ' + fitElements[i][0] + ', Score: ' + fitElements[i][1]);
}

我的问题是它使页面崩溃但没有给出错误。这个想法是在 fitElements Array 中创建一个简单的单词寄存器,但我看不到我错过了什么? 提前致谢。

【问题讨论】:

  • 随时!你能把我的答案标记为正确吗?谢谢!

标签: javascript crash genetic-algorithm


【解决方案1】:

在您的代码中,带有变量j 的结束条件的嵌套for 循环依赖于i。 取一条线:

//             VVVV it relies on i instead of j
for (var j = 0; i < word.text.length; j++) {
    var element = abc.charAt(Math.floor(Math.random() * abc.length));
    gene += element;
}

新代码看起来像

for (var j = 0; j < word.text.length; j++) 
    var element = abc.charAt(Math.floor(Math.random() * abc.length));
    gene += element;
}

整个示例的唯一区别是i 更改为j。干杯!

【讨论】:

  • 谢谢。现在你是我的英雄。 =)
猜你喜欢
  • 2020-04-09
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
  • 2016-08-08
相关资源
最近更新 更多