在netlogo運行結束時,我想輸出520個特定於運行的變量。我已經使用文件寫入來做到這一點。但是,當我這樣做時,創建的輸出文件不完整。例如,如果我執行1,008次運行,則僅將734.xxx運行的結果寫入文件。下面是對文件的寫命令代碼:Netlogo文件寫入/文件打印/文件類型輸出不完整的文件
file-open
"Part01Results.txt"
file-write actualcombo
file-write parmcombo
file-write xqa1
file-write xqa2
file-write xqa3
file-write yqa1
file-write yqa2
file-write yqa3
file-write zqa1
file-write zqa2
file-write zqa3
file-write aqa1
file-write aqa2
file-write aqa3
file-write bqa1
file-write bqa2
file-write bqa3
file-write cqa1
file-write cqa2
file-write cqa3
file-write ptotBP
file-write ptotNBP
file-write ptotNone
file-write ptotDout
file-write ototBP
file-write ototNBP
file-write ototNone
file-write ototDout
file-write utotBP
file-write utotNBP
file-write utotNone
file-write utotDout
file-write pmidit3
file-write pmidit2
file-write pmidit1
file-write pmidit0
file-write omidit3
file-write omidit2
file-write omidit1
file-write omidit0
file-write umidit3
file-write umidit2
file-write umidit1
file-write umidit0
file-write pcounterBP
file-write pcounterNBP
file-write pcounterNone
file-write pcounterDout
file-write ocounterBP
file-write ocounterNBP
file-write ocounterNone
file-write ocounterDout
file-write ucounterBP
file-write ucounterNBP
file-write ucounterNone
file-write ucounterDout
file-write pc440tot
file-write pc430tot
file-write pc420tot
file-write pc410tot
file-write ppm440MeanHgt
file-write ppm440LowHgt
file-write ppm440HiHgt
file-write ppm430MeanHgt
file-write ppm430LowHgt
file-write ppm430HiHgt
file-write ppm420MeanHgt
file-write ppm420LowHgt
file-write ppm420HiHgt
file-write ppm410MeanHgt
file-write ppm410LowHgt
file-write ppm410HiHgt
file-write ppm340MeanHgt
file-write ppm340LowHgt
file-write ppm340HiHgt
file-write ppm330MeanHgt
file-write ppm330LowHgt
file-write ppm330HiHgt
file-write ppm320MeanHgt
file-write ppm320LowHgt
file-write ppm320HiHgt
file-write ppm310MeanHgt
file-write ppm310LowHgt
file-write ppm310HiHgt
file-write ppm240MeanHgt
file-write ppm240LowHgt
file-write ppm240HiHgt
file-write ppm230MeanHgt
file-write ppm230LowHgt
file-write ppm230HiHgt
file-write ppm220MeanHgt
file-write ppm220LowHgt
file-write ppm220HiHgt
file-write ppm210MeanHgt
file-write ppm210LowHgt
file-write ppm210HiHgt
file-write ppm140MeanHgt
file-write ppm140LowHgt
file-write ppm140HiHgt
file-write ppm130MeanHgt
file-write ppm130LowHgt
file-write ppm130HiHgt
file-write ppm120MeanHgt
file-write ppm120LowHgt
file-write ppm120HiHgt
file-write ppm110MeanHgt
file-write ppm110LowHgt
file-write ppm110HiHgt
file-write opm440MeanHgt
file-write opm440LowHgt
file-write opm440HiHgt
file-write opm430MeanHgt
file-write opm430LowHgt
file-write opm430HiHgt
file-write opm420MeanHgt
file-write opm420LowHgt
file-write opm420HiHgt
file-write opm410MeanHgt
file-write opm410LowHgt
file-write opm410HiHgt
file-write opm340MeanHgt
file-write opm340LowHgt
file-write opm340HiHgt
file-write opm330MeanHgt
file-write opm330LowHgt
file-write opm330HiHgt
file-write opm320MeanHgt
file-write opm320LowHgt
file-write opm320HiHgt
file-write opm310MeanHgt
file-write opm310LowHgt
file-write opm310HiHgt
file-write opm240MeanHgt
file-write opm240LowHgt
file-write opm240HiHgt
file-write opm230MeanHgt
file-write opm230LowHgt
file-write opm230HiHgt
file-write opm220MeanHgt
file-write opm220LowHgt
file-write opm220HiHgt
file-write opm210MeanHgt
file-write opm210LowHgt
file-write opm210HiHgt
file-write opm140MeanHgt
file-write opm140LowHgt
file-write opm140HiHgt
file-write opm130MeanHgt
file-write opm130LowHgt
file-write opm130HiHgt
file-write opm120MeanHgt
file-write opm120LowHgt
file-write opm120HiHgt
file-write opm110MeanHgt
file-write opm110LowHgt
file-write opm110HiHgt
file-write upm440MeanHgt
file-write upm440LowHgt
file-write upm440HiHgt
file-write upm430MeanHgt
file-write upm430LowHgt
file-write upm430HiHgt
file-write upm420MeanHgt
file-write upm420LowHgt
file-write upm420HiHgt
file-write upm410MeanHgt
file-write upm410LowHgt
file-write upm410HiHgt
file-write upm340MeanHgt
file-write upm340LowHgt
file-write upm340HiHgt
file-close
這裏有一些我已經做過的事情:
1)我監視內存的使用情況在我的機器上同時運行作業。我沒有注意到記憶力似乎不足的情況。但是,我考慮增加Netlogo對內存的訪問,並且已經找到了這樣做的方法。但是,如果沒有清楚的知道那是問題的話,我寧願不用這些深層次的命令。因此,我首先做了幾件事。
2)一半的變量浮在-1和1之間。我將精度降低到小數點右邊的5位數。
3)我試圖寫變量的子集到不同的文件(用一個匹配鍵),而不是寫一個520個變量的文件。較小的文件仍然存在問題。但即使是我的小文件也有超過80個字符的行。這是問題嗎?要使所有文件的每行少於80個字符,我需要至少18個文件。這是可以實現的,但我寧願知道這是我實施此響應之前的問題。
4)我在文件的各個位置丟棄了「文件刷新」(以防我看到內存不可見的問題)。
5)我在整個文件中刪除了'文件寫入'\ n「'命令(萬一行太長)。
6)如果我使用錯誤的「file- *」命令,我將所有內容切換到文件打印。
7)我五重檢查文件是否實際上是正確的長度,我對統計軟件包的讀數有缺陷。但是,因爲我只是將文件寫入命令列表阻止並複製到包中,並刪除了「文件寫入」語言,所以這不是文件錯誤的基礎。該文件實際上被截斷。
8)在每個文件寫入命令之後,在每個文件寫入命令後面輸入一個單獨的行,以防變量互相寫入(它們是在我截斷浮動之前)。
我試圖運行模型1,008次,每次設置不同的全局參數。目標是能夠在有效的全局參數空間中進行採樣。但是,我不能使用行爲空間,因爲全局參數不是獨立的,將它們當作獨立對象產生可能性的接近,其中只有很小一部分是實際有效的組合。因此,使用行爲空間至少會浪費大量時間和計算週期;更有可能的是,由於有效運行的低發生率,使用行爲空間將使得不可能進行研究。因此,我已經確定了全局參數的有效組合,並試圖運行它們的一些子集,獲得輸出,然後分析結果。因此,我需要一些方法來輸出總結結果的520個變量。
我很感激任何人都可以提供的幫助。
感謝Arthur Hjorth!這工作。我很感激。缺點是每次運行都是1.15秒,但現在每次運行都是3.94秒。運行時間的三倍以上將每天的運行次數從大約74k減少到大約21k。這是必然的,因爲它使我需要完成的一系列運行不需要6個月,但超過18個月 - 僅僅因爲我必須在每次運行中打開和關閉文件520次。因此,我很欣賞這個解決方案,我真的這樣做,沒有它我什麼都不能做。我現在會使用它。但是,我仍然在尋找一種耗時較少的解決方案。 – SLuke