2016-04-21 31 views
6

ile başlayan dizi öğeleri okumıyor Genetik algoritmalar için bir şans vermek istiyorum ama bu problem için bir çözüm bulamıyorum. Javascript 0

Bu

benim kodudur:

var encodings = { 
 
    0000: 0, 
 
    0001: 1, 
 
    0010: 2, 
 
    0011: 3, 
 
    0100: 4, 
 
    0101: 5, 
 
    0110: 6, 
 
    0111: 7, 
 
    1000: 8, 
 
    1001: 9, 
 
    1010: "+", 
 
    1011: "-", 
 
    1100: "*", 
 
    1101: "/" 
 
}; 
 
var chromosome = ""; 
 

 
for (var i = 0; i < 36; i++) { 
 
    chromosome += Math.round(Math.random()); 
 
} 
 

 
var chromArray = chromosome.match(/.{1,4}/g); 
 

 
document.write(chromArray + "<br>"); 
 

 
for (var o = 0; o < 9; o++) { 
 
    document.write(encodings[chromArray[o]]); 
 
}

kodu çalıştırırsanız, çıktısında undefineds bir sürü olduğunu görüyoruz. Buna ne sebep olur?

Teşekkürler!

+0

nasıl size kromozomunda "1110" hallediyorsunuz ? – Thomas

+1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Integers –

+0

@Thomas 1110 veya 1111 ile oluşturulan bir dizenin ilk popülasyonun bir parçası olmaması durumunda, fikir "sayı - operatör - sayı" kuralını izleyen popülasyona yalnızca kromozom eklemek. –

cevap

8

Sen dizeleri

içine nesnenin anahtarlarını dönüştürmek gerekir

Olmalıdır: numarası dizeleri dönüştürmek gerekir 0 ile başlar hangi nesnenin

var encodings = 
{ 
    "0000": 0, 
    "0001": 1, 
    "0010": 2, 
    "0011": 3, 
    "0100": 4, 
    "0101": 5, 
    "0110": 6, 
    "0111": 7, 
    "1000": 8, 
    "1001": 9, 
    "1010": "+", 
    "1011": "-", 
    "1100": "*", 
    "1101": "/" 
}; 

var chromosome = ""; 

for (var i = 0; i < 36; i++) 
{ 
    chromosome += Math.round(Math.random()); 
} 

var chromArray = chromosome.match(/.{1,4}/g); 

document.write(chromArray + "<br>"); 

for (var o = 0; o < 9; o++) 
{ 
    document.write(encodings[chromArray[o]]); 
} 
+1

Çok teşekkür ederim! –

3

tuşları

encodings yazdıysanız sorunu göreceksiniz. JavaScript, 0 ile başlayan numaraları sekizli sayı olarak çözmüştür.

var encodings = { 
 
    0000: 0, 
 
    0001: 1, 
 
    0010: 2, 
 
    0011: 3, 
 
    0100: 4, 
 
    0101: 5, 
 
    0110: 6, 
 
    0111: 7, 
 
    1000: 8, 
 
    1001: 9, 
 
    1010: "+", 
 
    1011: "-", 
 
    1100: "*", 
 
    1101: "/" 
 
}; 
 

 

 
document.write('<pre>' + JSON.stringify(encodings, 0, 2) + '</pre>')