python - 通过最小化特定变量的总和来优化人员调度
问题描述
所以,这可能有点远,因为这是一个相当复杂的问题,或者至少对我来说是这样。
我的一般问题是优化员工时间表。我有项目信息和员工信息等输入。每个员工都是四个团队之一的成员,并且具有特定的技能组合和每周特定数量的可用时间。项目具有所需的团队、技能组合、开始和结束日期、预计完成时间以及与之相关的优先级。
我开发了一个启发式模型,该模型将这些特征考虑在内,并考虑了以下约束:员工不能在每周的可用时间内工作,项目必须由指定团队内的员工完成,项目必须在开始 - 结束日期完成大体时间。我开发的模型肯定不是最优的,它只是将估计的小时数除以工作人员的数量,然后将该数字除以完成每个员工每周所需的小时数所需的周数。
我现在正试图弄清楚如何优化它。我将举一个例子来解释我是如何考虑这样做的。我的目标函数是最小化每个员工的时间过度分配的总和。
假设我有 3 个项目要安排,我有 5 名可能满足项目技能和团队要求的员工:
假设我有一个计数器来衡量,我该如何减少过度分配的数量?我知道纸浆可能是最好的包,但我需要一些关于如何开始的指导。
TLDR;我有一个功能启发式,它考虑了约束,我想通过最小化目标函数来优化它。非常感谢任何线性编程或一般建议。
重要说明:计划的项目数量各不相同,因此如果我有 x 个要计划的项目,我无法进行 x for 循环。
解决方案
推荐阅读
- android - Kotlin Android debounce
- java - TextToSpeech 无法正确停止
- java - 如何根据用户的触摸移动图像?
- elasticsearch - 跨多个索引/过滤器的查询的function_score未按预期工作
- c# - relaxed Security AppiumService
- c - OpenMP 中的 threadprivate 错误
- php - FPDF 正确打印 NumberFormatter 类给出的货币符号
- c# - Json.net反序列化具有接口属性的复杂类
- chatbot - 聊天机器人的业务验证
- java - 除非明确指定,否则如何在默认情况下将 Spring Data JPA 从 camelCase 命名为 snake_case?