【发布时间】:2020-10-03 10:50:51
【问题描述】:
这是一个非常令人沮丧的反复出现的问题。在我的模型中,我只使用每小时立方米的流量。所有 Valve 的流量都是动态设置的,使用各种功能。因此,我们使用valve.set_openRate(flowm3h / 3.6) 以升/秒为单位,valve.set_openRate(flowm3h / 3600) 以立方米/秒为单位。
但是,Anylogic 似乎随机决定 set_openRate() 函数是使用升/秒还是立方米/秒的单位。例如,我放下一个阀门Rate_when_open = openRate/3.6 liter/s and Initially closed(使用参数 openRate)。我设置了参数 openRate = 1200。从这里它进入两个流体分裂,以三种方式分裂流体。每个分支都通过一个阀门控制 - (outvalve_0 .. 2) 没有限制。运行模型,打开 outvalve_1,关闭它,打开 outvalve_0 ...一切正常;流量为 0.333(m3/s 即 333.33 liter/s,没问题)。保存模型。关闭任何逻辑。重新打开 Anylogic 并加载模型。现在修改模型,添加一个按钮,并使用函数outvalve_0.set_openRate(1200*0.2/3.6); outvalve_1.set_openRate(1200*0.3/3.6); outvalve_2.set_openRate(1200*0.5/3.6); outvalve_0.open();outvalve_1.open();outvalve_2.open(); Run 将流量 0.2、0.3 和 0.5 通过三个阀门分开。流量限制为 0.333 立方米/秒,所有流量通过 outvalve_0 流出。在调试模式下运行模型,它显示 outvalve_0 的 openRate 设置为 66.667 m3/s; outvalve_1 至 100 m3/s 和 outvalve_2 至 166.67 m3/s。由于阀门限制流量为 (1200/3.6) = 0.333 立方米/秒,因此三个外阀门的流量太高(因此 Anylogic 将初始 (1200/3.6) 解释为 0.333 m3/s 和后续 (1200*0.2 /3.6) 为 66.67 m3/s 而不是 liter/s (0.067m3/s)。您必须将代码更改为 outvalve_0.set_openRate(1200*0.2/3600)..etc. 才能工作
问题是这不是结果。对于下一个模型,设置略有不同,如果您使用 (1200*0.2/3600),它现在会将其解释为 0.000067 m3/s,您必须将代码改回 (1200*0.2/3.6)。
所以问题是:当您通过valve.set_openRate() 函数传递流量时,您如何知道 Anylogic 将使用的单位?它在什么基础上决定单位是什么?或者...有没有办法强制单位?
【问题讨论】: