如何在LP求解器中编写此约束(逻辑和不存在)

时间:2017-07-01 07:12:38

标签: linear-programming lpsolve

是否可以在Lp解算器中编写这些约束?

我想检查两个矩形是否重叠? 我们假设有一个矩形,其左下角是(xk,yk),(wi,hi)分别是宽度和高度。同样,这个左下角有另一个矩形是(xl,yl)和(wj,hj)是宽度和高度。

我可以写一对(i,j)矩形,它们不会重叠,以便

There does not exist any J such that

  {xk < (xl+wj)^(xk+wi)>xl}^{yk<(yl+hj)^(yk+hi)>yl}

如何在Lp Solver中编写它,还是可以使用OR运算符?

由于

1 个答案:

答案 0 :(得分:1)

强制两个矩形i和j不重叠的标准方法是:

x(i)+w(i) <= x(j) or
x(j)+w(j) <= x(i) or
y(i)+h(i) <= y(j) or
y(j)+h(j) <= y(i)

这可以写成一组线性等式:

enter image description here

请注意,在比较所有矩形i和j时,您只需要对i&lt;学家需要谨慎选择大M常数。