我正在尝试创建一个简单的程序,模拟供暖通风应用程序中的可变风扇。下面的脚本只是模拟基于风扇启动和提升的风管压力读数(以英寸水柱为单位)。基本上风扇就会启动,管道压力就会为零。当马达上升时,管道压力将每10秒缓慢上升一次,值为.1"WC每10秒。当风扇处于管道压力设置点1.5时,程序将生成一个大约1.3 - 1.7的随机数字,以模仿风扇在设置点附近徘徊。希望这是有意义的!
我有一种感觉,这可以写得更好,但在它的最简单的形式:
import time
from numpy.random import seed
from numpy.random import randint
# seed random number generator
seed(1)
#generate random number to mimic fan hovering at setpoint
def ductRandStatic():
value = randint(13, 17, 20)
return value * .1
ductStaticStart = 0
ductStaticEnd = 1.5
#mimic fan ramping up to setpoint slowly
def startFan():
static = ductStaticStart + .1
time.sleep(10)
if static < ductStaticEnd:
static = ductRandStatic()
else:
static = static
print(static)
while True:
startFan()由于某种原因,程序只能打印,我认为随机数生成器...我希望它能每10秒打印一个数值模拟管道压力...[1.5 1.6 1.6 1.5 1.4 1.4 1.4 1.6 1.3 1.3 1.4 1.6 1.3 1.5 1.3 1.3 1.4 1.6 1.4 1.5]
发布于 2019-04-27 08:33:04
您的模拟有两个阶段:启动(一系列固定的值)和持续(随机变化)。代码如下:
from time import sleep
from numpy.random import randint
def ductRandStatic():
return randint(13, 17) * 0.1
delay = 10
for i in range(16):
pressure = i * 0.1
print(pressure)
sleep(delay)
while True:
print(ductRandStatic() )
sleep(delay)输出:
0.0
0.1
0.2
0.30000000000000004
0.4
0.5
0.6000000000000001
0.7000000000000001
0.8
0.9
1.0
1.1
1.2000000000000002
1.3
1.4000000000000001
1.5
1.5
1.6
1.4000000000000001
1.4000000000000001
1.4000000000000001
1.6
1.4000000000000001
1.4000000000000001
1.6
1.4000000000000001
1.3
1.4000000000000001
1.3
1.3
1.5
1.3
^CTraceback (most recent call last):
File "so.py", line 18, in <module>
sleep(delay)
KeyboardInterrupt发布于 2019-04-27 05:12:29
我认为您应该去掉startFan()函数,并将其大部分代码下移到主循环中,这样static就可以记住它的值:
# initialize to 0.1
static = 0.1
# mimic fan ramping up to setpoint slowly
while True:
if static < 1.5:
static = ductRandStatic()
print(static)
time.sleep(10)另外,您对randint()的调用是错误的--它应该接受两个整数,但您传递的却是三个整数。
https://stackoverflow.com/questions/55874739
复制相似问题