从公用事业收集的特定特征的计数代理如何?

发布于 2025-02-05 04:28:59 字数 3160 浏览 2 评论 0原文

我的模型中有两种类型的代理:

  1. Agenta-这是一个包裹,必须将其交付给the Deliverypoint。该代理具有相应的参数“ deliverypoint”。
  2. AgentB-这是一个包含包裹(Agenta)的软件包(代理容器)。该代理商也具有一个参数“ deliverypoint”,该参数取决于目前交付的包裹(Agenta)的“递送单元”。 我需要计算符合给定条件的代理容器代理商中的代理商代理: Agenta.deliveryPoint == AgentB.DeliveryPoint

I尝试了此表达式:

count(AgentB.Contents(),p - >((Agenta)AgentB.Contents())。 >

代码示例:

  private void _movingToDeliveryPoint_onExit_xjal( final com.anylogic.libraries.processmodeling.Delay<AgentB> self, AgentB agent ) {
    
traceln(count(agent.contents(), p -> ((AgentA)agent.contents()).DeliveryPoint == agent.DeliveryPoint));
  }

但是,当我运行模型时,我在执行此代码的块“ delay”(“ homingtodeLiveryPoint”)中收到此错误:

java.base/java.base/java.util.collections $ unmodifiablelist无法将其投入到SMM_CHAIN .agenta

java.lang.ClassCastException: java.base/java.util.Collections$UnmodifiableList cannot be cast to smm_chain.AgentA
    at smm_chain.sc.lambda$0(sc.java:5168)
    at com.anylogic.engine.UtilitiesCollection.count(Unknown Source)
    at smm_chain.sc._movingToDeliveryPoint_onExit_xjal(sc.java:5168)
    at smm_chain.sc.access$25(sc.java:5163)
    at smm_chain.sc$17.onExit(sc.java:2319)
    at smm_chain.sc$17.onExit(sc.java:1)
    at com.anylogic.libraries.processmodeling.Delay.b(Unknown Source)
    at com.anylogic.libraries.processmodeling.Delay.b(Unknown Source)
    at com.anylogic.libraries.processmodeling.Delay$6.onExit(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBuffer.c(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBuffer.c(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBuffer$1.onExit(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBlock.c(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBlock.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBlock$1.b(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutPort.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.InPort.receiveImmediately(Unknown Source)
    at com.anylogic.libraries.processmodeling.InputBlock$1.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutPort.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutPort.b(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutPort.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBlock.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBlock.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBlock$2.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBlock$2.action(Unknown Source)
    at com.anylogic.libraries.processmodeling.AsynchronousExecutor_xjal.executeActionOf(Unknown Source)
    at com.anylogic.engine.EventTimeout.execute(Unknown Source)
    at com.anylogic.engine.Engine.b(Unknown Source)
    at com.anylogic.engine.Engine.nb(Unknown Source)
    at com.anylogic.engine.Engine.k(Unknown Source)
    at com.anylogic.engine.Engine$a.run(Unknown Source)

您能帮我吗? 多谢!

There are two types of agents in my Model:

  1. AgentA - it's a parcel which must be delivered to the DeliveryPoint. This AgentA has a corresponding parameter "DeliveryPoint".
  2. AgentB - it's a package (an agent-container) containing parcels (AgentA). This AgentB has a parameter "DeliveryPoint" too that depends on the "DeliveryPoint" of the parcel (AgentA) delivering at the moment.
    I need to count agents AgentA in the agent-container AgentB which meet the given condition:
    AgentA.DeliveryPoint == AgentB.DeliveryPoint

I tried this expression:

count(agentB.contents(), p -> ((AgentA)agentB.contents()).DeliveryPoint == agentB.DeliveryPoint))

Code example:

  private void _movingToDeliveryPoint_onExit_xjal( final com.anylogic.libraries.processmodeling.Delay<AgentB> self, AgentB agent ) {
    
traceln(count(agent.contents(), p -> ((AgentA)agent.contents()).DeliveryPoint == agent.DeliveryPoint));
  }

but when I run my Model, I recieve this error in the block "Delay" ("movingToDeliveryPoint") that executes this code:

java.base/java.util.Collections$UnmodifiableList cannot be cast to smm_chain.AgentA

java.lang.ClassCastException: java.base/java.util.Collections$UnmodifiableList cannot be cast to smm_chain.AgentA
    at smm_chain.sc.lambda$0(sc.java:5168)
    at com.anylogic.engine.UtilitiesCollection.count(Unknown Source)
    at smm_chain.sc._movingToDeliveryPoint_onExit_xjal(sc.java:5168)
    at smm_chain.sc.access$25(sc.java:5163)
    at smm_chain.sc$17.onExit(sc.java:2319)
    at smm_chain.sc$17.onExit(sc.java:1)
    at com.anylogic.libraries.processmodeling.Delay.b(Unknown Source)
    at com.anylogic.libraries.processmodeling.Delay.b(Unknown Source)
    at com.anylogic.libraries.processmodeling.Delay$6.onExit(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBuffer.c(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBuffer.c(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBuffer$1.onExit(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBlock.c(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBlock.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBlock$1.b(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutPort.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.InPort.receiveImmediately(Unknown Source)
    at com.anylogic.libraries.processmodeling.InputBlock$1.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutPort.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutPort.b(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutPort.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBlock.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBlock.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBlock$2.a(Unknown Source)
    at com.anylogic.libraries.processmodeling.OutputBlock$2.action(Unknown Source)
    at com.anylogic.libraries.processmodeling.AsynchronousExecutor_xjal.executeActionOf(Unknown Source)
    at com.anylogic.engine.EventTimeout.execute(Unknown Source)
    at com.anylogic.engine.Engine.b(Unknown Source)
    at com.anylogic.engine.Engine.nb(Unknown Source)
    at com.anylogic.engine.Engine.k(Unknown Source)
    at com.anylogic.engine.Engine$a.run(Unknown Source)

Could you help me?
Thanks a lot!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

好久不见√ 2025-02-12 04:28:59

您不能使用AgentB.Contents()。尽管它看起来像是一种不错的方法,但不应该被建模器使用。

另外,请勿使用==比较对象。改用equals()方法。

这样做,假设您有agenta of agentb 的人口或列表myagentsa of

 count(myAgentsA, a->a.DeliveryPoint.equals(DeliveryPoint))

这是假设您从agentb中调用代码

You cannot use agentB.contents(). Although it looks like a good method, it is not supposed to be used by modellers.

Also, do not compare objects using ==. Use the equals() method instead.

Do this, assuming you have a population or list named myAgentsA of AgentA within AgentB:

 count(myAgentsA, a->a.DeliveryPoint.equals(DeliveryPoint))

This assumes you call the code from within AgentB

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文