当前位置: 首页 > 知识库问答 >
问题:

Optaplanner项目作业调度:周末和节假日

宦正诚
2023-03-14

正如我在前一个问题中提到的,我正在使用优秀的OptaPlanner库创建一个应用程序,该应用程序可以帮助定制job shop进行项目调度。该应用程序具有以下要求:

“除非经理特别批准,否则申请不得在任何给定的周末或假日安排工作。”

我很好奇如何更改我的域模型或评分函数以纳入此要求。一个基本想法是将全球可再生资源(即员工)的容量从每月30天减少到每月22天(包括周末)。然而,我已经看到,这是一种幼稚的做法;如果经理希望安排员工在某个特定的周六来,那么将员工的工作时间增加到23天并不意味着他们将安排在该周六。事实上,据我所知,由于容量在我们的GlobalResource模型中只是一个简单的整数,所以它不知道具体是哪几天。在我看来,我搜索的解决方案并不是将“容量”定义为整数,而是一个二进制值数组,其中:

容量[d]=x,其中d是当月的一天,x是资源的可用性(1或0)。假设没有管理者希望在给定的周六安排工作,那么每个全球可再生资源在该特定周六的产能将为0。

这可能与OptaPlanner示例中给出的护士排班问题重叠。或者,也许我从完全错误的角度来处理这个问题。非常感谢任何解决这个问题的提示。

共有1个答案

淳于煌
2023-03-14

我将首先添加一个域类Manager审批来捕获额外的数据输入,即作业和周末日期之间的审批关系。

对于周四至周二未经批准的工作,周末不算完成工作。对于一份从星期四到星期二的批准工作来说,这更为棘手,因为从理论上讲,计划员可以决定是否使用星期六(这将影响工作是否在星期二或星期一结束)。所以听起来你需要一个额外的计划变量来捕捉这种差异。。。

至于约束,我希望使用周末日期会产生(高于正常值的)软约束权重。

 类似资料:
  • 有人能解释一下如何在OptaPlanner中为项目作业调度问题建模我自己的数据吗?我看到有xml文件、txt文件和很多。mm文件(j1010_1.mm),我不知道如何对自己的输入建模。 样本A_1中的这些数字是什么。txt是什么意思? 2 0 10 j10。毫米/j1011_7。毫米4 19 j10。毫米/j1060_2。毫米4 16-1-1-1 我想是 2-项目数量0-发布日期10-关键路径持续

  • 问题内容: 我需要计算两个日期之间的天数(工作日),不包括周末(最重要)和假期 但是,我不知道该如何在MySQL中进行操作,我发现本文计算了两个日期之间的天数,不包括周末(仅MySQL)。我无法弄清楚如何在mysql中进行功能查询,能否提供一些有关如何使用mysql查询实现此功能的信息。如果我想念什么,请告诉我。 [编辑] 问题答案: 您可能要尝试以下操作: 计算工作日数(从此处获取) 这为您提供

  • 问题内容: 如何获得两个工作日之间的工作天数,即不包括周末和节假日?假期是指法律认可的假期。由于每个国家/地区的假期不同,因此必须取决于国家/地区。 例如,由于介于两者之间的周末,应返回而不是。 我已经看过Jollyday和ObjectLab- Kit ,但是我不能让它们满足我的需要。我的意思是,他们两个都有很多有趣的方法,但是找不到类似…的东西。 问题答案: 最后是基于API 的解决方案: 致电

  • 问题内容: 我使用日期选择器选择约会日期。我已经将日期范围设置为仅下个月。很好 我想从可用选项中排除周六和周日。能做到吗?如果是这样,怎么办? 问题答案: 有一个选项,该选项需要为每个日期调用一个函数,如果允许日期,则返回true,否则,则返回false。从文档: ShowShow之前 该函数将日期作为参数,并且必须返回一个数组,该数组的[0]等于true/false,表示此日期是否可选,默认表示