algorithm - 制定时间表

标签 algorithm timetable

所以.. 最近有人要我为他们制定时间表,我同意了。当我坐下来做这件事时,我意识到这比我想象的要难。这只是一个时间表,白天或晚上轮类给 4 个人。

我想到了这样的事情:

for Monday to Saturday {
  for(i=0;i<people.length;i++){
    if (person[i].available()){
      person.worksDay()
      person is now not available.
    }
  }

  for(i=0;i<people.length;i++){
    if (person[i].available()){
      person[i].worksNight()
      person[i] is now not available.
    }
  }
}

因此,此算法背后的想法是,每一天,一个人都会被分配到白类或夜类。如果一个人不只是轮类工作并且他们不在假期,那么他们是有空的。它适用于周一至周六。正如您可能知道的那样,给定人员 A、B、C、D,分配将如下所示(如果没有人在度假):

Mon A B
Tue C D
Wed A B
Th  C D
Fri A B
Sat C D

我想这可行,但有点明显。问我的人想看到不同的选择。有没有更好的方法可以看到比这个选项更多的东西?或者甚至有一个程序可以为您执行此操作?

最佳答案

我认为你应该使用遗传算法,因为:

另请参阅:a similar questionanother one

关于algorithm - 制定时间表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3960622/

相关文章:

最适合人们从明确的项目列表中选择的算法,其中每个项目只有一个可用?

javascript - jQuery 获取类名列表并添加到隐藏表单

algorithm - 时间 block 分配算法,私有(private)教师->学生关系,最大化类(class)数量

php - 修改 PHP/Mysql 时间表

algorithm - 为 Pearson 相关算法绘制图形

algorithm - 路径图的最大权重独立集问题

java - 最有效地合并 2 个文本文件。

java - 用于显示时间表/日历/议程的 JSF 组件

java - 使用遗传算法(JAVA)的大学时间表计划项目

java - 验证自定义语法