【发布时间】:2018-08-30 20:55:22
【问题描述】:
我是 Anylogic 的新手。我有一个简单的模型,使用流体动力学库:两个罐和它们之间的阀门。只有当第一个水箱(例如 tank_1)中的量是第二个水箱(例如 tank_2)的量的两倍时,阀门才必须以某个速率(例如 X)打开 你能帮我解决这个问题吗? 问候
【问题讨论】:
标签: anylogic
我是 Anylogic 的新手。我有一个简单的模型,使用流体动力学库:两个罐和它们之间的阀门。只有当第一个水箱(例如 tank_1)中的量是第二个水箱(例如 tank_2)的量的两倍时,阀门才必须以某个速率(例如 X)打开 你能帮我解决这个问题吗? 问候
【问题讨论】:
标签: anylogic
根据不同的情况,您可能对阀门的使用有更多的条件。但是当 tank_1 正好是 tank_2 的 2 倍时发生某些事情是一个坏主意...相反,创建一个布尔变量来告诉您当前情况是 tank_1 是大于还是小于 2*tank_2。我们称它为“belowTank2”。我将假设 tank_1 在模拟开始时低于 2*tank_2。所以下面的Tank2 是真的。
然后您创建一个每秒循环运行的事件,如果您愿意,可以更频繁地运行,并使用以下代码:
if(belowTank2){
if(tank_1.amount()>2*tank_2.amount()){
valve.set_openRate(0.1);
belowTank2=false;
}
}else{
if(tank_1.amount()<2*tank_2.amount()){
valve.set_openRate(0.3);
belowTank2=true;
}
}
所以这意味着只要 tank_1 超过 2*tank_2,就会触发阀门上的速率变化。当它低于 2*tank_2 时会再次触发变化
【讨论】: