gpt4 book ai didi

excel - 四旅制调度算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:50:19 25 4
gpt4 key购买 nike

我需要为四旅系统中的三类制编制轮类时间表。每个类次持续八小时。第一类从早上 6 点开始。第二类从下午 2 点开始。第三类从晚上 10 点开始。每个周期有 4 天 48 小时的休息时间。

下表显示了 20019 年 1 月的时间表。

enter image description here

“W”表示休息一天。

我会写一个函数来获取参数日期和轮类次数,并返回哪个旅有轮类。

例如:

getBrigadeNumber('2019-01-27',1); // should return 'III' for schedule above 

我完全不知道它是怎么写的。

我会用 VBA 写,但我也懂 php,

如有任何建议,我将不胜感激。

最佳答案

乍一看这个问题似乎很困难 - 三类制算法,但是当您意识到轮类是一些模式并且这些模式不会及时改变时,问题开始看起来很简单。

“将第一个月保存在一个数组中,以及我何时需要特定的一天。我可以计算它的循环” 的想法将解决问题。我想补充的是,没有必要使用循环。轮类模式每 16 天重复一次 - 1 月 11 日和 1 月 27 日的值相同。

对于特定的一天 d,您可以考虑以下伪代码来计算每个旅的类次:

D = The distance between a particular day d and January 1st in days.
A = Schedule for January 2019. A zero indexed array with 4 rows and 31 columns.

S1=A[1][D mod 16] will be the calculated shift number for brigade 1 at day d.
S2=A[2][D mod 16] will be the calculated shift number for brigade 2 at day d.
...
S4=A[4][D mod 16] will be the calculated shift number for brigade 4 at day d.

知道 S1、S2、S3 和 S4 就足以让 getBrigadeNumber 返回正确的值。

关于excel - 四旅制调度算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54392861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com