志愿者轮班计划
volunteer-scheduler的Python项目详细描述
帮助热线的自愿工作轮班计划程序
用python编写的代码使用CP-SAT Solver(约束编程-布尔可满足性问题求解器)结合约束和特殊需求,为志愿者找到最佳可能的计划。
Java版本正在开发中。
问题
安排志愿者参加为期一个月的热线服务。
有三种工作可以在同一天完成:
- 电话值班:每天。
- 聊天轮班:周一和周三。
- 观察员轮班:任何一天。
限制条件:
每位志愿者的属性:
- 可用天数。
- 功能:做电话,聊天,两者兼而有之,或观察训练的目的。 周末最多换班。
- 他们的班次是否必须在不同的星期。
- 他们是否欢迎观察员。
- 他们是否想单独工作。
- 他们是否还不能单独工作。
- 他们不想与之共事的人的列表。
每个志愿者必须有4天的轮班时间。
优先级:
- 每天至少有一名志愿者。
- 填补聊天轮班。
- 即使是在打电话的时候也要有第二个志愿者。
- 在只有电话轮班的日子雇佣观察员。
目标:
最大填充位移。
安装
需要64位python 3.7
pip install helpline-scheduler
用法
在config.py:en/hu/cn中选择您的语言
或者,可以通过创建相应的data_xx.csv和language_xx.py文件来创建xx语言扩展名。
将相应的数据/data_xx.csv文件导出到电子表格中,填写数据,然后导出回该文件。
从其目录执行程序:
python schedule.py
输出
- 将结果打印到终端并将其保存到schedule-yyyy-mm-yyyymmdd-hhmm.txt中。
- 将结果保存到schedule-yyyy-mm-yyyymmdd-hhmm.csv中,可以方便地将其导入到电子表格中。