Mun*_*der -3 javascript php mysql coldfusion jquery
因此,我试图找出最有效的方法来自动计算员工休假并确保最大的覆盖率.我在MySQL上使用ColdFusion和Javascript,但是如果这是一个更好的平台,可以轻松添加jQuery或切换到PHP.
根据要求.这是一家拥有50名员工的公司,每周工作7天,从0600和1200开始有2-10个小时的班次(每班25名员工).每位员工工作4天,然后每7天休息3天(周日至周六).他们休假的每一周都应该进步 - 这意味着他们每周都不会休息.员工幸运地度过了这一年.
目前的问题是转移覆盖率不一致.目前,星期一有很多员工,然后周四几乎没有人员,因为他们如何轮流休息.我想找出自动计算最佳覆盖率的最佳方法.
关于如何最好地进行的任何想法?
编辑:哎哟!所以我想代码是你想要看到的而不是理论数学.
我不熟悉ColdFusion,即使我是这样,这个问题也足够复杂,因此我无法破坏一些正常运行的代码.但是如果你原谅这个,我会为你提供一些概念性的想法(用JS来解释).
首先给每位员工4天
var jim = 4;
var bob = 4;
var tom = 4;
Run Code Online (Sandbox Code Playgroud)
然后由最不可能可调度的员工对班次进行排序(我假设这是在您的数据库中,或者如果不是,则计算起来并不难).
var thursday = 2;
var monday = 3;
Run Code Online (Sandbox Code Playgroud)
确定哪些员工可用.
var thEmployee = ['jim', 'tom'];
var monEmployee = ['jim', 'bob', 'tom'];
Run Code Online (Sandbox Code Playgroud)
获得所有这些信息后,按可能可用员工的升序安排最短时间的员工.
shifts.foreach(function(){
var smallest = 'monday';
days.foreach(function(){
var current = //dammit, I forget how to specify this in JS, use your imagination, this is just an idea anyway
if (current < smallest) {
//these vars are placeholders for the actual function that returns the count of the potential employees for the day
smallest = current
}
});
});
Run Code Online (Sandbox Code Playgroud)
这是找到潜在员工数量最少的转变的功能.你做了一些similer,找到剩余天数最少的员工(目前全部都是4,所以它会抓住Jim).你安排他.然后星期一,吉姆将是最不可用的人,它会再抓住他.但是,如果他们之间的星期二说他们之间,并且吉姆星期二没有,那么它会抓住鲍勃,那么鲍勃和吉姆在星期一安排时都是3.
基本上发生的事情是该程序说:"这个人可能无法在以后安排,让我们现在安排他们,而不是那些可以采取后续插槽的人".显然这是非常基本的,算法需要一些调整以避免死亡本身,但也许这会给你一个想法,将帮助你解决问题.
| 归档时间: |
|
| 查看次数: |
826 次 |
| 最近记录: |