【问题标题】:resource allocation with penalties in chocochoco 中带有惩罚的资源分配
【发布时间】:2016-01-18 13:51:30
【问题描述】:

对于我的模型,我有大约 120 个人和 650 个任务。我现在想用 choco 3.3.3 分配这些任务。为此,我有一个 boolMatrix "assignment" 120x650,如果任务分配给该人,则为 1,否则为 0。但现在我必须以不同的标准进行优化,例如尽量减少加班,遵守人民的意愿等等。最好的方法是什么?

我的直觉:我看不到只累积惩罚的方法,所以我的直觉是有一个矩阵,其中每个人都有一系列“惩罚”,所以如果我有加班,惩罚[i][例如,0] 有罚分 5,如果他不想执行任务,罚分[i][1] 有罚分 4。然后我有一个 IntVar 分数,这是罚分的总和,我优化分数。

  1. 惩罚矩阵是否可行?
  2. 如何初始化这些变量?
  3. 是否可以在合理的时间内使用 choco 进行优化(每个可行的解决方案都有一个分数)?
    在护士调度示例中,使用了此策略: solver.set(IntStrategyFactory.domOverWDeg(ArrayUtils.flatten(assignment), System.currentTimeMillis()));
  4. 我应该使用什么策略?阅读 choco 用户指南并没有帮助我找到一个好主意...

【问题讨论】:

    标签: optimization modeling constraint-programming choco


    【解决方案1】:

    从您的问题看来,您尚未尝试实施和测试您的模型,因此我们帮不上什么忙。无论如何:

    Q1)我没有清楚地理解你的方法,但可能有很多方法可以走。通过测试,您将知道它是否解决了您的问题。也许您也可以使用整数变量 x,其中 x=k 表示任务 x 由资源 k 完成。您还可以使用集合变量来收集每个资源的所有任务。

    关于惩罚,在想知道如何使用库对其进行编码之前,您应该形式化如何以数学方式(根据问题规范)计算它们。更一般地说,在研究如何获得之前,您必须非常明确和正式地说明您想要获得的内容。

    Q2) 要创建变量,您应该使用 VariableFactory。初始域应包含所有可能的值。

    Q3)这取决于确切的问题和您的模型。据推测,是的,您可以在很短的时间内获得非常好的解决方案。如果您想要一个数学上最优的解决方案,并证明它是最优的,那么这可能会很长。

    Q4) 指定搜索策略不是强制性的。选择最好的需要经验和基准测试,因此您应该尝试其中一些来找出最适合您的情况。您还可以添加 LNS(一种本地搜索)来促进优化...

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多