Anylogic - 组装程序在完成 10 次组装后应停止工作 2 小时
Anylogic - Assembler should stop working for 2 hours after 10 assemblies done
“汇编器”在完成 10 次组装后应停止工作 2 小时。
我怎样才能做到这一点?
创建一个名为 countAssembler
的变量,类型为 int。当代理通过汇编程序时增加它。同时创建一个名为 assemblerStopTime
的变量。您还使用 assemblerStopTime=time()
记录汇编程序停止时间
在 countAssembler
值小于 10 之前放置一个 selectOutputOut 块并让它们进入。否则发送到 Wait
块。
现在,为了保持先进先出规则,在第一个selectOutputOut条件下,你还需要检查等待块中是否有任何代理,并且current time - assemblerStopTime
是否大于2。如果有,您释放它并使用 wait.free(0)
函数发送给汇编程序。并派当前代理等待。您还需要将 countAssembler
重置为零。
有很多方法可以做到这一点,具体取决于停止工作意味着什么以及对传入部件的影响。但这里有一个选择
创建一个名为 Machine 的资源池,这将与技术人员一起使用:
在汇编程序的“退出”操作上执行此操作(我使用 9 而不是 10,因为 out.count() 在代理完全退出之前不会计数,所以当数到 9 时,表示你已经生产了 10)
if(self.out.count()==9){
machine.set_capacity(0);
create_MyDynamicEvent(2, 小时);
}
在您的动态事件(您必须创建)中,您将添加以下代码:
machine.set_capacity(1);
第二种选择是让变量 countAssembler 计算生成的项目数...然后
退出时编写 countAssembler++;
在输入延迟时你写下:
if(countAssembler==10){
self.suspend(代理);
create_MyDynamicEvent(2, HOUR,agent);
}
关于你写的动态事件:
assembler.resume(代理);
不要忘记在动态事件中添加所需的参数:
“汇编器”在完成 10 次组装后应停止工作 2 小时。
我怎样才能做到这一点?
创建一个名为 countAssembler
的变量,类型为 int。当代理通过汇编程序时增加它。同时创建一个名为 assemblerStopTime
的变量。您还使用 assemblerStopTime=time()
在 countAssembler
值小于 10 之前放置一个 selectOutputOut 块并让它们进入。否则发送到 Wait
块。
现在,为了保持先进先出规则,在第一个selectOutputOut条件下,你还需要检查等待块中是否有任何代理,并且current time - assemblerStopTime
是否大于2。如果有,您释放它并使用 wait.free(0)
函数发送给汇编程序。并派当前代理等待。您还需要将 countAssembler
重置为零。
有很多方法可以做到这一点,具体取决于停止工作意味着什么以及对传入部件的影响。但这里有一个选择
创建一个名为 Machine 的资源池,这将与技术人员一起使用:
在汇编程序的“退出”操作上执行此操作(我使用 9 而不是 10,因为 out.count() 在代理完全退出之前不会计数,所以当数到 9 时,表示你已经生产了 10)
if(self.out.count()==9){
machine.set_capacity(0);
create_MyDynamicEvent(2, 小时);
}在您的动态事件(您必须创建)中,您将添加以下代码:
machine.set_capacity(1);
第二种选择是让变量 countAssembler 计算生成的项目数...然后
退出时编写 countAssembler++;
在输入延迟时你写下:
if(countAssembler==10){
self.suspend(代理);
create_MyDynamicEvent(2, HOUR,agent);
}关于你写的动态事件:
assembler.resume(代理);
不要忘记在动态事件中添加所需的参数: