python-3.x - 在 python 中使用 simpy 包进行模拟时出现值错误
问题描述
我想使用 simpy 包模拟前 10 个客户。我收到错误,我无法找到实际错误。请帮我。
代码如下:
Source function is like below. SRTFunc is used to get service time.
data =pd.read_csv(path)
data=data.head(10)
number = len(data) # Total number of customers
interval = data['timeBtArrival'] # Generate new customers in minutes
customerData = data
env = simpy.Environment()
counter = simpy.Resource(env, capacity=4)
def source(env, number,interval, counter,customerData):
"""Source generates customers randomly"""
for i in range(number):
value1 = SRTFunc(p1=customerData["col1"][i],p2=customerData["col2"]
[i],p3=customerData["col3"][i],p4= customerData['col4'][i])
c = customer(env, 'customer%02d' %i, counter, timeToService= (value1))
env.process(c)
t= customerData['timeBtArrival'][i] # Inter arrival time between the customers in minutes
yield env.timeout(t)
客户函数如下:
def customer(env, name, counter, timeToService):
"""Customer arrives, is served and leaves."""
arrive = env.now
print('%7.4f %s: Here I am' % (arrive,name))
with counter.request() as req:
yield req
wait = env.now - arrive
print('%s waited %6.3f' % (name, wait))
yield env.timeout(timeToService)
print('%s Finished at %7.4f' % (name, env.now))
运行模拟
# Start processes and run
proc = env.process(source(env, number, interval, counter,patientData))
env.run(until=proc)
我收到如下错误:
0.0000 Customer00: Here I am
Customer00 waited 0.000
1.0000 Customer01: Here I am
Customer01 waited 0.000
9.0000 Customer02: Here I am
Customer02 waited 0.000
11.0000 Customer03: Here I am
Customer03 waited 0.000
13.0000 Customer04: Here I am
Customer00 Finished at 18.0000
Customer04 waited 5.000
Customer01 Finished at 19.0000
Customer02 Finished at 27.0000
Customer03 Finished at 29.0000
Customer04 Finished at 36.0000
39.0000 Customer05: Here I am
Customer05 waited 0.000
Traceback (most recent call last):
File "<ipython-input-5-c616845faff0>", line 23, in customer
yield env.timeout(srTime)
File "C:\Users\algol\Anaconda3\lib\site-packages\simpy\events.py", line 230, in __init__
if delay < 0:
File "C:\Users\algol\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1479, in __nonzero__
f"The truth value of a {type(self).__name__} is ambiguous. "
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<ipython-input-6-39f233a6cad2>", line 2, in <module>
env.run(until=proc)
File "C:\Users\algol\Anaconda3\lib\site-packages\simpy\core.py", line 254, in run
self.step()
File "C:\Users\algol\Anaconda3\lib\site-packages\simpy\core.py", line 206, in step
raise exc
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我检查了服务时间值和到达时间。所有值都大于零。请帮我。我已经尝试了 2 天并搜索了它,但我没有找到任何令人满意的答案。
解决方案
推荐阅读
- imagemagick - 使用 ImageMagick 和 CloudConvert 调整图像大小
- html - Facebook、Twitter 图标请取消注释以获取链接
- java - 在 kotlin 中为功能接口抛出异常
- asp.net-core - 页面和操作明智的授权 Asp.Net Core Razor 页面
- bitmap - PPM 格式是行业标准吗?
- html - 为什么前缀 data-* 在 Angular 9 中不起作用?
- javascript - JavaScript:在带有链接的按钮上播放音频
- java - 在 Docker Swarm 中运行集群时暴露 Nifi UI
- javascript - 对地图函数中的第一个元素做不同的事情
- java - 比较路径 (Windows/Linux)