anylogic - 如何销毁队列中的所有代理并插入有条件的新代理?
问题描述
基本上我有一个关于 anlylogic 的简单源/汇图:
源将代理“CMproduto”插入到我的行中,并将从我的数据库中获取代理的特征。然后,我的代理将按条件对象将其处理到相应队列(第 1/2/3 行)的行进行排序,并且代理将通过条件一一退出我的模型。但是,我的数据库可以更改(根据我的模拟的其余部分),因此,我需要销毁所有 3 个队列中的所有当前代理(以及我的 CMproduto 人口)并通过“源”重新插入它们,但使用新的我更新的数据库中的值。因此,我的数据库将始终注册旧模型(已经进入我的接收器的模型),因为我已经在我的数据库中创建了一个列,如果代理没有或已经被更新为“0”或“1”分别处理。所以,
这就是我的源的配置方式。基本上代理将以“到达之间的时间”为 0 进入(所以它们都同时插入到我的模型中)。如前所述,正在从数据库中捕获参数,并且到达的数量有限。
我的问题是:如果我从“CMproduto”中删除这些代理,它们会自动从我的队列中删除吗?此外,我如何才能将代理重新插入到我的模型中,并使用我的数据库中的特征(并且只有尚未处理的模型)?
解决方案
我会从队列中删除代理,然后通过输入块将它们发送回流程。代码看起来像:
while( queue.size() > 0 ){
// get the agent out of the queue
Agent agent = queue.removeFirst();
// maybe insert some code to adjust the paramters
// then send back to the enter block
enter.take( agent );
}
您的图表可能类似于:
您可以使用 agent.deleteSelf() 从总体中删除代理,但如果它仍在流程图块中,您将收到错误消息。此外,当我清理特工时,我总是将它们送到水槽,而不是仅仅将它们从人群中移除。过去,我们注意到这有助于解决内存泄漏,以及清理我们自己的引用。
我注意到您只是将代理发送到等待某些条件(保持块)的队列。您可能需要考虑等待块(请参阅帮助菜单)。您可能还想考虑一个分离队列,当您满足条件时,您只需将代理从队列中拉出......实际上,如果您只是将代理保留在队列中,您可能根本不需要这些块 - 您可以只将代理存储在集合中,并根据需要添加/删除/排序等。
推荐阅读
- javascript - 整个网页的平滑滚动
- html - How can one use a selector class that is written in a separate CSS file?
- java - 将回调作为参数传递给 Android 中的抽象 setOnClickListener
- python - Obtaining which element in a df column appears most frequently for each individual element in another df column (list of various individual strings)
- php - 使用 php 生成用于删除或编辑 db 表中的行的按钮
- reactjs - ReactJS 即使在构建之后也会暴露正常的文件夹结构
- list - Dart,Flutter List onTap 以获取磁带项目的索引
- visual-studio-code - multiple if/else statements with different variables: vscode snippet
- mingw-w64 - Error compiling DCMTK from source in MinGW-w64 GCC-8.1.0 "Error: 'FlsAlloc' was not declared in this scope"
- python - How to save weights of keras model for each epoch?