2012-06-25 24 views
2

對不起,如果這一切似乎白癡和不清楚,但我目前正在學習Netlogo模型基於代理的集體行爲,並希望聽到一些關於替代軟件選擇的建議。我的主要事情是,我非常想利用PyCuda,因爲據我所知,它支持並行計算。但是,這是否意味着我仍然需要在其他環境中編寫數字腳本並在另一個環境中實現視覺效果?ABM下python與先進的可視化

如果是這樣,我的問題是:

  1. 我應該使用什麼數值包? PyEvolve,DEAP還是其他?看來PyEvolve不再被開發,DEAP只是過時的(?)EAP的包裝。

  2. 圖形方面,我發現mayavi2和vtk很有希望。問題是,沒有一個數字包似乎很容易綁定到這些。沒有比將數字輸出保存到數據文件並將它們輸入到mayavi2中更好的選擇嗎?

  3. 另一種方法是通過Netlogo生成數據,並將它們從(2)輸入到圖形包中。這樣做有什麼不利嗎?

非常感謝您對此混淆的看法。

+0

你看過'scipy'還是'sage' - 這兩個都和'pymatplotlib'一起工作 –

+0

並行計算是必需的嗎? –

+0

不一定。不過,我想這會大大提高仿真的效率。 –

回答

1

除非遇到嚴重的性能問題,否則幾乎肯定不想使用CUDA。一般來說,CUDA最適用於解決浮點線性代數問題。如果你正在尋找圍繞並行計算構建的框架,我會考慮OpenCL,如果需要,它可以利用GPU。

在可視化方面,我強烈建議針對特定的數據交換格式,然後讓其他程序爲你渲染。我使用類似VTK的唯一原因是,如果出於某種原因,您需要更多地控制可視化過程,或者您正在尋找實時解決方案。

+0

謝謝!這非常有幫助。你能否向我澄清你的意思是「特定的數據交換格式」? TVTK會成爲這樣一個例子嗎?Mayavi會成爲提供它的程序嗎? –

0

可能是可視化的最佳選擇是使用中間格式並在另一個程序中執行。但爲了性能,我寧願爲集羣配置JVM並在其上運行NetLogo。我還沒有嘗試過,但我正在認真思考如何在Beowulf樣式集羣上嘗試NetLogo。

順便說一句,如果您打算在Python中實現您的代碼,那麼有一個名爲Repast的ABM平臺,它是said to have Python interface

+0

你能給我一個「中間格式」和「另一個程序」的python例子來運行它嗎? –