我浏览了谷歌的教程,我似乎理解了大部分代码。我的问题是他们只根据硬约束选择解决方案。大多数论文也使用软约束,每个约束都有它的系数。所有约束的总和乘以它们的系数会产生花名册的成本,因此目标是最小化这个值。我的问题是,如何将其添加到代码中?
# Create the decision builder.
db = solver.Phase(shifts_flat, solver.CHOOSE_FIRST_UNBOUND,
solver.ASSIGN_MIN_VALUE)
# Create the solution collector.
solution = solver.Assignment()
solution.Add(shifts_flat)
collector = solver.AllSolutionCollector(solution)
solver.Solve(db, [collector])
我不确定决策生成器做了什么(或它的参数),也不知道solver.Assignment()
,也不solver.AllSolutionCollector(solution)
。
我唯一发现的是这个,但我不知道如何使用它。(也许打电话solver.Minimize(cost, ?)
而不是分配?)