【问题标题】:CPLEX - getting minimum of a set of variables over a conditionCPLEX - 在一个条件下获得一组变量的最小值
【发布时间】:2013-06-18 08:28:22
【问题描述】:

我必须使用 CPLEX Java API 解决以下问题:

我需要编写一个条件,该条件将返回一组整数变量中的最小值(比如 x[i], i=1,2,...,n),但只考虑正数。

换句话说:

最小{x[i] | x[i]>0}

我知道 CPLEX 具有最小功能,但问题是如何将上述条件传递给它。

【问题讨论】:

  • “返回”是什么意思?你想用这个做什么?使用 min{x[i] | 的值x[i]>0} 在约束或目标中?
  • 实际上“返回”是指将结果分配给出现在其他约束中的辅助变量。假设有一个条件 y = min{x[i] | x[i]>0} 还有一个:y+1

标签: cplex


【解决方案1】:

创建单个连续变量。添加此新变量必须

【讨论】:

    【解决方案2】:

    TimChippingtonDerrick 的答案是缺少连续变量的非负约束。此外,该方法不适应 OP 的原始目标函数。

    这样做的一种(昂贵的)方法是引入额外的二进制变量,每个整数变量一个,并编写大 M 约束:

    x[i] >= y >= x[i] - M(1-z[i])
    
    SUM(i,z[i]) = 1
    

    【讨论】:

    • 你能解释一下你的方法吗?
    猜你喜欢
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 2018-02-15
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    相关资源
    最近更新 更多