【问题标题】:Pass destination node as a string to agent parameter将目标节点作为字符串传递给代理参数
【发布时间】:2019-09-11 05:28:39
【问题描述】:

我想将我的代理要去/所在的目标节点作为字符串传递。

我有一个代理(汽车),它有多个参数,其中一个是位置。我有一个具有多个家庭位置的资源池,汽车可以停在其中(移动到被扣押单元的家)。我正在尝试收集汽车停放在其中的节点,并将其作为字符串传递给此位置参数,因此当它退出 moveTo 块时:

if(moveTo.destinationNode(agent) == nodeA) {
    agent.location = "A";
} else {
    agent.location = "NULL";
}

但是,当汽车停在节点 A 上时。我希望 location 的值是 A,但参数显示为 NULL,它不应该是。任何建议都会很有价值。谢谢!

【问题讨论】:

  • 什么是nodeAString?
  • nodeA 是一个 INode 或点节点
  • 如果不是原语,则使用.equals()

标签: java anylogic


【解决方案1】:

我认为问题在于您使用了== 运算符,但您没有重载它来比较两个节点。 (我不知道该怎么做,但你可以)。也许你可以做类似if (x.location == y.location) {} 的事情(我正在编这些名字)。希望这会有所帮助。

【讨论】:

  • 是否可以使用 moveTo.destinationNode(agent).equals(nodeA) 代替?或者类似的东西?
  • 是的,如果它们是字符串(我认为)。
【解决方案2】:

问题已解决:

if(agent.getNetworkNode() == nodeA){
   agent.location = "A"
} else if(agent.getNetworkNode() == nodeB){
   agent.location = "B"
}

...等等

【讨论】:

    猜你喜欢
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多