在这篇文章的第一个问题之后,我仍在努力改进我的代码。在
为了更好地表达自己,我的目标是找到离给定日期最近的“时间段”。在
“时隙”代表我的“工厂”的开放时间(因此不包括周末和节假日)。在
Date start_time end_time
-----------------------------------------------------------------
2017-01-02 | 2017-01-02 07:00:00 2017-01-02 17:00:00
2017-01-03 | 2017-01-03 07:00:00 2017-01-03 17:00:00
2017-01-04 | 2017-01-04 07:00:00 2017-01-04 17:00:00
2017-01-05 | 2017-01-05 08:00:00 2017-01-05 17:00:00
2017-01-06 | 2017-01-06 08:00:00 2017-01-06 17:00:00
2017-01-09 | 2017-01-09 08:00:00 2017-01-09 17:00:00
..... | ......
这些数据存储在740行表中(这是我两年的开张计划表)
为了简单起见,我收到客户的订单,必须检查何时可以执行。在
例如,在'2017-01-02 10:00:00'
上收到的订单可以立即处理。
在'2017-01-02 17:30'
上收到的订单必须等到'2017-01-03 07:00'
处理。在
如果订单是在周末收到的,则相同:
'2017-01-07 17:30'
-->;'2017-01-09 07:00'
我必须检查成千上万的订单在一个优化算法,我正在寻找最好的可能的方式,为这个搜索。在
我开始使用Panda表实现一个代码,但是速度非常慢(下面的代码)。在
然后我使用numpy数组来加速(它工作得很好),但它仍然很慢。在
在进一步的搜索中,我使用了sqlite,但没有得到很好的结果。在
因此,如果有任何有经验的建议可以给它很大的帮助!在
谢谢
附言:我尽力编辑了这篇旧帖子。希望不要让人困惑。。。在
我正在为我的工厂建立一个生产计划,我用Python和Pandas编写了它。
我有一个Pandas数据框,其中包含我的员工的工作时间(和工作日)。在
另一方面,我有全天候工作的机器。在
我想要的是建立一个函数,在给定的日期内给我一个员工开始新工作的日期(以及他的一天结束的时间)。但有人可以等到第二天早上开始生产,或者等到第二天晚上才开始生产。在
例如:
^{pr2}$我写得很慢,但它写得很慢) 在
def opening_hours(x):
staff_working_time_start = df_staff_planning[df_staff_planning[u'Start time'] >= x][u'Start time'].min()
staff_working_time_end = df_staff_planning[df_staff_planning[u'End time'] >= x][u'End time'].min()
if staff_working_time_end <= staff_working_time_start:
staff_working_time_start = x
return staff_working_time_start, staff_working_time_end
返回工作时间的开始时间和结束时间。
对少数日期进行评估是可以的,但是由于我的计算要进行大量迭代(大于5000次),所以速度相当慢。在
我事先非常感谢你的帮助
最后使用对分法找到了一个有趣的解决方案:
结果我的问题快了75倍。。。在
相关问题 更多 >
编程相关推荐