2017-09-11 37 views
1

我是一名大学生,他是一名志愿者,担任当地社区服务组织的项目经理。我工作的一大部分是将志愿者时间表(通过文本和电子邮件提交给我)与tutee时间表(由教师通过Google表单提交)相匹配。在过去的两年里,我一直在使用excel表格和颜色编码手动匹配所需的时间段和志愿者的可用性。到目前为止,这很容易,因为我收到了相对较少的导师请求和志愿者注册。限制优化使用 - 为社区服务组织创建最佳志愿者计划

在过去两个月里,我一直努力在我管理的学校发展辅导计划。这个学期,我收到了超过25名学生的18份申请表。为许多人手工匹配志愿者日程安排需要几个小时(如果不是几天的话)完成。鉴于我的工作量,我认为必须有更好的方法来解决这个问题。

我很好奇,如果你们中的任何一个人都受限制的编程经验可以帮助我(1)解决我的日程安排问题或(2)推荐可以提供帮助的软件。下面我将更详细地概述调度过程,并列出调度转移时必须考虑的约束条件。

调度过程

我问我的志愿者给我自己的周一 - 周四可用性的格式像这样:

L:9:30 - 12:00 T:2:00 - 4:30 W:12:00 - 1:30 Th:10:00 - 11:30

学校是15-20分钟的车程,所以我依靠'司机'来拼车其他志愿者到他们1小时的班次。如果志愿者有一辆车并且愿意拼车,那么我试着让至少两名其他志愿者与该司机享有同样的可用性(鉴于该车有足够的空间,并且教师已经在该时段请求了导师)。

然后,我祈祷老师已经要求该导盲车的时间段的导师。如果没有,那么拼车并不好,我不得不手动想出另一种解决方案。

的制约因素和变量

显然,有一些制约因素和变量进行调度时发挥作用。我将列出尽可能多的我可以如下:

  • 是导师'司机'?
  • 如果导师是'司机',他有多少个座位?
  • 驾驶员的可用性是否与任何请求的时间段匹配?
  • 是否有其他非驾驶导师与驾驶员具有相同的可用性? (即有没有人可以与司机拼车)
  • 难道所有在拼车的志愿者都有一个可以辅导的学生吗?
  • 老师是否要求个人或小组辅导(即一个或多个学生的一位或多位导师)?
  • 如果是,请教老师请求多少名导师?
  • 记住,一个志愿者可以辅导多个学生

这是约束和变量的小单子,我可以拿出了我的头顶。

那么任何人都可以提供解决这个调度问题?没有约束编程知识的人能否使用OptaPlanner来解决这个问题?

感谢您给予阅读并提供建议。

回答

1

您可以使用OptaPlanner来解决这个问题,但感觉像Minizinc可能是一个更好的选择。我的观点是,在Minizinc的情况下,您描述了所需的属性的一个解决方案,而不是实施工作流程和算法来管理变量,约束,输入数据的解析器等,在OptaPlanner的情况下。

如果不具备约束满足的经验,它可能更简单 - 只需在文本配置文件中描述允许/不允许的配置并运行求解器即可。你甚至可以提供一个简单的GUI来生成输入数据。

+0

船长特伦基,谢谢你的回应。假设我必须在周三之前完成这些工作,并且只需要几门介绍性编程课程(基本上没有编程经验)。您认为我需要多长时间才能获得解决方案?另外,看到这个由Geoffrey De Smet编写的令人惊叹的程序(https://www.youtube.com/watch?v=sOWC4qrXxFk),它使用OpenShift。我想知道是否可以使用此预制程序。 – Perry

+0

@Perry我对OpenSwift了解不多。从我的角度来看,Minizinc比OptaPlannet简单多了,特别是如果你不熟悉编程。有没有经验可以在几天内解决这个问题 - 我不知道,这取决于很多事情。 – CaptainTrunky