帮助热线的工作轮班计划程序

helpline-scheduler的Python项目详细描述


帮助热线的工作轮班计划程序

用python编写的代码使用CP-SAT Solver(约束编程-布尔可满足性问题求解器)结合约束和特殊需求,为志愿者找到最佳可能的计划。

Java版本正在开发中。

问题

安排志愿者参加为期一个月的热线服务。

有三种工作可以在同一天完成:

  • 电话值班:每天。
  • 聊天轮班:周一和周三。
  • 观察员轮班:任何一天。

限制条件:

每位志愿者的属性:

  • 可用天数。
  • 功能:做电话,聊天,两者兼而有之,或观察训练的目的。
  • 周末最多换班。
  • 他们的班次是否必须在不同的星期。
  • 他们是否欢迎观察员。
  • 他们是否想单独工作。
  • 他们是否还不能单独工作。
  • 他们不想与之共事的人的列表。

每个志愿者必须有4天的轮班时间。

优先级:

  1. 每天至少有一名志愿者。
  2. 填补聊天轮班。
  3. 即使是在打电话的时候也要有第二个志愿者。
  4. 在只有电话轮班的日子雇佣观察员。

目标:

最大填充位移。


安装

需要64位python 3.7

pip3 install helpline-scheduler

用法

  1. 在config.py:en/hu/cn中选择您的语言

    或者,可以通过创建相应的data_xx.csv和language_xx.py文件来创建xx语言扩展名。

  2. 将相应的数据/data_xx.csv文件导出到电子表格中,填写数据,然后导出回该文件。

  3. 从其目录执行程序:

python3 schedule.py

输出

  1. 将结果打印到终端并将其保存到schedule-yyyy-mm-yyyymmdd-hhmm.txt中。
  2. 将结果保存到schedule-yyyy-mm-yyyymmdd-hhmm.csv中,可以方便地将其导入到电子表格中。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
iframe struts2中的java显示文档文件   java Graal SDK在应用程序运行时工作,但在单元测试中失败   java无法更新开放NLP模型   Selenium测试的javascript XPath标识   java Intellij不显示依赖项的源,但始终显示中JAR的反编译类。平方米   java如何在SWT中使用数据绑定启用和禁用按钮   bigdecimal Java:对2^1000的所有数字求和   java 安卓 tween动画:坐标在translate中是如何工作的?   java如何在Velocity中迭代列表项并显示预期结果   Java继承为什么这个toString打印BB而不是AB,AB?   java如何使程序等待设定的时间量?   java Eclipse是否有现成的GUI构建器?   java如何将公共EC代码点和曲线名称转换为公钥?   java Selenium 3 InternetExplorerDriver设置   java与Junit4兼容。十、   java有没有办法在Solr中实现IntRangeField?   java Spring数据JPA审核在Spring启动项目中的更新期间不起作用   Java代码重构问题   基于Java行中的单词比较文本行的字符串   java NumberFormatException在解析整数时抛出