【问题标题】:Gurobi counting: set constraint to a percentage of grid valuesGurobi 计数:将约束设置为网格值的百分比
【发布时间】:2021-09-26 08:30:56
【问题描述】:

我们正在使用网格(二维数组)。在每个单元格中,我们计算一个双精度值。

有没有办法在 gurobi 中定义约束(或目标) 确保只允许所有单元格中的 5% 大于某个值?

【问题讨论】:

    标签: optimization mathematical-optimization gurobi


    【解决方案1】:

    计数需要(某种形式的)二进制变量。例如

     x(i,j) ≤ threshold + δ(i,j)⋅(U(i,j)-threshold) 
     sum((i,j),δ(i,j)) ≤ 0.05*gridsize
     x(i,j) ∈ [0,U(i,j)]
     δ(i,j) ∈ {0,1}
    

    这里U(i,j) 是x(i,j) (您的单元格值)的界限。如果您对x(i,j) 上的界限不了解,可以使用指标约束:

     δ(i,j) = 0 ==> x(i,j) ≤ threshold
     sum((i,j),δ(i,j)) ≤ 0.05*gridsize
     δ(i,j) ∈ {0,1}
    

    【讨论】:

    • 感谢您的快速回复。您可能有一个小代码示例吗?
    • 你有什么不明白的?
    • 不知道如何计算δ(i,j)和(U(i,j)?sum可以用GRBLinExpr计算吗?
    • δ 是一个二进制变量。 U 是您必须提供的 x 的上限。如果您不知道如何求和,请先学习一些 Gurobi 示例。
    • @ErwinKalvelagen 我们如何在 Gurobi 中使用 ==> 运算符?我们目前得到 δ(i,j) 的临时 grb 约束,但我们无法用它建立总和。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2021-10-30
    • 1970-01-01
    相关资源
    最近更新 更多