我們有一個單線程應用程序,它可以模擬隨着時間的推移與成千上萬的對象與共享內存模型的交互。顯然,它無法擴展多CPU硬件。基於時間的模擬與演員模型
在閱讀了一些關於基於代理的建模和函數式編程/ actor模型之後,我正在考慮用消息傳遞範式重寫。
這個想法非常簡單 - 每個對象都將是一個actor,他們的交互將成爲消息,以便模擬可以並行發生。給定一定時間的對象配置 - 可以輕鬆計算其未來結果。
問題是如何建模時間:
例如,讓我們假設對象X的行爲取決於A和B,因爲演員和消息計算順序不能保證,可能是當X是被計算A已經將其消息發送給X但B沒有。 如何確保計算正確?
我希望問題是明確
在此先感謝。
嗨,謝謝你的回覆! 1.事實上,這是一個離散事件模擬 2.我喜歡功能風格的原因是我想擁有副本和不可變的數據結構,以避免數據保護的複雜性,函數式編程範例。 3.謝謝你把我介紹給教科書,我會明確地看看它。您使用的確切條款是一個很好的幫助,因爲它可以幫助我在查找更多信息時優化搜索查詢。 4.當然,如果現有的庫,我正在考試,目前我正在評估akka – akiva
不客氣。當你計劃在Scala中使用Akka?在這種情況下,您可能需要查看Scalation(https://code.google。com/p/scalation),其中AFAIK不支持並行執行,但具有離散事件仿真的不同「世界視圖」的表示,以及可能對您有用的一些其他組件。 Java框架JAMES II(http://jamesii.org)還提供了許多您將需要的組件(例如事件隊列),並且具有用於實驗規範(http://sessl.org)的Scala界面[免責聲明:是開發者之一]。 –