如何使用 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头