当前位置: 首页 > 知识库问答 >
问题:

检查连接到代理的代理是否在等待块上-anylogic

夹谷成仁
2023-03-14

直接问题:如何检查代理是否在等待块中等待?

更多细节?下面,谢谢。

我按照费利佩先生对一个类似问题的回答(这个问题:任何逻辑-将多个项目组合回原始所有者)

在回答的第4步中,他说“在passengerWait上,在Oneter操作中,您将检查连接到乘客的所有行李是否都在bagWait块上……如果在bagWait块上……那么您将释放(wait.free(agent))乘客和行李”

你知道怎么检查这个吗?我在单一患者和单一药物之间也有同样的问题。

共有2个答案

湛联
2023-03-14

我想出了办法:

  1. Make a new variable in the Passenger agent and call it variable_IsWaitingForBag
  2. Make a new variable in the Bag agent and call it variable_IsWaitingForPassenger
  3. In onEnter of passengerWait, use the following:
    if(agent.agentLink_myBag.getConnectedAgent().variable_IsWaitingForPassenger)
    {
    passengerWait.free(agent);
    bagWait.free(agent.agentLink_myPassenger.getConnectedAgent());
    }
    agent.variable_IsWaitingForBag=true;
    

邢寒
2023-03-14

为了避免深入了解模型的细节和块的命名,我将为您提供一些通用的东西,以帮助您实现所需的功能。

>

字符a现在指的是在每次迭代中评估的等待块中的代理。

现在,您只需添加条件,检查等待块中的任何代理是否与您的条件匹配,即它们是否等于通过等待块的任何连接代理。

Agent x = null;
for( Agent a : waitBlock ) {

   if( a.equals(agent.agentLink.getConnectedAgent()) ) {

      x = a ;
      break;
   }
}

if( x != null ) {
   waitBlock.free( x );
}

另一个简化代码是:

Agent x = findFirst( waitBlock , a -> a.equals(agent.agentLink.getConnectedAgent()) );
   if( x != null ) {    
   waitBlock.free(x);    
}
 类似资料:
  • 我使用等待块使代理等待,直到条件为真(资源空闲)。我尝试在等待块“输入”字段中写入以下内容: 问题是,如果资源变得繁忙,代理将被困在等待块中,不会被释放,即使条件再次变为真。然后,当下一个代理进入等待块时(条件再次变为真),它将传递原本在它前面的代理,但现在被卡住了。有办法解决这个问题吗?

  • null null Jenkins通过curl命令触发作业(不在管道中),Jenkins kubernetes插件可以用我定义的图像触发作业。

  • 我有一艘容量为1750 pp的船,根据时间表每2小时离开港口一次。乘客到达等候区后,如果满足以下条件,他们可以离开该区域: 码头上有一艘船 (离开等候区的已上船乘客人数) 所有这些条件都正常工作,但由于到达码头需要时间,而且根据安全协议,我想在船只出发前2分钟停止客流,以免乘客没有登上码头。 如何将船期(名为schDepartureBoat1)与乘客等待区(名为waitForBoat1)联系起来?

  • 我是AnyLogic的新手,我正在尝试创建一个自定义网络...但我无法成功完成此任务:( 然后我有一个变量“network”,它包含年龄类之间链接的平均数。 我想要的是每个代理根据矩阵创建与其他代理的链接。 我不知道如何对一个座席说“连接到另一个具有AgeClass=3的座席” 谢谢大家的支持!!!

  • 我想使用ActiveMQ创建一个代理来连接到另一个蚊子代理。然后,我可以使用ActiveMQ接收来自蚊子代理的消息。 我现在要做的是: 将ActiveMQ与JBoss EAP 6.3集成。 在ActiveMQ中创建MQTT代理:http://activemq.apache.org/mqtt.html 但是,在我添加代理配置中的网络连接器之后.xml: 服务器启动后显示异常: "vm://local