如何使用 Agent 的参数来设置 Block 的行为

Posted

技术标签:

【中文标题】如何使用 Agent 的参数来设置 Block 的行为【英文标题】:How to use Agent's parameter in setting Block's behavior 【发布时间】:2021-01-02 05:03:53 【问题描述】:

我正在根据代理进入区块的参数对区块(延迟)行为进行原型设计。

enter image description here 所以这些是源块,批处理代理根据表中的数据到达。 接下来是延迟块,它在 stopDelay() 函数调用上释放代理。 目前,我在 Source On Exit Action 中调用了 stDelay 函数:stDelay(agent); timeStampStage1End 是代理的参数,由表中的数据决定。

stDelay(函数) 函数体:

批次 b = b1;

double r = dateToTime(b.timeStampStage1End);

create_StDelayEvent (r, b);

参数:b1,类型:批处理

StDelayEvent(动态事件)

行动:

delay.stopDelay(b);

参数:b,类型:批处理

问题在于模型的行为与数据不符合预期:大量代理卡在延迟块。

能否请您给我提示一下使用Agent的参数tor模型行为设置的正确方法?

【问题讨论】:

【参考方案1】:

据我所知,您的错误是 dateToTime 返回一个模拟时间,但是当您设置动态事件时(在您的情况下通过 create_StDelayEvent),您必须指定超时(即从当前时刻开始的持续时间)。因此,您应该使用 time() - r 之类的东西作为动态事件超时。

话虽如此,这是实现您想要的东西的一种过于复杂的方式。相反,只需将所需的延迟时间作为 Batch 代理中的参数或变量,并让延迟块使用它来定义延迟时间(例如,agent.preCalculatedDelayTime 的延迟时间)。

[一般来说,如果延迟时间对于每个个体Batch 来说实际上并不是唯一的(例如,某些类型/类的批次有不同的延迟时间,但在一个类型/类内延迟时间是相同的),您还可以执行其他操作,例如在 AnyLogic 数据库表中定义不同的时间,并根据您需要检查的相关代理属性在延迟块中查找适当的值。]

【讨论】:

以上是关于如何使用 Agent 的参数来设置 Block 的行为的主要内容,如果未能解决你的问题,请参考以下文章

Q: [Anylogic] 如何计算在seize block队列中等待的所有agent的变量总和?

ansible之block实践--自动根据centos版本安装zabbix-agent

Scrapy Shell - 如何更改 USER_AGENT

如何设置CUDA Kernel中的grid_size和block_size?

SQLmap参数设置之二——1.sqlmap设置user-agent;2.sqlmap设置host头;3.sqlmap设置referer头;4.sqlmap设置其他的HTTP头

SQLmap参数设置之二——1.sqlmap设置user-agent;2.sqlmap设置host头;3.sqlmap设置referer头;4.sqlmap设置其他的HTTP头