优化 | 线性化:含绝对值的线性化

    • 非线性整数规划模型
      • Gurobi求解代码
    • 绝对值的线性化技巧
    • 利用上面的技巧进行线性化
  • 总结

作者:刘兴禄, 清华大学

清华-伯克利深圳学院,博士在读

欢迎关注我们的微信公众号 运小筹

非线性整数规划模型

考虑下面的非线性整数规划

max ⁡ 2 ∣ x 1 ∣ + ∣ x 2 ∣ s . t . ∣ x 1 ∣ + 2 ∣ x 2 ∣ ⩽ 8 − 5 ⩽ x 1 , x 2 ⩽ 5 \begin{aligned} \max \quad \,\,\,& 2|x_1| + |x_2| \\ s.t. \quad \,\,\,& |x_1| + 2|x_2| \leqslant 8 \\ & -5 \leqslant x_1, x_2 \leqslant 5 \end{aligned} maxs.t.​2∣x1​∣+∣x2​∣∣x1​∣+2∣x2​∣⩽8−5⩽x1​,x2​⩽5​

Gurobi求解代码

from gurobipy import *
model = Model('non-linear model')
x1 = model.addVar(lb=-5, ub=5, vtype=GRB.CONTINUOUS, name='x1')
x2 = model.addVar(lb=-5, ub=5, vtype=GRB.CONTINUOUS, name='x2')
x1_abs = model.addVar(lb=0, ub=5, vtype=GRB.CONTINUOUS, name='x1_abs')
x2_abs = model.addVar(lb=0, ub=5, vtype=GRB.CONTINUOUS, name='x2_abs')model.setObjective(2 * x1_abs  + x2_abs, GRB.MAXIMIZE)
model.addConstr(x1_abs + 2*x2_abs <= 8)
model.addGenConstrAbs(x1_abs, x1)
model.addGenConstrAbs(x2_abs, x2)model.optimize() print('x1:', x1.x)
print('x2:', x2.x)
print('x1_abs:', x1_abs.x)
print('x2_abs:', x2_abs.x)

求解结果

Solution count 1: 11.5 Optimal solution found (tolerance 1.00e-04)
Best objective 1.150000000000e+01, best bound 1.150000000000e+01, gap 0.0000%
x1: 5.0
x2: 1.5
x1_abs: 5.0
x2_abs: 1.5

绝对值的线性化技巧

我们引入两组辅助变量 x i + , x i − , ∀ i = 1 , 2 x_i^{+}, x_i^{-}, \forall i =1,2 xi+​,xi−​,∀i=1,2。其中
x i + = max ⁡ { 0 , x i } x i − = max ⁡ { 0 , − x i } \begin{aligned} &x_i^{+} = \max\{0, x_i\} \\ &x_i^{-} = \max\{0, -x_i\} \end{aligned} ​xi+​=max{0,xi​}xi−​=max{0,−xi​}​
因此,就有
x i = x i + − x i − ∣ x i ∣ = x i + + x i − \begin{aligned} &x_i = x_i^{+} - x_i^{-} \\ &|x_i| = x_i^{+} + x_i^{-} \end{aligned} ​xi​=xi+​−xi−​∣xi​∣=xi+​+xi−​​

这个比较容易理解,例如 x i = − 0.5 x_i = -0.5 xi​=−0.5, 则 x i + = 0 , x i − = 0.5 x_i^{+} = 0, x_i^{-} = 0.5 xi+​=0,xi−​=0.5, 因此有
x i = x i + − x i − = 0 − 0.5 = − 0.5 x_i = x_i^{+} - x_i^{-} = 0 - 0.5 = -0.5 xi​=xi+​−xi−​=0−0.5=−0.5;
∣ x i ∣ = x i + + x i − = 0 + 0.5 = 0.5 |x_i| = x_i^{+} + x_i^{-} = 0 + 0.5 = 0.5 ∣xi​∣=xi+​+xi−​=0+0.5=0.5。

拓展
之前的推文中,有小伙伴纠结这个转化是否等价。一个肯定的回答是:完全等价。
这里我给出证明:

命题
x + = max ⁡ { 0 , x } ( 1 ) x − = max ⁡ { 0 , − x } ( 2 ) \begin{aligned} &x^+=\max \left\{ 0,x \right\} \,\, \left( 1 \right) \\ &x^-=\max \left\{ 0,-x \right\} \,\, \left( 2 \right) \end{aligned} ​x+=max{0,x}(1)x−=max{0,−x}(2)​

x = x + − x − ( 3 ) ∣ x ∣ = x + + x − ( 4 ) \begin{aligned} &x=x^+-x^-\,\, \left( 3 \right) \\ &|x|=x^++x^-\,\,\left( 4 \right) \end{aligned} ​x=x+−x−(3)∣x∣=x++x−(4)​
互为充要条件。

证明
充分性:根据(1)(2),我们有
x = x + − x − ( 3 ) ∣ x ∣ = x + + x − ( 4 ) \begin{aligned} &x=x^+-x^-\,\, \left( 3 \right) \\ &|x|=x^++x^-\,\,\left( 4 \right) \end{aligned} ​x=x+−x−(3)∣x∣=x++x−(4)​
充分性得证
必要性: 根据(3)(4)我们有
( 3 ) + ( 4 ) = x + ∣ x ∣ = 2 x + → x + = x + ∣ x ∣ 2 ( 3 ) − ( 4 ) = x − ∣ x ∣ = − 2 x − → x − = − x − ∣ x ∣ 2 情况一: i f x ⩾ 0 , x + = x + ∣ x ∣ 2 = x + x 2 = x = max ⁡ { 0 , x } x − = − x − ∣ x ∣ 2 = − x − x 2 = 0 = max ⁡ { 0 , − x } 情况二: i f x ⩽ 0 , x + = x + ∣ x ∣ 2 = x − x 2 = 0 = max ⁡ { 0 , x } x − = − x − ∣ x ∣ 2 = − x − ( − x ) 2 = − 2 x 2 = − x = max ⁡ { 0 , − x } \begin{aligned} &\left( 3 \right) +\left( 4 \right) =x+|x|=2x^+\,\, \rightarrow \,\,x^+=\frac{x+|x|}{2} \\ &\left( 3 \right) -\left( 4 \right) =x-|x|=-2x^-\,\, \rightarrow \,\,x^-=-\frac{x-|x|}{2} \\ &\text{情况一:}if\,\,x\geqslant 0, x^+=\frac{x+|x|}{2}=\frac{x+x}{2}=x=\max \left\{ 0,x \right\} \\ &x^-=-\frac{x-|x|}{2}=-\frac{x-x}{2}=0=\max \left\{ 0,-x \right\} \\ &\text{情况二:}if\,\,x\leqslant 0, x^+=\frac{x+|x|}{2}=\frac{x-x}{2}=0=\max \left\{ 0,x \right\} \\ &x^-=-\frac{x-|x|}{2}=-\frac{x-\left( -x \right)}{2}=-\frac{2x}{2}=-x=\max \left\{ 0,-x \right\} \end{aligned} ​(3)+(4)=x+∣x∣=2x+→x+=2x+∣x∣​(3)−(4)=x−∣x∣=−2x−→x−=−2x−∣x∣​情况一:ifx⩾0,x+=2x+∣x∣​=2x+x​=x=max{0,x}x−=−2x−∣x∣​=−2x−x​=0=max{0,−x}情况二:ifx⩽0,x+=2x+∣x∣​=2x−x​=0=max{0,x}x−=−2x−∣x∣​=−2x−(−x)​=−22x​=−x=max{0,−x}​
因此,必要性得证。
综上,(1)(2)和(3)(4)互为充要条件,以上转化完全等价。

利用上面的技巧进行线性化

  • 我们根据

我们引入两组辅助变量 x i + , x i − , ∀ i = 1 , 2 x_i^{+}, x_i^{-}, \forall i =1,2 xi+​,xi−​,∀i=1,2。其中
x i + = max ⁡ { 0 , x i } x i − = max ⁡ { 0 , − x i } \begin{aligned} &x_i^{+} = \max\{0, x_i\} \\ &x_i^{-} = \max\{0, -x_i\} \end{aligned} ​xi+​=max{0,xi​}xi−​=max{0,−xi​}​
因此,就有
x i = x i + − x i − ∣ x i ∣ = x i + + x i − \begin{aligned} &x_i = x_i^{+} - x_i^{-} \\ &|x_i| = x_i^{+} + x_i^{-} \end{aligned} ​xi​=xi+​−xi−​∣xi​∣=xi+​+xi−​​

  • 由于目标函数为 max ⁡ \max max,因此还需要引入 x 1 abs x_1^{\text{abs}} x1abs​和 x 2 abs x_2^{\text{abs}} x2abs​来辅助,否则会出现:
  • x 1 = 0 , x 1 + = 5 , x 1 − = 5 x_1 = 0, x_1^{+} =5, x_1^{-}=5 x1​=0,x1+​=5,x1−​=5, 也满足 x 1 = x 1 + − x 1 − x_1 = x_1^{+} - x_1^{-} x1​=x1+​−x1−​
  • 因此需要把 ∣ x i ∣ = x i + + x i − |x_i| = x_i^{+} + x_i^{-} ∣xi​∣=xi+​+xi−​的部分也引入。

如果目标函数是 min ⁡ ∣ x ∣ \min |x| min∣x∣,我们可以引入辅助变量 y y y,并且加入约束
y ⩾ x y ⩾ − x \begin{aligned} &y \geqslant x \\ &y \geqslant -x \end{aligned} ​y⩾xy⩾−x​
然后把目标改为(也就是完整形式)
min ⁡ y s . t . y ⩾ x y ⩾ − x \begin{aligned} \min \,\,\, y \\ s.t. \,\,\, &y \geqslant x \\ &y \geqslant -x \end{aligned} minys.t.​y⩾xy⩾−x​
即可。 但是如果目标是 max ⁡ \max max的形式,上述情况不再适用。就可以用本文的方法。

得到,原模型可以线性化为

max ⁡ 2 ( x 1 + + x 1 − ) + ( x 2 + + x 2 − ) s . t . ( x 1 + + x 1 − ) + 2 ( x 2 + + x 2 − ) ⩽ 8 x 1 = x 1 + − x 1 − x 2 = x 2 + − x 2 − x 1 abs = x 1 + + x 1 − x 2 abs = x 2 + + x 2 − x 1 abs ⩾ x 1 x 1 abs ⩾ − x 1 x 2 abs ⩾ x 2 x 2 abs ⩾ − x 2 − 5 ⩽ x 1 , x 2 ⩽ 5 0 ⩽ x i + , x i − , x i abs ⩽ 5 , ∀ i = 1 , 2 \begin{aligned} \max \quad \,\,\,& 2(x_1^{+} + x_1^{-}) + (x_2^{+} + x_2^{-}) \\ s.t. \quad \,\,\,& (x_1^{+} + x_1^{-}) + 2(x_2^{+} + x_2^{-}) \leqslant 8 \\ & x_1 = x_1^{+} - x_1^{-} \\ & x_2 = x_2^{+} - x_2^{-} \\ & x_1^{\text{abs}} = x_1^{+} + x_1^{-} \\ & x_2^{\text{abs}} = x_2^{+} + x_2^{-} \\ & x_1^{\text{abs}} \geqslant x_1 \\ & x_1^{\text{abs}} \geqslant -x_1 \\ & x_2^{\text{abs}} \geqslant x_2 \\ & x_2^{\text{abs}} \geqslant -x_2 \\ & -5 \leqslant x_1, x_2 \leqslant 5 \\ & 0 \leqslant x_i^{+}, x_i^{-}, x_i^{\text{abs}}\leqslant 5, \forall i = 1, 2 \end{aligned} maxs.t.​2(x1+​+x1−​)+(x2+​+x2−​)(x1+​+x1−​)+2(x2+​+x2−​)⩽8x1​=x1+​−x1−​x2​=x2+​−x2−​x1abs​=x1+​+x1−​x2abs​=x2+​+x2−​x1abs​⩾x1​x1abs​⩾−x1​x2abs​⩾x2​x2abs​⩾−x2​−5⩽x1​,x2​⩽50⩽xi+​,xi−​,xiabs​⩽5,∀i=1,2​

下面我们用代码进行验证。

from gurobipy import *
model = Model('non-linear model')
x1 = model.addVar(lb=-5, ub=5, vtype=GRB.CONTINUOUS, name='x1')
x2 = model.addVar(lb=-5, ub=5, vtype=GRB.CONTINUOUS, name='x2')
x1_pos_abs = model.addVar(lb=0, ub=5, vtype=GRB.CONTINUOUS, name='x1_pos_abs')
x1_neg_abs = model.addVar(lb=0, ub=5, vtype=GRB.CONTINUOUS, name='x1_neg_abs')
x2_pos_abs = model.addVar(lb=0, ub=5, vtype=GRB.CONTINUOUS, name='x2_pos_abs')
x2_neg_abs = model.addVar(lb=0, ub=5, vtype=GRB.CONTINUOUS, name='x2_neg_abs')
x1_abs = model.addVar(lb=0, ub=5, vtype=GRB.CONTINUOUS, name='x1_abs')
x2_abs = model.addVar(lb=0, ub=5, vtype=GRB.CONTINUOUS, name='x2_abs')model.setObjective(2*(x1_pos_abs + x1_neg_abs) + (x2_pos_abs + x2_neg_abs), GRB.MAXIMIZE)
model.addConstr((x1_pos_abs + x1_neg_abs) + 2*(x2_pos_abs + x2_neg_abs) <= 8)
model.addConstr(x1 == x1_pos_abs - x1_neg_abs)
model.addConstr(x2 == x2_pos_abs - x2_neg_abs)
model.addConstr(x1_abs == x1_pos_abs + x1_neg_abs)
model.addConstr(x2_abs == x2_pos_abs + x2_neg_abs)
model.addConstr(x1_abs >= x1)
model.addConstr(x1_abs >= -x1)
model.addConstr(x2_abs >= x2)
model.addConstr(x2_abs >= -x2) model.optimize() print('x1:', x1.x)
print('x2:', x2.x)
print('x1_pos_abs:', x1_pos_abs.x)
print('x1_neg_abs:', x1_neg_abs.x)
print('x2_pos_abs:', x2_pos_abs.x)
print('x2_neg_abs:', x2_neg_abs.x)

求解结果为

Iteration    Objective       Primal Inf.    Dual Inf.      Time0    1.6000000e+01   3.000000e+00   0.000000e+00      0s2    1.1500000e+01   0.000000e+00   0.000000e+00      0sSolved in 2 iterations and 0.01 seconds
Optimal objective  1.150000000e+01
x1: 5.0
x2: 1.5
x1_pos_abs: 5.0
x1_neg_abs: 0.0
x2_pos_abs: 1.5
x2_neg_abs: 0.0

可见结果是一致的。

注意,如果约束里有一个不是绝对值,会出错的。经过了测试 x 1 + 2 ∣ x 2 ∣ ⩽ 8 x_1 + 2|x_2| \leqslant 8 x1​+2∣x2​∣⩽8,上述引入了 x 1 abs x_1^{\text{abs}} x1abs​的方法也是等价的。

  • 但是,下面的情形是不等价的,如果是 max ⁡ 2 ∣ x 1 ∣ + ∣ x 2 ∣ s . t . x 1 + 2 ∣ x 2 ∣ ⩽ 8 − 5 ⩽ x 1 , x 2 ⩽ 5 \begin{aligned} \max \quad \,\,\,& 2|x_1| + |x_2| \\ s.t. \quad \,\,\,& x_1 + 2|x_2| \leqslant 8 \\ & -5 \leqslant x_1, x_2 \leqslant 5 \end{aligned} maxs.t.​2∣x1​∣+∣x2​∣x1​+2∣x2​∣⩽8−5⩽x1​,x2​⩽5​
    然后我们转化成
    max ⁡ 2 ( x 1 + + x 1 − ) + ( x 2 + + x 2 − ) s . t . x 1 + 2 ( x 2 + + x 2 − ) ⩽ 8 x 1 = x 1 + − x 1 − x 2 = x 2 + − x 2 − ( 可以删去 ) − 5 ⩽ x 1 , x 2 ⩽ 5 0 ⩽ x i + , x i − ⩽ 5 , ∀ i = 1 , 2 \begin{aligned} \max \quad \,\,\,& 2(x_1^{+} + x_1^{-}) + (x_2^{+} + x_2^{-}) \\ s.t. \quad \,\,\,& x_1 + 2(x_2^{+} + x_2^{-}) \leqslant 8 \\ & x_1 = x_1^{+} - x_1^{-} \\ & x_2 = x_2^{+} - x_2^{-} (\text{可以删去}) \\ & -5 \leqslant x_1, x_2 \leqslant 5 \\ & 0 \leqslant x_i^{+}, x_i^{-}\leqslant 5, \forall i = 1, 2 \end{aligned} maxs.t.​2(x1+​+x1−​)+(x2+​+x2−​)x1​+2(x2+​+x2−​)⩽8x1​=x1+​−x1−​x2​=x2+​−x2−​(可以删去)−5⩽x1​,x2​⩽50⩽xi+​,xi−​⩽5,∀i=1,2​
    这个是不等价的。可以自行验证。这样的话,会出现 x 1 = 0 , x 1 + = 5 , x 1 − = 5 x_1 = 0, x_1^{+} =5, x_1^{-}=5 x1​=0,x1+​=5,x1−​=5, 也满足 x 1 = x 1 + − x 1 − x_1 = x_1^{+} - x_1^{-} x1​=x1+​−x1−​。

总结

含有绝对值形式的线性化。

  • 情况1: 目标函数为 min ⁡ \min min,例如
    min ⁡ ∣ x ∣ x ⩾ 0 \begin{aligned} \min \,\,\,& |x| \\ &x \geqslant 0 \end{aligned} min​∣x∣x⩾0​
    则可以引入辅助变量 y y y,用下面的形式等价线性化
    min ⁡ y s . t . y ⩾ x y ⩾ − x \begin{aligned} \min \,\,\, y \\ s.t. \,\,\, &y \geqslant x \\ &y \geqslant -x \end{aligned} minys.t.​y⩾xy⩾−x​
  • 情况2: 目标函数为 max ⁡ \max max
  • 例如下面
    max ⁡ 2 ∣ x 1 ∣ + ∣ x 2 ∣ s . t . ∣ x 1 ∣ + 2 ∣ x 2 ∣ ⩽ 8 − 5 ⩽ x 1 , x 2 ⩽ 5 \begin{aligned} \max \quad \,\,\,& 2|x_1| + |x_2| \\ s.t. \quad \,\,\,& |x_1| + 2|x_2| \leqslant 8 \\ & -5 \leqslant x_1, x_2 \leqslant 5 \end{aligned} maxs.t.​2∣x1​∣+∣x2​∣∣x1​∣+2∣x2​∣⩽8−5⩽x1​,x2​⩽5​
    则需要引入两组辅助变量 x i + , x i − , ∀ i = 1 , 2 x_i^{+}, x_i^{-}, \forall i =1,2 xi+​,xi−​,∀i=1,2。其中
    x i + = max ⁡ { 0 , x i } x i − = max ⁡ { 0 , − x i } \begin{aligned} &x_i^{+} = \max\{0, x_i\} \\ &x_i^{-} = \max\{0, -x_i\} \end{aligned} ​xi+​=max{0,xi​}xi−​=max{0,−xi​}​
    因此,就有
    x i = x i + − x i − ∣ x i ∣ = x i + + x i − \begin{aligned} &x_i = x_i^{+} - x_i^{-} \\ &|x_i| = x_i^{+} + x_i^{-} \end{aligned} ​xi​=xi+​−xi−​∣xi​∣=xi+​+xi−​​
    最终变化为
    max ⁡ 2 ( x 1 + + x 1 − ) + ( x 2 + + x 2 − ) s . t . ( x 1 + + x 1 − ) + 2 ( x 2 + + x 2 − ) ⩽ 8 x 1 = x 1 + − x 1 − x 2 = x 2 + − x 2 − x 1 abs = x 1 + + x 1 − x 2 abs = x 2 + + x 2 − x 1 abs ⩾ x 1 x 1 abs ⩾ − x 1 x 2 abs ⩾ x 2 x 2 abs ⩾ − x 2 − 5 ⩽ x 1 , x 2 ⩽ 5 0 ⩽ x i + , x i − , x i abs ⩽ 5 , ∀ i = 1 , 2 \begin{aligned} \max \quad \,\,\,& 2(x_1^{+} + x_1^{-}) + (x_2^{+} + x_2^{-}) \\ s.t. \quad \,\,\,& (x_1^{+} + x_1^{-}) + 2(x_2^{+} + x_2^{-}) \leqslant 8 \\ & x_1 = x_1^{+} - x_1^{-} \\ & x_2 = x_2^{+} - x_2^{-} \\ & x_1^{\text{abs}} = x_1^{+} + x_1^{-} \\ & x_2^{\text{abs}} = x_2^{+} + x_2^{-} \\ & x_1^{\text{abs}} \geqslant x_1 \\ & x_1^{\text{abs}} \geqslant -x_1 \\ & x_2^{\text{abs}} \geqslant x_2 \\ & x_2^{\text{abs}} \geqslant -x_2 \\ & -5 \leqslant x_1, x_2 \leqslant 5 \\ & 0 \leqslant x_i^{+}, x_i^{-}, x_i^{\text{abs}}\leqslant 5, \forall i = 1, 2 \end{aligned} maxs.t.​2(x1+​+x1−​)+(x2+​+x2−​)(x1+​+x1−​)+2(x2+​+x2−​)⩽8x1​=x1+​−x1−​x2​=x2+​−x2−​x1abs​=x1+​+x1−​x2abs​=x2+​+x2−​x1abs​⩾x1​x1abs​⩾−x1​x2abs​⩾x2​x2abs​⩾−x2​−5⩽x1​,x2​⩽50⩽xi+​,xi−​,xiabs​⩽5,∀i=1,2​
    注意:在一些特定 的情况下,表示绝对值的辅助变量 x i abs x_i^{\text{abs}} xiabs​也是可以不引入的,也同样可以保证等价。主要看对应的约束和目标函数是否能够在共同的耦合下,使得 x 1 = 0 , x 1 + = 5 , x 1 − = 5 x_1 = 0, x_1^{+} =5, x_1^{-}=5 x1​=0,x1+​=5,x1−​=5, 此时 x 1 = x 1 + − x 1 − x_1 =x_1^{+} - x_1^{-} x1​=x1+​−x1−​,但是 ∣ x 1 ∣ ≠ x 1 + + x 1 − |x_1| \ne x_1^{+} + x_1^{-} ∣x1​∣​=x1+​+x1−​的这种情况出现。

欢迎关注我们的微信公众号 运小筹

公众号往期推文如下




优化 | 线性化:含绝对值的线性化相关推荐

  1. 正态分布下含绝对值的期望求解 -- 待验证

    正态分布下含绝对值的期望求解 首先用伽马函数来证明一个小结论. 设 X ∼ N ( 0 , 1 ) , 求 E ∣ X ∣ X\sim N(0,1),求E|X| X∼

  2. ANA 2 优化版含预设 – Sonic Academy ANA 2 Bundle v2.0.94 WiN

    ANA2 Slate Bundle v2.0.94 WiN| 1.78 GB 一键安装优化版,已包含官方预设和第三方预设合集 我们高度期待的发布终于在这里!我们已经花费了数千个小时来重建和重新设计AN ...

  3. 分段函数或含绝对值符号型自由项非齐次线性微分方程求解思路

    分段函数或含绝对值符号型自由项非齐次线性微分方程求解思路 @(微积分) 总体思路是:分段分别求解,再根据连续性确定待定系数. 比如:求解微分方程y″+4y=3|sinx|在[−π,π]y''+4y = ...

  4. 浅谈Android开机启动速度优化(含应用程序启动速度优化)

    众所周知Android开机启动速度较慢,于是如何加快启动速度便成为一个值得讨论的问题. 在查阅过许多资料后(特别是Google Group的android-platform),我整理总结出下面几点基本 ...

  5. 考虑源荷不确定性的微网优化(含matlab程序)

    目录 一.前言 二.含可再生能源的CHP型微网系统 三.CCP理论 四.具体模型 五.不含随机变量分析的matlab程序设计 1.粒子群寻优功能代码段 2.目标函数子程序 3.其他代码段 六.基于CC ...

  6. 含sop的配电网优化(含matlab程序)

    前言: 以IEEE33节点为例,分析含sop的配电网优化,并对重点程序段进行分析,希望助力更多人更快更好理解这部分知识. 目录 前言: 背景: 一.sop约束及实现 二.配电网部分 三.程序代码 四. ...

  7. 最短路径——Dijkstra算法以及二叉堆优化(含证明)

    一般最短路径算法习惯性的分为两种:单源最短路径算法和全顶点之间最短路径.前者是计算出从一个点出发,到达所有其余可到达顶点的距离.后者是计算出图中所有点之间的路径距离. 单源最短路径 Dijkstra算 ...

  8. 【智能优化算法】基于黑寡妇优化算法求解单目标优化问题含Matlab源码

    1 简介 本期为大家介绍黑寡妇优化算法(Black Widow Optimization Algorithm,BWO).该算法由Adria´n F. Peña-Delgado等人于2020年提出,主要 ...

  9. 【微电网优化】基于粒子群算法求解热电联供型微电网经济运行优化问题含Matlab源码

    1 简介 面对全球环境污染和能源危机的双重压力,世界各国将焦点转向太阳能.风能等清洁可再生能源.微电网是组织和利用可再生能源发电的重要途径之一.本文以微电网的能量优化调度为研究对象,建立了微电网能量优 ...

最新文章

  1. 无边框窗体移动的方法
  2. 备战“双11”,阿里云为企业提供一站式资源保障服务
  3. 常用的web安全处理
  4. 实验5 数据查询--连接查询
  5. Storm的BaseBasicBolt源码解析ack机制
  6. Python解析xml文件,此实例将xml设置为模版(from lxml import etree)
  7. 设置让终端保持utf8 cmd的设置
  8. 听鲍宏图解读微软企业级市场战略
  9. kettle的变量空间接口VariableSpace实现与委托模式
  10. 云原生是什么?它从哪里来?又到哪里去?
  11. oracle中not or 用法
  12. 3ds max 2012 VRay 2.0-3ds max 效果图设计与制作-HDRI贴图的应用
  13. 高通平台开发系列讲解(音频篇)Codec驱动移植步骤
  14. DIY一块单面1TB高速NVMe SSD, SM2262EN量产开卡软件+JMS583转接
  15. Python提取docx格式Word文档中所有尾注
  16. 叶雕——叹为观止的艺术!
  17. 视觉SLAM小知识——叉乘的物理意义
  18. 创业初始,王兴每周工作超过100小时,互联网巨头各有各的辛酸
  19. 用户名、密码等常用的js正则表达式
  20. 汽车电气化共享移动性及自动驾驶对未来出行方式的全面展望

热门文章

  1. 【新版】模拟量输入模块的2、3、4线制的接法图解
  2. “千万别奶睡,以后很难戒”,宝宝为啥喜欢奶睡,真有这么可怕?
  3. Visual Studio最有用(未充分利用)的提示
  4. nodejs爬取网页乱码解决方法
  5. 计算机取证工具应用-数据恢复(实验部分)
  6. hdu 5107 线段树+离散化+归并排序+极角排序
  7. MyEclise2016安装activiti插件
  8. PHP (TP5)常用内容
  9. [VT 虚拟化] 资料整合
  10. UE4虚幻引擎入门的一些知识