Anylogic Valve,请问Anylogic在设置开启率时是如何决定单位的?

Anylogic Valve, how does Anylogic decide the units when you set the open rate?

这是一个非常令人沮丧的反复出现的问题。在整个模型中,我只使用每小时立方米的流量。所有阀门的流量都是动态设置的,使用各种功能。因此,我们使用 valve.set_openRate(flowm3h / 3.6) 来获得 liter/sec 的流量,使用 valve.set_openRate(flowm3h / 3600) 来获得立方体的流量 meter/sec.

然而 Anylogic 似乎随机决定 set_openRate() 函数是使用 liter/s 还是 cubic_meter/s 的单位。例如,我放下一个阀门 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。重新打开 Anylogic 并加载模型。现在修改模型,添加一个按钮并通过三个阀门拆分流量 0.2、0.3 和 0.5,使用函数 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(); 运行。流量限制为 0.333 立方 meter/s,所有流量都通过 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 立方 meter/s,三个外阀的流量太高(因此 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 将使用的单位?它根据什么决定单位是什么?或者...有没有办法强制单位?

我不认为 AnyLogic 在它使用的单位上不一致...不过根据你的描述我会建议:

1) 每次更改费率或任何需要单位的事情时,始终使用单位,在 set_openRate 的情况下,您可以

valve.set_openRate(4, CUBIC_METER_PER_SECOND);

查看帮助文档中可用的单位: https://help.anylogic.com/index.jsp?topic=%2Fcom.anylogic.help%2Fhtml%2Ffunctions%2FConstants_Time_Units.html

2) 您在每个流体库块旁边看到的输出始终以立方米每秒为单位,我敢肯定您无法更改它(除非他们最近进行了一些更新)。在 liters/second 中定义所有内容并在模拟运行期间以每秒立方米为单位查看输出有时会让人感到困惑,但事实就是如此。

3) 修改你是否真的在你的块中使用了正确的单位......你必须在你的块中定义单位,有时在那里很容易出错。