任何逻辑的"如何"问题



我将Anylogic用于模拟建模类,并且我不是Anylogic或智能编码。我上一节也是唯一一节编码课是大约16年前的MatLab。我有几个关于如何用anylogic在离散模型中实现建模概念的问题。

  1. 如何将代理直接添加/注入源下游的队列?我已经尝试添加一个额外的源来使用"Calls of inject((function",但我不确定在选择它之后如何实现它(例如:选择Calls of inject((函数之后我该怎么做(。我将新的源直接馈送到我想要注入的队列中。

  2. 如何将代理的发布设置为已定义的时间表,而不是费率?目前,我的工作模式设置为到达时间。但我想将代理发布设置为一个定义的时间表。(例如:代理-1在120秒内释放,代理-2在150秒释放,代理-3在270秒释放(

如果能提供任何帮助,我们将不胜感激,尤其是如果能以"像我5岁一样向我解释"的格式编写。

问题1:如果您有一个直接连接到队列的源,那么当您调用source.inject((时,将在源块创建一个代理并转到队列。如果您有一个具有多个可能目的地的源,则必须使用选择输出块和一些条件才能从源转到所需的队列。

既然你提到不是一个强大的程序员,这可能不适合你,但我经常发现自己通过add_population创建代理,然后将它们添加到ArrayList中,直到我准备好将它们拉入DES流。实际上,在AnyLogic中有几乎无限的方法来控制代理流。

问题2:选项a:通过";数据库中的到达表";您可以将AnyLogic数据库表链接到Excel,然后源块将有一个基于该表的代理到达。

选项b:到达时间表-您可以在开发环境中手动设置,也可以从数据库中加载时间表。鉴于你的简要描述,我更喜欢选项a而不是选项b。

选项c:将数据读入变量,然后根据下一次到达时间编写代码以发布。有1000种方法可以做到这一点,但其中一个例子可以是一个双打列表(您的到达时间(,将事件设置为延迟到下一次到达,调用inject函数,从列表中删除该到达。我认为选项a对您来说是最好的,但考虑到AnyLogic允许您添加java代码,您的到达逻辑的复杂程度没有限制。

对于2(您也可以使用eventdynamic event。动作可以是source.inject(1);,您可以使用变量根据自己的偏好安排它们。只要保持警惕,必要时重新开始活动。AnyLogic提供了一个用于动态事件的演示模型。

最新更新