2011-03-01 50 views
1

我剛剛開始學習遺傳算法,並且本質上是將本教程http://lethain.com/entry/2009/jan/02/genetic-algorithms-cool-name-damn-simple/寫入javascript。有一些更好的代表我的數據集。array.toSource()中的奇怪數據學習遺傳算法

無論如何,當通過newPop.toSource(),我得到

 
[[#1=[[30,22],#2=[30,85],#3=[30,76]...]]],[#1#,#2#,#3#...#15]]] 

我從來沒有見過我的.toSource輸出這個樣子的I輸出,我原以爲只是裏面

兩個數組的數組

我的代碼是

 
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

嗯skynet.js已成爲自我意識? – Loktar 2011-03-01 21:16:28

+0

你確定代碼是正確的嗎?它至少有一個語法錯誤。 – Pointy 2011-03-01 21:17:14

+0

Yeah as Pointy ..指出,你錯過了pop.push之後的關閉paren,也建議不要使用單詞pop,因爲pop是一個彈出數組中最後一項的方法。 – Loktar 2011-03-01 21:19:35

回答

1

不知道這些是什麼東西#1, #2, ...是,但toSource()是壁虎具體:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/toSource
我的猜測是,它是某種在這一點上「參照」對象在內存中,即不可移植的輸出。

我建議你用JSON.stringify來代替,它會輸出一個可移植的數據結構的字符串表示。

JSON全局對象將在Firefox/Safari /鉻現成可用的,但如果你還需要在IE中,你可以在這裏:http://www.json.org/js.html

然後扭轉這一點,並取回一個實際的生活對象,使用JSON.parse

var data = JSON.parse(str); 
+0

有趣的是,我看着mozzilla的確切頁面,但沒有得到你的答案。奇怪的是,當我做JSON.strigify時,我得到一個數組,而不是一個對象。但這正是我想要的,所以我認爲這很好。 – pedalpete 2011-03-01 21:33:42

+0

哎呀,也許不是全部答案。 JSON.stringify將數組作爲字符串返回(或將其轉換爲字符串)。我需要能夠通過它作爲對象或數組來運行,例如get newPop [3]。 – pedalpete 2011-03-01 21:38:39

+1

我以爲你只是需要以某種方式移動數據。我更新了我的答案,希望有所幫助。否則,你爲什麼要嘗試去做源? – adamJLev 2011-03-01 21:44:03