我的问题涉及一个业余爱好项目,我正在努力帮助我的妻子完成工作。
我意识到我所遇到的问题与许多线程中的问题都非常相似。但是,我似乎无法找到任何可以解决我需要考虑的具体差异的线程。
以下是问题的详细说明:
老师有很多学生,她教。每个学生每周至少需要两天课程(即周一+周三,周二+周四等)。课程是个人意义,一次只有一个学生和一个班级的老师。老师每天只需要午休一顿。午休时间可以是两个班级之间的任何时间 - 唯一的条件是:一天不能开始或在午休时间结束。每个学生在一周内提供他们的可用性(他们可以参加课程的可能时间段列表)。
到目前为止,这看起来像一个"常规"安排在线提供大量资料的问题。
但这里有一个问题:学生处于不同的年龄意味着他们的课程需要30或45分钟。年龄较小的学生'课程需要30分钟,而老人则需要30分钟。 - 45分钟。该算法的目标是为教师找到最佳的每周时间表。通过最优,我的意思是教师需要在学校花费最少的时间 - 所有课程背靠背,而不需要老师等待另一个学生。
我的第一次尝试是提供所有可能的学生排列'上课,午休时间和工作日但是对于3个学生的时间表,我想出了13个!排列(大约约60亿个排列)。这就是13:
的原因3名学生 - 每个2个班级
4个午休时间(每周4天,以保持数字较小)
3天休息(a"晚上"可以这么说)
上面给了我13个元素来尝试不同的排列。然而,在计算了因子之后,我给出了这个因素 - 在常规的"#34;#34;机。这只是3个学生,现实生活中的数据将接近9或10.显然,无意义的排列(2"夜晚"连续,2个班级为同一个学生同一天等等会被立即抛出,但仍然......
那时我意识到我不打算自己发明这个轮子。
我做了一些研究并遇到了Hopcroft-Karp算法。但是,我不认为它可以应用于混合时间段插槽场景(30/45分钟课程)。我错了吗?然后我找到了遗传算法的一些信息。但是,我不确定他们是否可以考虑混合的时间跨度条件?
我非常感谢我的研究应该向哪个方向发展。