嗨,我正在嘗試模擬一個組裝站,因此我想通過等待塊來協調我的材料的發布。我的流程包括以下步驟:
3 條不同的路徑:源 --> 捕獲運輸器 ---> 移動 ---> 等待塊 ---> 釋放 ---> 匯編器(見截圖)
模型
當所有特工都到達他們的街區時,我想在他們的等待街區中釋放我的特工。我現在面臨的問題是,所有 3 個代理都在不同的時間到達。例如,Agent 1 在 waitblock1 中的 10 分鐘后到達,Agent 2 和 3 在塊 2 和 3 中的 5 分鐘后到達。所以 Agent1 應該檢查其他代理是否到達它們的 Blocks 然后被釋放。代理 2 和 3 也應該采取相同的行動,以便同時釋放所有 3 個代理。
因此,我在等待塊 1 中添加了一個 while(true) 回圈,以證明等待塊 2 和 3 中是否存在代理,然后釋放當前等待塊中的代理。根據我的邏輯,我也會將此代碼添加到等待塊 2 和 3,以便最終釋放所有代理
代碼在“waitblock”的“on Enter”欄位中:
while(true) {if(wait1.size()>0 &wait2.size()>0)wait.free(agent);}
如果我運行模型,我會得到以下錯誤代碼:“無法訪問代碼”。老實說,我是使用 Java 的新手,但我會說代碼應該是正確的?也許我比較等待塊并釋放代理的方法是錯誤的。無論如何,如果有人可以提供幫助,我會很高興:)
提前致謝
uj5u.com熱心網友回復:
將條件放入 while() 或添加 break 陳述句
while(wait1.size()>0 &wait2.size()>0)
;
wait.free(agent);
否則回圈將永遠不會結束,并且無法訪問之后的代碼
uj5u.com熱心網友回復:
這不是你這樣做的方式,你不能使用 while(true) 除非你在一個獨立的執行緒中運行它
and 運算子也寫成 && 而不是 &
因此,在每個塊的輸入上創建一個函式,在該函式上,您或多或少會執行以下操作:
if(wait1.size()>0 && wait2.size()>0 && wait.size()>0){
wait.free(wait.get(0));
wait1.free(wait1.get(0));
wait2.free(wait2.get(0));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/483646.html
