当前位置: 首页 > 知识库问答 >
问题:

如何破坏队列中的所有代理并插入有条件的新代理?

傅树
2023-03-14

基本上,我有一个简单的源/汇图:

源将在我的行中插入代理“CMproduto”,并将从我的数据库中获取代理的特征。然后,我的代理将按条件对象将其处理到相应队列(第1/2/3行)的行进行排序,代理将通过条件逐一退出我的模型。但是,我的数据库可以更改(根据我的其余模拟),因此,我需要销毁所有3个队列中的所有当前代理(以及我的CMproduto种群),并通过“源”重新插入它们,但使用来自我更新的数据库的新值。因此,我的数据库将始终注册旧模型(已经进入我的接收器的模型),为此我在我的数据库中创建了一个列,如果代理尚未或已被处理,则用“0”或“1”更新,分别。因此,我应该只重新插入此列中值为“0”的模型代理(我不想重新处理已经处理过的模型)。

这就是我的源代码的配置方式。基本上,代理将在“到达时间间隔”为0的情况下进入(因此所有代理都将同时插入到我的模型中)。如上所述,正在从DB捕获参数,到达的数量有限。

我的问题是:如果我从“CMproduto”中删除这些代理,它们会自动从我的队列中删除吗?此外,如何将代理重新插入到具有数据库特征的模型中(并且仅限于尚未处理的模型)?

共有1个答案

栾昂雄
2023-03-14

我将从队列中删除代理,然后通过Enter块将它们通过流发送回来。代码如下所示:

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 );
}

您的图表可能类似于:

您可以使用代理。deleteSelf()从填充中删除代理,但如果代理仍在流程图块中,则会出现错误。此外,当我清理代理时,我总是将其发送到水槽中,而不是将其从人群中移除。在过去,我们注意到这有助于解决内存泄漏问题,以及清理我们自己的引用。

我注意到,您只是将代理发送到等待某些条件(等待块)的队列。您可能需要考虑等待块(请参阅帮助菜单)。您可能还想考虑一个分离的队列,在这里,只要满足条件,就可以将代理从队列中拉出。。。实际上,如果您只是将代理保留在队列中,您可能根本不需要这些块—您可以将代理存储在集合中,并根据需要添加/删除/排序等。

 类似资料:
  • 我正在研究一个流域农民行为建模的论文。我有6个代理包含不同的农民人口。这些农民已经在地理信息系统地图上定位为Anylogic中的环境(主要)。我还通过在主启动上编码并使用“链接到代理”来定义6个代理群体之间的连接。现在,我想通过状态图定义代理的行为。但我有些困难。我得把每个农民的收入和所有有联系的农民的收入进行比较。我怎么能那样做?我试图定义条件转换并编写的内容(例如,如果每个农民的收入低于其网络

  • 我正在为Kafka工作客户:librdkafka。图书馆在这里https://github.com/edenhill/librdkafka/blob/master/examples/rdkafka_example.cpp.我的程序正在向代理写入2000000条消息。在此过程中,我重新启动了代理。有时,没有消息无法传递到代理。有时,大约100000条消息未能传递到代理。队列缓冲。最大消息数=1000

  • 问题内容: 我使用免费的虚拟主机000webhost。该服务还可以,但是它会在每个文件和请求中插入一些javascript计数器。该脚本如下所示。 如果我做一个jQuery发布,它破坏了我的代码,我没有任何回应。 我该如何解决?如何删除托管JavaScript代码? 问题答案: 他们在其cPanel中有一个链接,您可以在其中禁用分析代码。 http://members.000webhost.com

  • 可以使用源代码创建一个新代理。注入(1)函数。我是否可以在创建此代理时为其指定一个变量值,例如目标?

  • 我对任何逻辑都还是新手。我需要一个解决问题的建议。例如,现在有3个代理在抢占块的队列中等待。第一个代理包含变量6,第二个代理包含变量5,第三个代理包含变量6,因此,来自三个代理的变量之和是17。注意:这三个变量是同一类型(整数)。 提问:我想知道有没有办法计算这个数值? 有一个单一的产品将由两个工人加工。基本上,一个产品要由3个任务来处理,这3个任务是任务a、任务B和任务C,任务a和任务C被称为“

  • 如何在Anylogic中获取块队列中的代理列表?在我的模型中,目前位于队列中的每个代理A都是包含一些代理B的容器。我必须计算代理B。为此,我尝试获取队列中代理A的列表: 但是队列。contents()返回一个空列表。你能帮我吗?谢谢。