求解绝对值的最小值
这么简单的知识点,度娘都搜不到,自己整理下,后续持续扩充!
如题
已知:
5<=x<=6
9<=y<=10
x,y都为整数
求:
min(|x-y|)
解法1 :
只需要声明个中间变量c,使得
约束:
c >= x - y
c >= y - x
c >= 0 # 可省略
目标:min(c)
解法2(可以转化成解法1,好处是可以还原abs前与后):
只需要声明2个中间变量c_p、c_n,使得
约束:
c_p == max(0,x-y) # 绝对值里正的部分
c_n == max(0,y-x) # 绝对值里负的部分
x-y == c_p - c_n # 正负部分与原始值的关系(若只求abs,可省略)
目标:min(c_p + c+n) # 正负部分之和就是绝对值
【补充下】
有的框架里没有max运算符,替代方法:
a = max(0,b)
b ∈[-100,100]
=>
a >= 0
a >= b
a <= 100
a >= -100
=>
a >= 0
a <= 100
目标:max(a)