受限的优化用法 - 为社区服务组织创建最佳的志愿者计划



我是一名大学生,他自愿担任当地社区服务组织的计划经理。我的工作的一部分涉及将志愿者计划(通过文本和电子邮件提交给我)与Tutee时间表(由教师通过Google表格提交)。在过去的两年中,我一直将所需的时间插槽与志愿者的可用性与Excel表和颜色编码相匹配。到目前为止,这很容易,因为我收到了相对少量的导师请求和志愿者注册。

在过去的两个月中,我努力地在我管理的学校中发展了辅导计划。这个学期,我收到了25多名学生的18个请求表。匹配志愿者为此手动安排时间安排,许多人将花费数小时(如果不是几天)才能完成。考虑到我的工作负担,我认为必须有一种更好的方法来解决此问题。

我很好奇,如果所有人都有受限的编程经验可以帮助我(1)解决我的调度问题,或者(2)推荐可以提供帮助的软件。下面,我将更详细地概述调度过程,并列出调度班次时必须考虑的约束。

调度过程

我要求我的志愿者以这样的格式向我发送他们的星期一至周四的可用性:

m:9:30-12:00T:2:00-4:30W:12:00-1:30TH:10:00-11:30

学校距离酒店有15-20分钟的车程,因此我依靠"驾驶员"来拼车其他志愿者1小时的班次。如果志愿者有汽车并且愿意拼车,那么我尝试与该驾驶员至少有相同可用性的其他志愿者匹配(鉴于汽车有足够的空间,并且老师要求一名老师在这段时间里)。

然后,我祈祷一位老师要求一位班将拼车的时间段。如果不是,那么拼车就不好,我必须手动提出另一种解决方案。

约束和变量

显然,制定时间表时有几个约束和变量。我将在下面尽可能多地列出:

  • 导师是"驱动程序"吗?
  • 如果导师是"驾驶员",他有多少个席位?
  • 驾驶员的可用性是否与任何请求的时间插槽相匹配?
  • 还有其他非驾驶教师与驾驶员具有相同的可用性吗?(即,是否有人可以与驾驶员拼车)
  • 拼车中的所有志愿者是否都有一个可以辅导的学生?
  • 教师是否要求个人或小组辅导(即一个或多个学生的一个或多个导师)?
  • 如果是,老师要求多少个导师?
  • 记住,一位志愿者可以辅导多个学生

这是我可以提出的约束和变量的小列表。

那么,任何人都可以为这个调度问题提供解决方案吗?一个不了解约束编程的人能够使用optaplanner解决这个问题吗?

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

您可以使用optaplanner解决此问题,但是感觉很小可能是一个更好的选择。我的观点是,如果您描述了解决方案的必需属性,而不是实现工作流和算法来管理变量,约束,输入数据的解析器等,则在optaplanner中,

> >

如果一个人没有限制满意度的经验,则可能会更简单 - 只需描述文本配置文件中允许/不允许的配置并运行求解器即可。您甚至可以提供一个简单的GUI来生成输入数据。