如何线性化 LP 中两个决策变量的乘积之和?
How to linearize the sum of a product of two decision variables in LP?
作为线性规划和 Gurobi 的新手,我正在处理一个整数线性规划,其中我有两个 binary decision 变量定义为B[u_v、x_y]和A[u_x],我正在尝试通过 Python 在 Gurobi 中实现此约束,但我对如何翻译 两个决策变量的乘积之和定义在这个循环中:
for each edge(u,v) in Set_of_edges:
for each vertex x in Set_of_vertices:
Sum_over(y) (B[u_v,x_y]) * A[u_x] == 1
从这个book开始,它必须被线性化,但我做不到。
任何人都可以阐明一些想法并为我提供一些见解吗?
谢谢
如果您有两个二进制变量 x
和 y
,您可以通过这些约束添加一个新的辅助二进制变量 z = x*y
:
z <= x
z <= y
z >= x + y - 1
由于我无法完成您的任务(不完整的伪代码),您将不得不使用新引入的变量自己完成剩下的工作 z
。
作为线性规划和 Gurobi 的新手,我正在处理一个整数线性规划,其中我有两个 binary decision 变量定义为B[u_v、x_y]和A[u_x],我正在尝试通过 Python 在 Gurobi 中实现此约束,但我对如何翻译 两个决策变量的乘积之和定义在这个循环中:
for each edge(u,v) in Set_of_edges:
for each vertex x in Set_of_vertices:
Sum_over(y) (B[u_v,x_y]) * A[u_x] == 1
从这个book开始,它必须被线性化,但我做不到。 任何人都可以阐明一些想法并为我提供一些见解吗?
谢谢
如果您有两个二进制变量 x
和 y
,您可以通过这些约束添加一个新的辅助二进制变量 z = x*y
:
z <= x
z <= y
z >= x + y - 1
由于我无法完成您的任务(不完整的伪代码),您将不得不使用新引入的变量自己完成剩下的工作 z
。