簡體   English   中英

從匯編程序隊列部分中刪除代理

[英]remove agent from assembler queue part

我在 Anylogic 中的代碼有問題。 我想用一個按鈕移除/刪除匯編器中的代理。 如果代理在匯編程序的延遲部分,我可以刪除它們(這就是我的代碼工作的地方)。 但是,隊列中包含部分組裝程序的代理不會被刪除。 我在按鈕的操作字段中使用了以下代碼,但是當我單擊按鈕時,匯編器隊列部分中的庫存仍然存在。 有誰知道這個的解決方案?

我的model在Anylogic中的圖片

我從匯編程序的隊列部分刪除/刪除代理的代碼:

while(Lager_Oberteile.size() > 0) {
      Agent agent = Lager_Oberteile.removeFirst();
}
while(Lager_Plättchen.size() > 0) {
      Agent agent = Lager_Plättchen.removeFirst();
}

if (Klebestation.queueSize(1) > 0) {
     Agent agent = Klebestation.queueGet(1, 0);
     Klebestation.remove(agent);  
}    
if (Klebestation.queueSize(2) > 0) {
     Agent agent = Klebestation.queueGet(2, 0);
     Klebestation.remove(agent);       
} 

if (Klebestation.delaySize() == 1) {
     Agent agent = Klebestation.delayGet(0);
     Klebestation.remove(agent);
}

offene_Aufträge = 0;
Stopp1.unblock();
Stopp2.unblock();

您可以使用以下方法刪除隊列中的所有代理:

int numAgents = assembler.queue1.size();
for (int i=0; i<numAgents; i++) {
    assembler.queue1.remove(0);
}

您可能會感到困惑,因為視覺計數器不會跳回零: 在此處輸入圖像描述

但是,這僅顯示有多少代理已進入該隊列。 你總是可以用 tracelns 測試這些東西:

在此處輸入圖像描述

所以使用所有 5 個隊列的代碼,你很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM