我想用SimPy建立一个生产网络的仿真模型,包括以下关于时间的特性:
为此,我希望构造一个结合超时的文档中给出的BroadcastPipe,以使对象在它们不工作的日子中等待(因为这些设备需要额外的逻辑来建模轮班)。这个BroadcastPipe只会计算每一天(假设每天24*60分钟),然后说“今天是星期一,大家”。然后,这些物体(工厂、轻型和重型卡车)将单独处理这些信息并采取相应行动。
现在,我想知道是否有一种优雅的方法将模拟时间链接到常规Python日历对象,以便轻松地访问一周中的几天。这将有助于清晰和增强,如银行假日和不同的开始日期。你有什么建议怎么做吗?(或关于如何更好地建模的一般性建议?)提前感谢!
发布于 2015-08-19 20:04:02
我通常设置一个开始日期,并将其定义为等于模拟时间(Environment.now) 0。由于SimPy的模拟时间没有固有的单位,我也定义它是以秒为单位的。使用箭头,我可以轻松地从当前的模拟时间计算出实际的日期和时间:
import arrow
import simpy
start = arrow.get('2015-01-01T00:00:00')
env = simpy.Environment()
# do some simulation ...
current_date = start.replace(seconds=env.now)
print('Curret weekday:', current_date.weekday())发布于 2015-08-19 13:32:53
您可以使用日期时间模块并创建一个day_of_week对象,但仍然需要计算经过的时间:
import datetime
# yyyy = four digit year integer
# mm = 1- or 2-digit month integer
# dd = 1- or 2-digit day integer
day_of_week = datetime.datetime(yyyy, mm, dd).strftime('%a')
if day_of_week == 'Mon':
# Do Monday tasks...
elif day_of_week == 'Tue':
# Tuesday...https://stackoverflow.com/questions/32096777
复制相似问题