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

Anylogic:While(true)函数用于等待块

华宇
2023-03-14

嗨,我正在尝试模拟一个装配站,因此我想用一个等待块来协调我的材料的发布。我的流程包括以下步骤:

3种不同的路径:来源——

模型

当所有代理到达他们的区块时,我想在他们的等待区块中释放我的代理。我现在面临的问题是,所有3个代理都在不同的时间到达。例如,代理1在等待区块1 10分钟后到达,代理2和3在区块2和3 5分钟后到达。所以代理1应该检查其他代理是否到达他们的区块,然后被释放。代理2和3也应该采取相同的行动,以便所有3个代理同时被释放。

因此,我在等待块1中添加了一个while(true)循环,以证明等待块2和3中是否有代理,然后释放当前等待块中的代理。根据我的逻辑,我还将此代码添加到等待块2和3中,以便最终释放所有代理

代码位于“waitblock”的“on Enter”字段中:

while(true) {if(wait1.size()>0 &wait2.size()>0)wait.free(agent);}

如果我运行模型,我会得到以下错误代码:“不可达代码”。老实说,我是新手Java但我会说代码应该是对的?也许我比较等待块和释放代理的方法是错误的。无论如何,如果有人能帮忙,我会很高兴:)

提前感谢

共有2个答案

越正阳
2023-03-14

这不是你怎么做的,除非你在一个独立的线程中运行,否则你不能使用while(true)

同时写入and运算符

因此,在每个块的输入上创建一个函数,在该函数上您将或多或少执行以下操作:

if(wait1.size()>0 && wait2.size()>0 && wait.size()>0){
     wait.free(wait.get(0));
     wait1.free(wait1.get(0));
     wait2.free(wait2.get(0));
}
 
申屠喜
2023-03-14

将条件放入while()或添加break语句

while(wait1.size()>0 &wait2.size()>0)
   ; 
wait.free(agent);

否则循环将永远不会结束,之后的代码将无法访问

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

  • 是否可以使用等待与参数?例如: 即使是这样,似乎也不是最好的主意。以前有人这样做过吗?

  • 我试图用Firebase函数做一个理论上相对简单的函数。 具体地说: > 向所有用户的实时数据库变量添加 向所有用户发送通知 我仍然在努力理解/,这可能就是为什么我在这个问题上如此纠结的原因。 我正在做的是: 然后就有了: 和函数: 我当前得到的错误是: “Await”表达式仅允许在异步函数中使用。 const devices=await devicesref.get(); 但即使我得到它没有错误

  • 函数执行时间过长。尝试使用await异步函数,但没有效果。返回未定义,因为不等待。 我有我的index.js: 和我的signupapi.js: 这是运行index.js并调用时的节点输出: 我当前在DB中有37个具有相同数据的条目,因此返回37。 但这是最后执行的,并且出现在控制台的底部,而它应该出现在顶部。

  • 我正试图将图像上传到firebase存储,但调用该函数时,未执行wait以获取url。我错过了什么? 看看这个其他主题,我发现问题可能是“然后”,但我如何设置代码以等待url? 异步/等待/然后飞镖/颤振 谢谢

  • 问题内容: 我知道这个问题以前曾被问过,但是所有解决方案都不适合我。 我有一个将参数发送到API的函数,并以列表的形式返回数据。我有一个UITableView设置为使用该列表,但是它在列表分配给变量之前运行。 码: 如果不立即将其作为重复投票,我将不胜感激,这是我尝试的方法。 派遣组 信号量计时 运行变量 其中包括= self和= self 。 编辑:要求提取项目, 问题答案: 您不能-也不应该-