2017-02-04 117 views
0

我的源代码在“On at exit”字段中有以下代码: TRUCK.ID_number = parameter; parameter = parameter + 1;Anylogic将值分配给所有实体,而不是只有一个

然后,每个卡车将收到的ID:1,2,3,...

的问题是,所有卡车同时循环,它看起来像每次生成新的卡车和代码运行时会重置所有卡车的ID。

例如:当在货源处创建货车4(ID = 4)时,所有其他货车将收到ID 4,因此我无法知道每辆卡车的正确ID。

我在做什么错?

+0

你在哪里牵着你的'parameter'领域,是什么类型呢?如果它是一个'Integer'而不是'int',那么你会得到你提到的症状,因为'ID_number'是一个对象引用。如果是这样的话,我可以在答案中解释更多... –

+0

参数在主窗口中保存,输入“int”。 我真的迷失在这里。它应该是非常简单的事情...在这个过程中记录每个实体的ID和其他特征,然后收集信息(汇) – Leo

回答

1

有几件事。首先,您需要在onExit代码框中使用关键字agent。所以在你的情况下,agent.ID_number=parameter。请阅读这些在AnyLogic代码框中随处可见的特定关键字。我把它叫做“魔术灯泡”,还发现该主题的我的博客:

The magic lightbulb

其次,新创建的代理会自动获得一个唯一索引(如果他们属于同一个群体)。您可以使用卡车代理内的getIndex()方法访问该方法。

+0

谢谢!但我仍然认为我在这里做错了什么。 当我添加您说的代码时,我收到错误消息。 agent.ID_number =参数===>剂不能被解析为一个可变 Agent.ID_number =参数===> ID_NUMBER不能解析器或不是字段 Entity.ID_number =参数===>实体无法解析为变量 entity.ID_number = parameter ===> ID_number不能解析器或不是字段 – Leo

+0

您需要使用小写“agent”,而不是“Agent”。你真的需要阅读这些关键词和一般的Java编程。这是非常区分大小写的。此外,请确保您将其输入到实际支持关键字“代理”的代码框中(请阅读我的博客了解如何操作)。希望有助于 – Benjamin

-1

答案是:使用entity.ID_number =参数

+0

Leo,它是AnyLogic 6中的“实体”(以及AnyLogic 7中已废弃的企业库)。但是,它是AnyLogic 7中的“代理”。如果您使用旧版本的软件,请指定您使用的版本。干杯 – Benjamin

相关问题