基本社會裡模型的原始碼分析 2

2021-06-25 17:59:54 字數 1317 閱讀 9246

經過這幾天的痛苦折磨,社會裡原始碼基本分析完畢了,基本上理解了將之前程式中出現一些怪現象都了充分的理解。也多社會力模型有了比較深入的理解。先將部分心得體會再次記錄,算是為前面工作的乙個總結,也為關注的朋友提個醒。關於**的解析基本上本人在讀程式過程中依據程式本身的上下文和對社會裡末次那個粗淺的知識而推測的,有熱衷原始碼分析的朋友可以一起討論

1. 首先從程式構架上看,本程式是面向過程的不是面向對想的,所以採用了大量的全域性變數,而且並沒有模組化的過程劃分,所以很多東西都是最大一起的,不過作者採用的章節的形式表明了**的層次感(這個也是我目前一直採用的注釋方式,我很喜歡),但是注釋還是有點少。因為unix c不熟悉所以全域性變數找了半天才發現。總體來講**的可讀性還是不錯的,至少我理解起來還是蠻好的

2.之前研究社會力模型參考的文章是《simulating dynamical features of escape panic》。前乙個模型的編寫過程也是依據本文的思想來編寫的,但是做出來的模型正如前面幾篇博文當中提到的那樣,粒子抖動過於劇烈(速度改變太大所致),粒子有時候出現穿牆(我省略了兩個力),粒子重疊(序列處理的結果),根本沒有demo那種運動平滑的現象。特別是在粒子運動過程中,粒子的位置總是跟顯示當中的擁擠情況想去甚遠,不能形成有效的拱形擁擠區域,基本上是平行的區域,比較離散,從而導致底層模型的正確性與否存在疑問,導致對其模型的改進的說服力變的很差。當然經過後期的研究我們發現模型的構建基本上是正確的,主要是細節沒有考慮到

3.說道細節問題,第乙個因素就是引數,研究原始碼程式的第乙個感觸,相關的引數設定真是差的不是一星半點啊,a的設定 25 而**但中就是2000,雖然2000可能更加符合實際,但是450就使得裡相對平和一些,速度變更相對柔和一寫(其實這個地方是我疏忽了,因為預設粒子質量80千克的情況下 a的值也是2000,所以這個是我開始發現沒有質量的原因了,因為加速度就是f/質量的)

3.關於速度的更新,也存在乙個問題就是,速度的調增並不是僅僅依靠社會裡來進行調整的,而是採用了了尤拉自適應補償發,從而對調整進行了限定,而且速度也有最大值控制(這個在之前的模型中也有設計的)。速度調整的控制是比較令人驚奇的,這使得粒子的速度調增緩慢,運動比較平滑。粒子抖動好一些把。

4.部分公式的計算也與**中略有調整,這些在原文中並沒有體現,可能是對力本在影響理解不夠透徹把

5.總體來講本程式基本上為了表現社會力的運動過程而編寫的,其中對牆的編號,圓柱體檢測單獨編寫等都能夠看出來的。所以實際在是使用過程要做較大的變通。這個是比較重要的有點。也一直強調做的工作是模型的改寫而不是完全的複製。

經過這幾天的研究猛然發現原來的模型對於社會力的擴充和改進還是有很大問題的,所以後面的工作是重寫社會力的基本模型,驗證模型的正確性,在加入新的改進策略了。唉,乙個月的工作,在幾天基本上被徹底否定了。也見的是件壞事情。

Spring MVC 的原始碼分析 2

spring mvc 如何在servlet容器中處理業務的?我們依次檢視原始碼中三個方法的具體內容 1 requestmethod.patch都包含那些列舉型別呢?public enum requestmethod 2 processrequest方法是如何進行分流的呢?3 當所有的method方法...

Ruby的GC機制原始碼分析(2)

停止與複製 停止與複製型gc 是標記與清除型gc 的乙個變體。首先,準備多個物件域。為了簡化討論,假設只有兩個域 a 和b 將一邊標記為 active 生成的物件都放到active 域中 圖5 圖5 停止與複製 1 執行gc 時,按照標記與清除同樣的路徑進行搜尋。但是,與標記不同的是,物件本身移到了...

谷歌瀏覽器的原始碼分析 2

上面顯示了多種語言的動態連線庫資源,其中zh cn是簡體中文的。接著開啟資源檔案的字串編輯,如下圖 把上面的字串修改為 關於 可多公尺 然後把這個工程重新編譯一下,就會生成下面的檔案 然後執行自己編譯的可多公尺,就會顯示出修改的成果,如下圖 可以看到關於對話方塊的標題,就變成我上面修改的了。這樣學習...