原文 :https://www.theanylogicmodeler.com/post/dynamic-vs-static-property-in-block
作者:Vitor Lemoshttps:/www.theanylogicmodeler.com/post/dynamic-vs-static-property-in-block
更新:Feb 22, 2022
閱讀:7 min
您是否在使用流程建模庫的模塊時,浪費了數小時來解決各種未知行為?你是否知道動態和靜態屬性的區別?下面讓我們通過示例的延遲(Delay)模塊來仔細介紹一下。
假設我們有一個小流程,其中智能體會經歷延遲,然后在藍色方塊或紅色方塊中隨機等待:
假設我們希望智能體隨機出現在兩個方塊中,但當運行仿真時,可能會發生所有智能體都出現在其中一個塊中的情況:
出現這種情況是因為,與“延遲時間(Delay time)”為動態屬性不同,“智能體位置(Agent location)”這個屬性是靜態屬性
在上面的例子中,模型的行為實際上是在模型啟動時隨機選擇了紅色方塊,并且在整個仿真過程中,該決策/計算保持TRUE。
相關的信息在每個模塊的“幫助”部分加以說明——通常會高亮顯示動態特性。更簡單的方法是將鼠標懸停在屬性名稱旁邊的小箭頭/圖標上,它將顯示類型(灰顯文本)。
對于所有靜態屬性,都有一個可以“設置”的方法,在這個示例中,我們有 set_entityLocation() ,允許我們在創建模塊時更改設置的值。
在這個例子中,當一個智能體進入模塊時調用這個方法,同時也會改變之前進入的智能體的位置,當一個新的智能體進入模塊時,你會看到原先在一個方塊中等待的智能體會全部跳轉到另一個方塊中。
因此,請注意對靜態參數使用這些內置的“設置”方法,因為這可能會導致像本示例這樣的意外行為產生。
這個特定示例的實際解決方案是讓每個智能體處理其各自的位置,而不是依賴延遲模塊來完成。
您可以在此處下載具有正確解決方案的示例:
或者您可以運行或下載放置在AnyLogic云的模型