首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >任意逻辑:数据集resource_unit_states_log

任意逻辑:数据集resource_unit_states_log
EN

Stack Overflow用户
提问于 2021-12-31 12:59:01
回答 1查看 92关注 0票数 0

我在Anylogic中创建了一个简单的模型(参见第一个附件)。在服务中捕获资源单元W1,在服务1中捕获资源单元W2,服务和服务1的延迟时间均为5分钟。源间到达时间为10 time,源1到达时间为6 time。

现在我想分析这两个资源单元的使用状态,但是在dataset resource_unit_states_log中只有状态"usage_busy“被记录。是否也有可能在此数据集中记录使用状态“空闲”?在稍后的评估中,我想知道的确切日期和时间,当资源处于“空闲”状态时。目前,我只能从数据集中读取状态“繁忙”的确切日期和时间(见第一附件中的屏幕快照)。理论上,我可以根据现有的值手动计算“空闲”状态的日期和时间,但这将花费数千个日期的很长时间。

另一种尝试是使用时间图跟踪“空闲”状态。如果使用W1.time()作为x轴值,则得到模型时间(例如0、1、2.)在数据集中。但是我想要的是数据集"resource_unit_states_log“中的确切日期,比如27-12-2021 00:06:00。

有人知道我如何解决这些问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-31 13:48:07

AnyLogic内部表/日志不可修改。他们就像现在一样。如果您想要任何其他格式的数据,则需要使用您自己的数据收集函数/代码来完成。在您的例子中,第二种方法非常好。你每分钟都在收集信息,你可以把它导出。我通常用Python进行后处理。我处理了数百万行,这需要几分钟;在您的例子中,数千行应该需要几秒钟。我会这样做:

  1. 将数据(在第二个绘图方法中)导出到Excel中。数据应该如下所示:

  1. 打开木星笔记本(或任何IDE).

  1. 将数据读取到Python中。假设您已将数据保存为data.xlsx.

  1. 输入您的start_datetime,即模拟的开始日期和时间。

然后,只需将数据中的分钟添加到start_datetime.中即可。

  1. 将修改后的数据写入一个名为data_modified.xlsx的新Excel文件中。它将如下所示:

以下是完整的代码:

代码语言:javascript
复制
import pandas as pd
import numpy as np
from datetime import timedelta
from datetime import datetime as dt


df=pd.read_excel('data.xlsx')

#Input your start date and hour below:
start_datetime='2021-12-31 00:00:00'


df['datetime']=start_datetime
df['datetime'] = pd.to_datetime(df['datetime'])

df['datetime']=df['datetime'].dt.strftime('%d-%m-%Y %H:%M:%S')
df['datetime'] = pd.to_datetime(df['datetime'])

df['time_added'] = pd.to_timedelta(df['x'],'m')
df['datetime']=df['datetime']+df['time_added']
del df['time_added']

df.to_excel('data_modified.xlsx')

另一种方法:,您可以在服务块中使用单元格、On seize unitOn exit,并通过使用函数time()记录资源被捕获和释放的时间,并将这些信息写入数据集中。那就算算吧。

您还可以使用AnyLogic的一些转换函数,如下所示:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70542559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档