【问题标题】:Formulating a bilinear optimization program as an integer linear program将双线性优化程序公式化为整数线性程序
【发布时间】:2013-11-08 05:18:28
【问题描述】:

在我的工作中,我遇到了以下问题:给定一个相似度矩阵 D,其中 $d_{i,j} \in \Re$ 表示对象 $i$ 和 $j$ 之间的相似度,我想选择 $k$ 个对象,对于 $k \in {1, \dots, n}$,以最小化所选对象之间的相似性的方式。我第一次尝试正式制定这个问题是使用以下整数程序:

$\minimize$ $d_{1,2}X_1X_2 + d_{1,3}X_1X_3 + \dots + d_{1,n}X_1X_n + d_{2,1}X_2X_1 + \dots + d_{n, n-1}X_nX_{n-1} $

使得 $X_1 + X_2 + \dots + X_n = k$ 和 $X_y \in {0,1}$,对于 $y=1,\dots,n$

在上面的程序中,$X_y$ 表示对象$y$ 是否被选中。显然,上述程序不是线性的。我试图通过使用变量 $X_{1,2} $ 使目标函数成为线性的,这表明是否同时选择了对象 $X_1$ 和 $X_2$。但是,我正在努力制定必须精确选择 $k$ 个对象的约束,即先前的约束 $X_1 + X_2 + \dots + X_n = k$。

由于我不是数学编程方面的专家,我想知道您是否可以帮助我。

提前感谢您! 万事如意,

亚瑟

【问题讨论】:

  • Stack Overflow 不支持 Latex (正如您在发布问题之前从预览中看到的那样),请适当编辑。另外,我认为这个问题不适合Stack Overflow,但我不确定它属于哪里(也许检查the list of SE sites)。

标签: integer-programming


【解决方案1】:

你是在正确的道路上,只是错过了一件事:

如果对象 i 被选中,则 x_i 为 1,否则为 0。

如果对象i & j 都被选中,则让y_ij 为1,否则为0

IP如下:

最大化

sum d_ij y_ij

s.t.

sum x_i = k

x_i + x_j - 1 <= y_ij for all i<j

x & y binary variables

看起来很奇怪的链接约束说y_ij = 1 iff x_i + x_j =2

每对只定义一个 y 变量!

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多