Linear programming 如何在混合整数规划中对曼哈顿距离进行编码

Linear programming 如何在混合整数规划中对曼哈顿距离进行编码,linear-programming,Linear Programming,让我们有两个点,(x1,y1)和(x2,y2) dx=| x1-x2| dy=| y1-y2| D_曼哈顿=dx+dy,其中dx,dy>=0 我有点纠结于如何为| x1-x2 |取x1-x2正,大概我引入了一个表示极性的二进制变量,但我不允许将极性开关乘以x1-x2,因为它们都是未知变量,这将导致二次型 如果要最小化|x |的递增函数(当然也要最大化递减函数), lp中任何数量x的aboslute值始终可以作为变量absx,例如: absx >= x absx >= -x 它之所以

让我们有两个点,(x1,y1)和(x2,y2)

dx=| x1-x2|

dy=| y1-y2|

D_曼哈顿=dx+dy,其中dx,dy>=0


我有点纠结于如何为| x1-x2 |取x1-x2正,大概我引入了一个表示极性的二进制变量,但我不允许将极性开关乘以x1-x2,因为它们都是未知变量,这将导致二次型

如果要最小化
|x |
的递增函数(当然也要最大化递减函数), lp中任何数量
x
的aboslute值始终可以作为变量
absx
,例如:

absx >= x
absx >= -x
它之所以有效,是因为值
absx
将“趋向”其下限,因此它将达到
x
-x

另一方面,如果要最小化
|x |
的递减函数,则问题不是凸的,不能建模为
lp

对于所有这些类型的问题,最好添加一个简化版本的目标问题,因为这通常适用于所有这些建模技术

编辑

我的意思是,这类问题没有通用的解决方案:一般来说,你不能在线性问题中表示一个绝对值,尽管在实际情况下这是可能的

例如,考虑问题:

max y
  y <= | x |
  -1 <= x <= 2
  0 <= y  
如果
x>=0
,则始终验证这些约束,否则执行
ax=-x

 ax <= x + M * (1 - sx)
 ax >= x - M * (1 - sx)
 ax <= -x + M * sx
 ax >= -x - M * sx
ax=-x-M*sx

这是“大M”方法的变体,该方法通常用于线性化二次项。当然,你需要有一个所有可能值的上界
x
(在你的情况下,它将是你的距离值:如果你的点位于某个有界区域,通常情况下就是这样)

实际上,距离只是受约束的,成本函数是间接相关的变量。因此,它是最小值还是最大值还不知道。在这种情况下,如果可能的话,你需要发布你的问题(或者至少是一个简化的版本):请参阅上面的我的编辑。很抱歉弄乱了!如果距离有界,则二进制变量实际上是可能的,请参见第二次编辑;)哦,是的,这很有效。如果x=-1,那么sx是0。然后我们有:顶部的一对约束变成ax=-1-M,这是真的,底部的一对约束变成ax=1,这是真的,并将ax压缩为1