【问题标题】:Calculate amount of agent using a path使用路径计算代理数量
【发布时间】:2022-01-06 10:21:12
【问题描述】:

我之前已经有过这个问题,但不是针对运输者。在我的模型中,我想通过使用计数器作为变量来计算使用路径的代理数量,但是我目前用于传输器的方法不适用于没有传输器的代理。

我目前创建了一个节点(见第一张图片),代理应该通过该节点并在此处放置一个计数器(见图 2)。但是,这似乎不适用于仅使用没有传输器的代理。还有其他方法吗?谢谢。

【问题讨论】:

  • 您是否也将这些矩形节点用于其他用途,还是仅用于计数目的?
  • @YasharAhmadov 他们只是为了计数目的

标签: counter anylogic


【解决方案1】:

你能做什么,作为一个愚蠢的解决方案是在你的代理中拥有 2 个事件......一个每 100 毫秒左右循环一次的事件,完全没有任何作用

另一个是具有条件的条件事件:

node.contains(getX(),getY())

在这次活动中,您将算数。

当运动开始时(不管你怎么做),你重新开始条件事件:

event.restart();

【讨论】:

  • 我目前的解决方案是通过一个事件检查所有代理,看看它们在哪个坐标中,当坐标在路径中时,计数器在计数器中添加了这个代理!所以确实符合这个逻辑。
【解决方案2】:

我认为使用矩形节点进行计数是多余的。这是我的做法:

在main中创建一个变量,我们称之为counterNodes。它应该是int[][] 类型。在初始值类型new int[5][5] 内(假设您有 5 个节点和 5x5 可能的组合(对)。

如果您的 Person 代理没有 origindestination 变量,请创建变量。或者如果你已经有了这个逻辑,可以跳过这一步。

我假设您的节点被称为 node0、node1、node2 等。

如果您使用moveTo 块,则在输入时,获取代理的起点和终点编号并递增计数器。

Integer a=(int) Integer.parseInt(agent.origin.getName().substring(4));
Integer b=(int) Integer.parseInt(agent.destination.getName().substring(4));

counterNodes[a][b]+=1;

【讨论】:

  • 谢谢,如果节点不是解决方案,我确实可以编写代码,我认为这不是针对我的具体情况的解决方案,但我会想办法!
猜你喜欢
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-30
  • 1970-01-01
  • 2018-10-03
  • 2010-11-11
  • 2020-11-05
相关资源
最近更新 更多