混合整数线性规划:如何在数组中找到第二个最大值

时间:2017-10-20 16:33:05

标签: linear-programming

我正在尝试确定在MILP 中值中找到第二个最大值所需的逻辑。

找到最大值很容易: forall(val in Array): maxVal >= val

然而,第二大价值更难(如果不可能?)。 我尝试过以下方法: forall(val in Array | val != maxVal): secondMaxVal >= val

这个逻辑在MILP中失败了(我用Mosel编程 - FICO Xpress语言),也许是因为我的Array实际上有两个维度而包含决策变量。由于这两个维度,我的程序中的逻辑看起来更像: forall(i in Index1): maxVal >= sum(j in Index2) Array(i, j) forall(i in Index1 | sum(j in Index2) Array(i, j) != maxVal): secondMaxVal >= sum(j in Index2) Array(i, j) 请注意,|被解释为"其中"。该程序在!=语句处调用,称之为invalid logic - 可能是因为Array包含决策变量,即值由目标函数确定,这有效地最小化了{{1}中的值} {} Array中的所有值都是> 0

是否可以在MILP中的决策变量数组中定义第二个最大值?

0 个答案:

没有答案