【问题标题】:Use AddMaxEquality to find the max sum of bools使用 AddMaxEquality 查找布尔值的最大总和
【发布时间】:2022-06-16 19:09:22
【问题描述】:

如何使用 AddMinEquality 和 AddMaxEquality 来平均分配作业?我的模型变量是布尔值,因此我尝试最小化布尔总和的最大值和最小值之间的差异。

assignments = []
for c in cars:
    a = model.NewIntVar(0, total_assignments, c)
    model.Add(a == sum(car_sch[(d, c)] for d in days))
    assignments.append(a)

assignment_min = model.AddMinEquality(assignments)  
assignment_max = model.AddMaxEquality(assignments)

model.Minimize(assignment_max - assignment_min)

    标签: python max min or-tools


    【解决方案1】:

    这是

    Model.AddMinEquality(target_var, [expressions])
    

    documentation

    【讨论】:

    • 为什么需要定义目标变量?在其他语言中,我们只是在一个值向量上运行 min 或 max 函数。它不能从表达式中继承吗?
    • 因为我不喜欢静默创建对象的 API。并且参数不是变量,API 到处都接受一个变量线性表达式 (a * x + b)。
    【解决方案2】:

    经过一些测试

    assignments = []
    for c in cars:
        a = model.NewIntVar(0, total_assignments, c)
        model.Add(a == sum(car_sch[(d, c)] for d in days))
        assignments.append(a)
    
    min_value = model.NewIntVar(0, total_assignments, "min val") 
    assignment_min = model.AddMinEquality(assignments) 
    max_value = model.NewIntVar(0, total_assignments, "max val") 
    assignment_max = model.AddMaxEquality(assignments)
    
    model.Minimize(max_value - min_value)
    

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-12
      • 2011-07-13
      • 2017-09-20
      相关资源
      最近更新 更多