我对 Java 和 AnyLogic 还很陌生,所以请达到我的水平。
代理是否有办法从另一个代理获取变量值? 在这种情况下,代理将属于同一类型。因此,它们都具有相同的变量,但由于它是具有随机初始值而不是参数的变量,因此值不相同。
代理最初也通过小世界连接进行连接,并且这些连接在运行期间不会改变。
例如,在事件中发生的代理如何从另一个代理收集变量值(例如代理 i 获取代理 j 的变量值 X)。该值将被放入一个小方程中,以便修改代理 i 的变量 X 的值。换句话说,代理 i 会受到其连接的代理 j 的影响,从而改变他的 X 值。
我尝试了 .getConnectedAgent()
和 .get
的多种组合,但没有成功。我现在尝试将每个代理的 X 值提取到数据库中,然后使用该数据库通过代理 i 收集代理 j 的 X 值,但我没有取得任何进展。
需要提取的值是 double,但如果更容易的话,我可以将变量更改为整数。
最佳答案
无需将其提取到数据库中。您应该更多地学习面向对象编程,您的问题与 AnyLogic 关系不大,而与正确使用 Java 关系更大。
如果您有一群名为“MyAgents”的代理,其中每个代理都有一个带有随机 double 值的变量 var,则代理 12 可以通过调用 var = get_Main().MyAgents.get(13).var
获取代理 14 的 double 值。 .
在这里,var
左侧是调用代理的变量。 get_Main()
将其提升一级以访问其自己的群体和其他代理。然后它访问第 14 个代理(Java 从零开始)及其 var 值。
如果您打算使用getConnectedAgent()
,您需要先连接代理。如果您使用“小世界”,则可以在某种程度上完成此操作,但通常您希望手动定义连接。检查帮助中的“代理链接”文章。
干杯
关于java - AnyLogic 基于 Agent 的模拟代理值传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36825158/