34

我正在尝试建立一个线性程序,其中目标函数将额外的权重添加到max决策变量乘以它们各自的系数。

考虑到这一点,有没有办法在线性规划的目标函数中使用minmax运算符?

例子:

Minimize
    (c1 * x1) + (c2 * x2) + (c3 * x3) + (c4 * max(c1*x1, c2*x2, c3*x3)) 
subject to
    #some arbitrary integer constraints:
    x1 >= ...
    x1 + 2*x2 <= ... 
    x3 >= ...
    x1 + x3 == ...

请注意,这(c4 * max(c1*x1, c2*x2, c3*x3))是我关心的“额外重量”术语。我们让c4表示“额外权重”系数。另请注意,在此特定示例中x1x2、 和x3整数。

我认为以上内容可能超出了线性编程提供的范围。但是,也许有一种方法可以将其破解/重新格式化为有效的线性程序?

如果这个问题完全超出了线性规划的范围,也许有人可以推荐一个更适合这类问题的优化范式?(任何能让我避免手动枚举和检查所有可能的解决方案的方法都会有所帮助。)

4

1 回答 1

50

添加一个带有约束的辅助变量,比如 x4:

x4 >= c1*x1
x4 >= c2*x2
x4 >= c3*x3  
Objective += c4*x4
于 2012-05-29T04:23:40.367 回答