今天优化里面又碰到绝对值了。无论是目标函数里头的绝对值还是约束条件里头的绝对值,处理起来都一样:把绝对值项换成非绝对值项(好像有点废话)。
假设有绝对值项如下,其中 R j j ∈ S L {R_j}{\rm{ }} \ \ \ \ j \in {S_L} Rj j∈SL 是自变量。
O s = 1 N ∑ j ∈ S L ∣ R j − ∑ j ∈ S L R j N ∣ {O_s} = {1 \over N}\sum\limits_{j \in {S_L}} {\left| {{R_j} - {{\sum\limits_{j \in {S_L}} {{R_j}} } \over N}} \right|} Os=N1j∈SL∑∣∣∣∣∣∣∣Rj−Nj∈SL∑Rj∣∣∣∣∣∣∣
则
O
s
{O_s}
Os可用如下四个式子进行替换:
O
s
=
1
N
∑
j
∈
S
L
U
j
{O_s} = {1 \over N}\sum\limits_{j \in {S_L}} {{U_j}}
Os=N1j∈SL∑Uj
R j − ∑ j ∈ S L R j N ≤ U j ≤ R j − ∑ j ∈ S L R j N + M δ j (1) {R_j} - {{\sum\limits_{j \in {S_L}} {{R_j}} } \over N} \le {U_j} \le {R_j} - {{\sum\limits_{j \in {S_L}} {{R_j}} } \over N} + M{\delta _j} \tag{1} Rj−Nj∈SL∑Rj≤Uj≤Rj−Nj∈SL∑Rj+Mδj(1)
∑ j ∈ S L R j N − R j ≤ U j ≤ ∑ j ∈ S L R j N − R j + M ε j (2) {{\sum\limits_{j \in {S_L}} {{R_j}} } \over N} - {R_j} \le {U_j} \le {{\sum\limits_{j \in {S_L}} {{R_j}} } \over N} - {R_j} + M{\varepsilon _j} \tag{2} Nj∈SL∑Rj−Rj≤Uj≤Nj∈SL∑Rj−Rj+Mεj(2)
δ j + ε j = 1 (3) {\delta _j} + {\varepsilon _j} = 1 \tag{3} δj+εj=1(3)
式中: M M M为一个极大数, δ j {\delta _j} δj 和 ε j {\varepsilon _j} εj 均为0-1变量。
观察一下,其实就是用 U j {U_j} Uj 替换了 ∣ R j − ∑ j ∈ S L R j N ∣ \left| {{R_j} - {{\sum\limits_{j \in {S_L}} {{R_j}} } \over N}} \right| ∣∣∣∣∣Rj−Nj∈SL∑Rj∣∣∣∣∣。
下面稍加分析。
首先明确一点:绝对值 ∣ m − n ∣ \left| {m - n} \right| ∣m−n∣ 其实就是取 m − n m-n m−n 和 n − m n-m n−m 二者中的较大值。
看式(1)和式(2)的左半边,已经确保了 U j {U_j} Uj 能 大于等于 R j − ∑ j ∈ S L R j N {R_j} - {{\sum\limits_{j \in {S_L}} {{R_j}} } \over N} Rj−Nj∈SL∑Rj 和 ∑ j ∈ S L R j N − R j {{\sum\limits_{j \in {S_L}} {{R_j}} } \over N} - {R_j} Nj∈SL∑Rj−Rj中的较大值。下面再需要让这个大于等于能够取等。这就是式(1)和式(2)的右半边的作用。
由于有0-1变量和大M的作用,再加上左半边已经确保 U j {U_j} Uj 能大于较大值,右半边的最终效果则是 U j {U_j} Uj 会小于等于二者中 R j − ∑ j ∈ S L R j N {R_j} - {{\sum\limits_{j \in {S_L}} {{R_j}} } \over N} Rj−Nj∈SL∑Rj 和 ∑ j ∈ S L R j N − R j {{\sum\limits_{j \in {S_L}} {{R_j}} } \over N} - {R_j} Nj∈SL∑Rj−Rj中的较大值。
此处 δ j + ε j = 1 {\delta _j} + {\varepsilon _j} = 1 δj+εj=1的作用就是确保式(1)和式(2)右半边两个式子只有一个能起作用,也就是0-1变量取0的那个式子,取1的那个式子由于大M的存在会被松弛,因为等价于小于等于一个极大数。
大于等于较大值,小于等于较大值,综合效果就是等于较大值。
总结
由于上述线性化是直接把绝对值项用非绝对值项+一些不含绝对值的约束替换掉,所以无论绝对值项出现在目标函数中还是约束条件中都是可以顺利操作的。
但是如果约束条件是 ∣ x − m ∣ ≤ n \left| {x - m} \right| \le n ∣x−m∣≤n 这种,直接把绝对值拆开就可以了,但如果是 ∑ i = 1 N ∣ x i − m ∣ ≤ n \sum\limits_{i = 1}^N {\left| {{x_i} - m} \right|} \le n i=1∑N∣xi−m∣≤n 这种稍微不那么一般的形式,貌似就只能通过上述这种稍微繁琐一些的操作来进行线性化了。
另外这种线性化的操作应该不是唯一的,上面给出的只是我自己看到的并且觉得比较好理解的一种。
参考文献
孙田, 邹鹏, 杨知方, 等. 动态无功优化的多阶段求解方法[J]. 电网技术, 2016, 40(06): 1804–1810.