前言
博客《一种单线性方程约束下的生成随机数修正方法(结论与应用)》给出了生成的随机数满足变量上下限约束但不满足单线性方程约束时,生成随机数的修正方法,使得修正后的随机数既满足变量上下限约束又满足单线性方程约束;而博客《一种多线性方程约束下的生成随机数修正方法(上)》和博客《一种多线性方程约束下的生成随机数修正方法(下)》则通过实例分析将随机数修正方法拓展到某些多线性约束下的特殊优化场景,从而给出了一组用于解决各类线性约束下的生成随机数修正问题的可行思路。
本博客将综合上述文章中的修正思路,首先对各类线性方程解的个数进行讨论,并给出线性方程约束下的生成随机数修正的一般性方法,并作为线性不等式约束和一般线性约束下生成随机数修正研究的前提。
修正方法
设需要生成一组如下所示的
N
N
N维随机向量
x
=
[
x
1
⋯
x
j
⋯
x
N
]
T
\boldsymbol{x}=\left[ \begin{matrix} x_1 & \cdots & x_j & \cdots & x_N \end{matrix} \right]^T
x=[x1⋯xj⋯xN]T满足如式(1)所示的
N
N
N个随机量上下界约束条件和
M
M
M个线性方程约束
{
x
j
∈
[
x
‾
j
,
x
‾
j
]
,
j
∈
{
1
,
⋯
,
N
}
∑
i
=
1
N
a
i
,
j
x
j
=
b
i
,
i
∈
{
1
,
⋯
,
M
}
\begin{equation} \begin{cases} x_j ∈ \left[ \underline{x}_j, \overline{x}_j \right], j ∈ \{ 1, \cdots, N \} \\ \displaystyle \sum_{i = 1}^{N} a_{i, j} x_j = b_i, i ∈ \{ 1, \cdots, M \} \\ \end{cases} \end{equation}
⎩
⎨
⎧xj∈[xj,xj],j∈{1,⋯,N}i=1∑Nai,jxj=bi,i∈{1,⋯,M}
其中:
x
‾
j
\underline{x}_j
xj和
x
‾
j
\overline{x}_j
xj分别是第
j
j
j维随机数
x
j
x_j
xj的下界和上界;
a
i
,
j
a_{i, j}
ai,j为线性方程约束中随机数
x
j
x_j
xj的系数,方程中的
a
i
,
j
a_{i, j}
ai,j不能全部等于
0
0
0;
b
i
b_i
bi为第
i
i
i个线性方程的常数项。
若按照如式(2)所示的随机数生成方法进行生成随机数
x
g
e
n
=
[
x
g
e
n
,
1
⋯
x
g
e
n
,
i
⋯
x
g
e
n
,
N
]
T
\boldsymbol{x_{gen}} = \left[ \begin{matrix} x_{gen, 1} & \cdots & x_{gen, i} \cdots & x_{gen, N} \end{matrix} \right]^T
xgen=[xgen,1⋯xgen,i⋯xgen,N]T作为式(1)所示问题的其中一个测试解
x
g
e
n
,
j
=
r
j
(
x
‾
j
−
x
‾
j
)
+
x
‾
j
,
j
∈
{
1
,
⋯
,
N
}
\begin{equation} x_{gen, j}=r_j \left(\overline{x}_j - \underline{x}_j \right) + \underline{x}_j, j ∈ \{ 1,\cdots, N \} \end{equation}
xgen,j=rj(xj−xj)+xj,j∈{1,⋯,N}
其中:
r
j
r_j
rj为
[
0
,
1
]
[0,1]
[0,1]上满足特定概率分布的随机数,易得
x
‾
j
≤
x
g
e
n
,
j
≤
(
x
‾
j
−
x
‾
j
)
+
x
‾
j
=
x
‾
j
,
j
∈
{
1
,
⋯
,
N
}
\begin{equation} \underline{x}_j ≤ x_{gen, j} ≤ \left( \overline{x}_j - \underline{x}_j \right) + \underline{x}_j = \underline{x}_j, j ∈ \{ 1, \cdots, N \} \end{equation}
xj≤xgen,j≤(xj−xj)+xj=xj,j∈{1,⋯,N}
但该随机数生成方法无法保证满足式(1)中的线性方程约束。当生成的随机向量不满足式(1)中的线性方程约束时,须通过将
x
g
e
n
\boldsymbol{x_{gen}}
xgen修正为
x
c
o
r
=
[
x
c
o
r
,
1
⋯
x
c
o
r
,
j
⋯
x
c
o
r
,
N
]
T
\boldsymbol{x_{cor}} = \left[ \begin{matrix}x_{cor, 1} & \cdots & x_{cor, j} & \cdots & x_{cor, N} \end{matrix} \right]^T
xcor=[xcor,1⋯xcor,j⋯xcor,N]T,使之既满足式(1)中的变量上下界约束,又满足式(1)中的线性方程约束。
将式(1)中的线性方程组转写成矩阵方程的形式,即有
A
x
=
b
\begin{equation} \boldsymbol{A} \boldsymbol{x} = \boldsymbol{b} \end{equation}
Ax=b
其中:系数矩阵
A
=
[
a
1
,
1
⋯
a
1
,
j
⋯
a
1
,
N
⋮
⋮
⋮
⋮
⋮
a
i
,
1
⋯
a
i
,
j
⋯
a
i
,
N
⋮
⋮
⋮
⋮
⋮
a
M
,
1
⋯
a
M
,
j
⋯
a
M
,
N
]
\boldsymbol{A} = \left[ \begin{matrix} a_{1, 1} & \cdots & a_{1, j} & \cdots & a_{1, N} \\ \vdots & \vdots & \vdots & \vdots & \vdots \\ a_{i, 1} & \cdots & a_{i, j} & \cdots & a_{i, N} \\ \vdots & \vdots & \vdots & \vdots & \vdots \\ a_{M, 1} & \cdots & a_{M, j} & \cdots & a_{M, N} \end{matrix} \right]
A=
a1,1⋮ai,1⋮aM,1⋯⋮⋯⋮⋯a1,j⋮ai,j⋮aM,j⋯⋮⋯⋮⋯a1,N⋮ai,N⋮aM,N
,常数向量
b
=
[
b
1
⋮
b
i
⋮
b
M
]
\boldsymbol{b} = \left[ \begin{matrix} b_1 \\ \vdots \\ b_i \\ \vdots \\ b_M \end{matrix} \right]
b=
b1⋮bi⋮bM
。
根据矩阵理论可知,可通过如式(5)所示的有限次初等行变换将
A
\boldsymbol{A}
A转换成行最简形矩阵(Reduced Row Echelon Form of a Matrix)
A
R
R
E
F
\boldsymbol{A_{RREF}}
ARREF
A
R
R
E
F
=
(
∏
p
1
=
M
P
1
P
p
1
)
A
\begin{equation} \boldsymbol{A_{RREF}} = \left( \displaystyle \prod_{p_1 = M_P}^{1} \boldsymbol{P_{p_1}} \right) \boldsymbol{A} \end{equation}
ARREF=
p1=MP∏1Pp1
A
其中:
M
P
M_P
MP为所进行的初等行变换的次数,
P
p
1
\boldsymbol{P_{p_1}}
Pp1为第
p
1
p_1
p1次初等行变换所用的
M
M
M阶初等矩阵。
然后可以将
A
R
R
E
F
\boldsymbol{A_{RREF}}
ARREF通过有限次的初等列变换转换成标准形矩阵(Standard Matrix)
A
S
T
D
\boldsymbol{A_{STD}}
ASTD
A
S
T
D
=
A
R
R
E
F
(
∏
p
2
=
1
N
P
P
p
2
)
=
[
E
R
A
~
R
×
(
N
−
R
)
O
(
M
−
R
)
×
R
O
(
M
−
R
)
×
(
N
−
R
)
]
\begin{equation} \boldsymbol{A_{STD}} = \boldsymbol{A_{RREF}} \left( \displaystyle \prod_{p_2 = 1}^{N_P} \boldsymbol{P_{p_2}} \right) = \left[ \begin{matrix} \boldsymbol{E}_R & \boldsymbol{\tilde{A}}_{R \times \left( N - R \right)} \\ \boldsymbol{O}_{\left( M - R \right) \times R} & \boldsymbol{O}_{\left( M - R \right) \times \left( N - R \right)} \end{matrix} \right] \end{equation}
ASTD=ARREF(p2=1∏NPPp2)=[ERO(M−R)×RA~R×(N−R)O(M−R)×(N−R)]
其中:
N
P
N_P
NP为所进行的初等列变换的次数,
P
p
2
\boldsymbol{P_{p_2}}
Pp2为第
p
2
p_2
p2次初等列变换所用的
N
N
N阶初等矩阵,
R
(
R
≤
min
(
M
,
N
)
)
R \left( R ≤ \min \left( M, N \right) \right)
R(R≤min(M,N))为矩阵
A
\boldsymbol{A}
A、
A
R
R
E
F
\boldsymbol{A_{RREF}}
ARREF和
A
S
T
D
\boldsymbol{A_{STD}}
ASTD的秩,
E
R
\boldsymbol{E}_R
ER为
R
R
R阶单位矩阵,
A
~
R
×
(
N
−
R
)
=
[
a
~
1
,
1
⋯
a
~
1
,
j
⋯
a
~
1
,
(
N
−
R
)
⋮
⋮
⋮
⋮
⋮
a
~
i
,
1
⋯
a
~
i
,
j
⋯
a
~
i
,
(
N
−
R
)
⋮
⋮
⋮
⋮
⋮
a
~
R
,
1
⋯
a
~
R
,
j
⋯
a
~
R
,
(
N
−
R
)
]
\boldsymbol{\tilde{A}}_{R \times \left( N - R \right)} = \left[ \begin{matrix} \tilde{a}_{1, 1} & \cdots & \tilde{a}_{1, j} & \cdots & \tilde{a}_{1, \left( N - R \right)} \\ \vdots & \vdots & \vdots & \vdots & \vdots \\ \tilde{a}_{i, 1} & \cdots & \tilde{a}_{i, j} & \cdots & \tilde{a}_{i, \left( N - R \right)} \\ \vdots & \vdots & \vdots & \vdots & \vdots \\ \tilde{a}_{R, 1} & \cdots & \tilde{a}_{R, j} & \cdots & \tilde{a}_{R, \left( N - R \right)} \end{matrix} \right]
A~R×(N−R)=
a~1,1⋮a~i,1⋮a~R,1⋯⋮⋯⋮⋯a~1,j⋮a~i,j⋮a~R,j⋯⋮⋯⋮⋯a~1,(N−R)⋮a~i,(N−R)⋮a~R,(N−R)
,
O
(
M
−
R
)
×
R
\boldsymbol{O}_{\left( M - R \right) \times R}
O(M−R)×R和
O
(
M
−
R
)
×
(
N
−
R
)
\boldsymbol{O}_{\left( M - R \right) \times \left( N - R \right)}
O(M−R)×(N−R)分别为
(
M
−
R
)
\left( M - R \right)
(M−R)行
R
R
R列和
(
M
−
R
)
\left( M - R \right)
(M−R)行
(
N
−
R
)
\left( N - R \right)
(N−R)列的零矩阵。
将式(4)所示的矩阵方程进行式(7)所示的初等行变换,将系数矩阵
A
\boldsymbol{A}
A转换成行最简形矩阵(Reduced Row Echelon Form Matrix)
A
R
R
E
F
\boldsymbol{A_{RREF}}
ARREF
(
∏
p
1
=
M
P
1
P
p
1
)
A
x
=
(
∏
p
1
=
M
P
1
P
p
1
)
b
[
(
∏
p
1
=
M
P
1
P
p
1
)
A
]
x
=
(
∏
p
1
=
M
P
1
P
p
1
)
b
A
R
R
E
F
x
=
b
R
R
E
F
\begin{equation} \begin{split} \left( \displaystyle \prod_{p_1 = M_P}^{1} \boldsymbol{P_{p_1}} \right) \boldsymbol{A} \boldsymbol{x} &= \left( \displaystyle \prod_{p_1 = M_P}^{1} \boldsymbol{P_{p_1}} \right) \boldsymbol{b} \\ \left[ \left( \displaystyle \prod_{p_1 = M_P}^{1} \boldsymbol{P_{p_1}} \right) \boldsymbol{A} \right] \boldsymbol{x} &= \left( \displaystyle \prod_{p_1 = M_P}^{1} \boldsymbol{P_{p_1}} \right) \boldsymbol{b} \\ \boldsymbol{A_{RREF}} \boldsymbol{x} &= \boldsymbol{b_{RREF}} \end{split} \end{equation}
p1=MP∏1Pp1
Ax
p1=MP∏1Pp1
A
xARREFx=
p1=MP∏1Pp1
b=
p1=MP∏1Pp1
b=bRREF
其中:
b
R
R
E
F
\boldsymbol{b_{RREF}}
bRREF为将
b
\boldsymbol{b}
b经过式(7)所示初等行变换后得到的常数向量。
再将式(7)所示的矩阵方程进行式(8)所示的初等列变换,将行最简形矩阵(Reduced Row Echelon Form Matrix)
A
R
R
E
F
\boldsymbol{A_{RREF}}
ARREF转换成标准形矩阵
A
S
T
D
\boldsymbol{A_{STD}}
ASTD
A
R
R
E
F
[
(
∏
p
2
=
1
N
P
P
p
2
)
(
∏
p
2
=
1
N
P
P
p
2
)
−
1
]
x
=
b
R
R
E
F
[
A
R
R
E
F
(
∏
p
2
=
1
N
P
P
p
2
)
]
[
(
∏
p
2
=
N
P
1
P
p
2
−
1
)
x
]
=
b
R
R
E
F
A
S
T
D
x
~
=
b
R
R
E
F
\begin{equation} \begin{split} \boldsymbol{A_{RREF}} \left[ \left( \displaystyle \prod_{p_2 = 1}^{N_P} \boldsymbol{P_{p_2}} \right) \left( \displaystyle \prod_{p_2 = 1}^{N_P} \boldsymbol{P_{p_2}} \right)^{-1} \right] \boldsymbol{x} &= \boldsymbol{b_{RREF}} \\ \left[ \boldsymbol{A_{RREF}} \left( \displaystyle \prod_{p_2 = 1}^{N_P} \boldsymbol{P_{p_2}} \right) \right] \left[ \left( \displaystyle \prod_{p_2 = N_P}^{1} \boldsymbol{P_{p_2}^{-1}} \right) \boldsymbol{x} \right] &= \boldsymbol{b_{RREF}} \\ \boldsymbol{A_{STD}} \boldsymbol{\tilde{x}} &= \boldsymbol{b_{RREF}} \end{split} \end{equation}
ARREF
(p2=1∏NPPp2)(p2=1∏NPPp2)−1
x[ARREF(p2=1∏NPPp2)]
p2=NP∏1Pp2−1
x
ASTDx~=bRREF=bRREF=bRREF
由于初等矩阵
P
p
2
\boldsymbol{P_{p_2}}
Pp2的逆矩阵仍为初等矩阵,因此根据
x
~
\boldsymbol{\tilde{x}}
x~即为将
x
\boldsymbol{x}
x经过式(8)所示初等行变换后得到的未知向量。根据行最简形矩阵
A
R
R
E
F
\boldsymbol{A_{RREF}}
ARREF的结构可以看出,
A
S
T
D
\boldsymbol{A_{STD}}
ASTD即为将
A
R
R
E
F
\boldsymbol{A_{RREF}}
ARREF前
R
R
R列中的所有全零列与自
(
R
+
1
)
\left( R + 1 \right)
(R+1)起所有非零列依次调换的结果,因此
x
~
\boldsymbol{\tilde{x}}
x~即为将
x
\boldsymbol{x}
x中与
A
R
R
E
F
\boldsymbol{A_{RREF}}
ARREF前
R
R
R列中的所有全零列对应的行和
x
\boldsymbol{x}
x中与
A
R
R
E
F
\boldsymbol{A_{RREF}}
ARREF自
(
R
+
1
)
\left( R + 1 \right)
(R+1)列起所有非零列对应的行依次调换的结果。
为简化讨论,可假定系数矩阵
A
\boldsymbol{A}
A只需经过
M
P
M_P
MP次初等行变换即可转换成标准形矩阵(Reduced Row Echelon Form Matrix)
A
S
T
D
\boldsymbol{A_{STD}}
ASTD,此时根据式(7)和式(8)可以看出
{
A
R
R
E
F
=
A
S
T
D
x
=
x
~
\begin{equation} \begin{cases} \boldsymbol{A_{RREF}} = \boldsymbol{A_{STD}} \\ \boldsymbol{x} = \boldsymbol{\tilde{x}} \end{cases} \end{equation}
{ARREF=ASTDx=x~
根据线性方程组理论可知,式(1)中的线性方程与式(8)所示矩阵方程同解,根据式(8)可知,式(1)中线性方程的解有以下情况:
情况1:若系数向量 b R R E F \boldsymbol{b_{RREF}} bRREF自第 ( R + 1 ) \left( R + 1 \right) (R+1)列到第 M M M列存在非零元素,则式(8)所示的矩阵方程无解,此时无法将 x g e n \boldsymbol{x_{gen}} xgen修正为 x c o r \boldsymbol{x_{cor}} xcor,使之满足式(1)中的线性方程约束。
情况2:若系数向量 b R R E F \boldsymbol{b_{RREF}} bRREF自第 ( R + 1 ) \left( R + 1 \right) (R+1)列到第 M M M列的元素全为零,则式(8)所示的矩阵方程有解,此时可分为以下情况将 x g e n \boldsymbol{x_{gen}} xgen修正为 x c o r \boldsymbol{x_{cor}} xcor,使得修正后的 x c o r \boldsymbol{x_{cor}} xcor满足式(1)中的线性方程约束:
情况2.1:若 R = N R = N R=N,则式(8)所示的矩阵方程有且仅有唯一解,此时当且仅当 b R R E F \boldsymbol{b_{RREF}} bRREF中前 N N N行的所有元素全部满足式(1)所示的变量上下限约束时式(1)中的约束问题方有唯一修正解 x c o r = [ b R R E F , 1 ⋯ b R R E F , j ⋯ b R R E F , N ] T \boldsymbol{x_{cor}} = \left[ \begin{matrix}b_{RREF, 1} & \cdots & b_{RREF, j} & \cdots & b_{RREF, N} \end{matrix} \right]^T xcor=[bRREF,1⋯bRREF,j⋯bRREF,N]T。
情况2.2:若 R < N R < N R<N,则式(8)所示的矩阵方程有无穷多组解,实数域内有无穷多组解能够满足式(1)中的线性方程约束,此时又可分为以下情况将 x g e n \boldsymbol{x_{gen}} xgen修正为 x c o r \boldsymbol{x_{cor}} xcor,使得修正后的 x c o r \boldsymbol{x_{cor}} xcor满足式(1)中的线性方程约束:
情况2.2.1:若
R
=
1
R = 1
R=1,此时可将式(1)中的约束条件约简为
{
x
j
∈
[
x
‾
j
,
x
‾
j
]
,
j
∈
{
1
,
⋯
,
N
}
∑
i
=
1
N
a
1
,
j
x
j
=
b
1
\begin{equation} \begin{cases} x_j ∈ \left[ \underline{x}_j, \overline{x}_j \right], j ∈ \{ 1, \cdots, N \} \\ \displaystyle \sum_{i = 1}^{N} a_{1, j} x_j = b_1\\ \end{cases} \end{equation}
⎩
⎨
⎧xj∈[xj,xj],j∈{1,⋯,N}i=1∑Na1,jxj=b1
根据博客《一种单线性方程约束下的生成随机数修正方法(结论与应用)》,可将
x
g
e
n
\boldsymbol{x_{gen}}
xgen按如下方式修正为
x
c
o
r
\boldsymbol{x_{cor}}
xcor:
情况2.2.1.1:当
∑
j
=
1
N
a
1
,
j
x
g
e
n
,
j
>
b
1
\displaystyle \sum_{j = 1}^{N} a_{1, j} x_{gen, j} > b_1
j=1∑Na1,jxgen,j>b1时,可按如式(11)所示的形式进行修正
x
c
o
r
,
j
=
{
b
1
−
(
∑
j
=
1
,
a
1
,
j
>
0
N
a
1
,
j
x
‾
j
+
∑
j
=
1
,
a
1
,
j
<
0
N
a
1
,
j
x
‾
j
)
∑
j
=
1
,
a
1
,
j
>
0
N
a
1
,
j
(
x
g
e
n
,
j
−
x
‾
j
)
+
∑
j
=
1
,
a
1
,
j
<
0
N
a
1
,
j
(
x
g
e
n
,
j
−
x
‾
j
)
(
x
g
e
n
,
j
−
x
‾
j
)
+
x
‾
j
(
a
1
,
j
>
0
)
x
g
e
n
,
j
(
a
1
,
j
=
0
)
b
1
−
(
∑
j
=
1
,
a
1
,
j
>
0
N
a
1
,
j
x
‾
j
+
∑
j
=
1
,
a
1
,
j
<
0
N
a
1
,
j
x
‾
j
)
∑
j
=
1
,
a
1
,
j
>
0
N
a
1
,
j
(
x
g
e
n
,
j
−
x
‾
j
)
+
∑
j
=
1
,
a
1
,
j
<
0
N
a
1
,
j
(
x
g
e
n
,
j
−
x
‾
j
)
(
x
g
e
n
,
j
−
x
‾
j
)
+
x
‾
j
(
a
1
,
j
<
0
)
\begin{equation} x_{cor, j} = \begin{cases} \dfrac{b_1 - \left( \displaystyle \sum_{j = 1, a_{1, j} > 0}^{N} a_{1, j} \underline{x}_j + \displaystyle \sum_{j = 1, a_{1, j} < 0}^{N} a_{1, j} \overline{x}_j \right)} {\displaystyle \sum_{j = 1,a_{1, j} > 0}^{N} a_{1, j} \left( x_{gen, j} - \underline{x}_j \right) + \displaystyle \sum_{j = 1, a_{1, j} < 0}^{N} a_{1, j} \left( x_{gen, j} - \overline{x}_j \right)} \left( x_{gen, j} - \underline{x}_j \right) + \underline{x}_j & \left( a_{1, j} > 0 \right) \\ x_{gen, j} & \left( a_{1, j} = 0 \right) \\ \dfrac{b_1 - \left( \displaystyle \sum_{j = 1, a_{1, j} > 0}^{N} a_{1, j} \underline{x}_j + \displaystyle \sum_{j = 1, a_{1, j} < 0}^{N} a_{1, j} \overline{x}_j\right)} {\displaystyle \sum_{j = 1,a_{1, j} > 0}^{N} a_{1, j} \left( x_{gen, j} - \underline{x}_j \right) + \displaystyle \sum_{j = 1, a_{1, j} < 0}^{N} a_{1, j} \left( x_{gen, j} - \overline{x}_j \right)} \left( x_{gen, j} - \overline{x}_j \right)+\overline{x}_j & \left( a_{1, j} < 0 \right) \\ \end{cases} \end{equation}
xcor,j=⎩
⎨
⎧j=1,a1,j>0∑Na1,j(xgen,j−xj)+j=1,a1,j<0∑Na1,j(xgen,j−xj)b1−
j=1,a1,j>0∑Na1,jxj+j=1,a1,j<0∑Na1,jxj
(xgen,j−xj)+xjxgen,jj=1,a1,j>0∑Na1,j(xgen,j−xj)+j=1,a1,j<0∑Na1,j(xgen,j−xj)b1−
j=1,a1,j>0∑Na1,jxj+j=1,a1,j<0∑Na1,jxj
(xgen,j−xj)+xj(a1,j>0)(a1,j=0)(a1,j<0)
情况2.2.1.2:当
∑
j
=
1
N
a
1
,
j
x
g
e
n
,
j
<
b
1
\displaystyle \sum_{j = 1}^{N} a_{1, j} x_{gen, j} < b_1
j=1∑Na1,jxgen,j<b1时,可按如式(12)所示的形式进行修正
x
c
o
r
,
j
=
{
b
1
−
(
∑
j
=
1
,
a
1
,
j
>
0
N
a
1
,
j
x
‾
j
+
∑
j
=
1
,
a
1
,
j
<
0
N
a
1
,
j
x
‾
j
)
∑
j
=
1
,
a
1
,
j
>
0
N
a
1
,
j
(
x
g
e
n
,
j
−
x
‾
j
)
+
∑
j
=
1
,
a
1
,
j
<
0
N
a
1
,
j
(
x
g
e
n
,
j
−
x
‾
j
)
(
x
g
e
n
,
j
−
x
‾
j
)
+
x
‾
j
(
a
1
,
j
>
0
)
x
g
e
n
,
j
(
a
1
,
j
=
0
)
b
1
−
(
∑
j
=
1
,
a
1
,
j
>
0
N
a
1
,
j
x
‾
j
+
∑
j
=
1
,
a
1
,
j
<
0
N
a
1
,
j
x
‾
j
)
∑
j
=
1
,
a
1
,
j
>
0
N
a
1
,
j
(
x
g
e
n
,
j
−
x
‾
j
)
+
∑
j
=
1
,
a
1
,
j
<
0
N
a
1
,
j
(
x
g
e
n
,
j
−
x
‾
j
)
(
x
g
e
n
,
j
−
x
‾
j
)
+
x
‾
j
(
a
1
,
j
<
0
)
\begin{equation} x_{cor, j} = \begin{cases} \dfrac{b_1 - \left( \displaystyle \sum_{j = 1,a_{1, j}>0}^{N} a_{1, j} \overline{x}_j + \displaystyle\sum_{j = 1, a_{1, j} < 0}^{N} a_{1, j} \underline{x}_j \right)} {\displaystyle \sum_{j = 1,a_{1, j} > 0}^{N} a_{1, j} \left(x_{gen, j} - \overline{x}_j \right) + \displaystyle \sum_{j = 1, a_{1, j}<0}^{N} a_{1, j} \left( x_{gen, j} - \underline{x}_j \right)} \left( x_{gen, j} - \overline{x}_j \right) + \overline{x}_j & \left( a_{1, j} > 0 \right) \\ x_{gen, j} & \left( a_{1, j} = 0\right) \\ \dfrac{b_1 - \left( \displaystyle \sum_{j = 1, a_{1, j}>0}^{N} a_{1, j} \overline{x}_j + \displaystyle \sum_{j = 1, a_{1, j} < 0}^{N} a_{1, j} \underline{x}_j \right)} {\displaystyle \sum_{j = 1,a_{1, j} > 0}^{N} a_{1, j} \left( x_{gen, j} - \overline{x}_j \right) + \displaystyle \sum_{j = 1, a_{1, j}<0}^{N} a_{1, j} \left( x_{gen, j} - \underline{x}_j \right)} \left( x_{gen, j} - \underline{x}_j \right) + \underline{x}_j & \left( a_{1, j} < 0 \right) \\ \end{cases} \end{equation}
xcor,j=⎩
⎨
⎧j=1,a1,j>0∑Na1,j(xgen,j−xj)+j=1,a1,j<0∑Na1,j(xgen,j−xj)b1−
j=1,a1,j>0∑Na1,jxj+j=1,a1,j<0∑Na1,jxj
(xgen,j−xj)+xjxgen,jj=1,a1,j>0∑Na1,j(xgen,j−xj)+j=1,a1,j<0∑Na1,j(xgen,j−xj)b1−
j=1,a1,j>0∑Na1,jxj+j=1,a1,j<0∑Na1,jxj
(xgen,j−xj)+xj(a1,j>0)(a1,j=0)(a1,j<0)
可以验证,当且仅当 ∑ j = 1 , a 1 , j > 0 N a 1 , j x ‾ j + ∑ j = 1 , a 1 , j < 0 N a 1 , j x ‾ j ≤ b 1 ≤ ∑ j = 1 , a 1 , j > 0 N a 1 , j x ‾ j + ∑ j = 1 , a 1 , j < 0 N a 1 , j x ‾ j \displaystyle \sum_{j = 1, a_{1, j} > 0}^{N} a_{1, j} \underline{x}_j + \displaystyle\sum_{j = 1, a_{1, j} < 0}^{N} a_{1, j} \overline{x}_j ≤ b_1 ≤ \displaystyle \sum_{j = 1, a_{1, j} > 0}^{N} a_{1, j} \overline{x}_j + \displaystyle \sum_{j = 1, a_{1, j} < 0}^{N} a_{1, j} \underline{x}_j j=1,a1,j>0∑Na1,jxj+j=1,a1,j<0∑Na1,jxj≤b1≤j=1,a1,j>0∑Na1,jxj+j=1,a1,j<0∑Na1,jxj时,通过式(11)和式(12)修正的随机向量 x c o r \boldsymbol{x_{cor}} xcor满足式(1)的所有约束,可以作为式(1)所示问题的其中一个可行解。
情况2.2.2:若
1
<
R
<
N
1 < R < N
1<R<N,则此时
x
1
,
⋯
,
x
R
x_1, \cdots, x_R
x1,⋯,xR可以按照如式(10)所示的形式由
x
R
+
1
,
⋯
,
x
N
x_{R + 1}, \cdots, x_N
xR+1,⋯,xN线性表示
x
i
=
b
R
R
E
F
,
i
−
∑
j
=
1
N
−
R
a
~
i
,
j
x
R
+
j
,
i
∈
{
1
,
⋯
,
R
}
\begin{equation} x_i = b_{RREF, i} - \displaystyle \sum_{j = 1}^{N - R} \tilde{a}_{i, j} x_{R + j}, i ∈ \{ 1, \cdots, R \} \end{equation}
xi=bRREF,i−j=1∑N−Ra~i,jxR+j,i∈{1,⋯,R}
结合式(1)中的对
x
1
,
⋯
,
x
R
x_1, \cdots, x_R
x1,⋯,xR的上下限约束,不难看出要使变量
x
1
,
⋯
,
x
R
x_1, \cdots, x_R
x1,⋯,xR满足上下限约束条件,必然有
x
‾
i
≤
x
i
=
b
R
R
E
F
,
i
−
∑
j
=
1
N
−
R
a
~
i
,
j
x
R
+
j
≤
x
‾
i
,
i
∈
{
1
,
⋯
,
R
}
\begin{equation} \underline{x}_i ≤ x_i = b_{RREF, i} - \displaystyle \sum_{j = 1}^{N - R} \tilde{a}_{i, j} x_{R + j} ≤ \overline{x}_i, i ∈ \{ 1, \cdots, R \} \end{equation}
xi≤xi=bRREF,i−j=1∑N−Ra~i,jxR+j≤xi,i∈{1,⋯,R}
此时
x
R
+
1
,
⋯
,
x
N
x_{R + 1}, \cdots, x_N
xR+1,⋯,xN满足
b
R
R
E
F
,
i
−
x
‾
i
≤
∑
j
=
1
N
−
R
a
~
i
,
j
x
R
+
j
≤
b
R
R
E
F
,
i
−
x
‾
i
,
i
∈
{
1
,
⋯
,
R
}
\begin{equation} b_{RREF, i} - \overline{x}_i ≤ \displaystyle \sum_{j = 1}^{N - R} \tilde{a}_{i, j} x_{R + j} ≤ b_{RREF, i} - \underline{x}_i, i ∈ \{ 1, \cdots, R \} \end{equation}
bRREF,i−xi≤j=1∑N−Ra~i,jxR+j≤bRREF,i−xi,i∈{1,⋯,R}
将
x
g
e
n
,
R
+
1
,
⋯
,
x
g
e
n
,
N
x_{gen, R + 1}, \cdots, x_{gen, N}
xgen,R+1,⋯,xgen,N代入式(15),则:
情况2.2.2.1:若
x
g
e
n
,
R
+
1
,
⋯
,
x
g
e
n
,
N
x_{gen, R + 1}, \cdots, x_{gen, N}
xgen,R+1,⋯,xgen,N满足式(15)所示的约束条件,则可直接按照式(16)所示的形式得到
x
c
o
r
\boldsymbol{x_{cor}}
xcor
x
c
o
r
,
j
=
{
b
R
R
E
F
,
j
−
∑
k
=
1
N
−
R
a
~
j
,
k
x
g
e
n
,
R
+
k
(
j
∈
{
1
,
⋯
,
R
}
)
x
g
e
n
,
j
(
j
∈
{
R
+
1
,
⋯
,
N
}
)
\begin{equation} x_{cor, j} = \begin{cases} b_{RREF, j} - \displaystyle \sum_{k = 1}^{N - R} \tilde{a}_{j, k} x_{gen, R + k} & \left( j ∈ \{ 1, \cdots, R \} \right) \\ x_{gen, j} & \left( j ∈ \{ R + 1, \cdots, N \} \right) \end{cases} \end{equation}
xcor,j=⎩
⎨
⎧bRREF,j−k=1∑N−Ra~j,kxgen,R+kxgen,j(j∈{1,⋯,R})(j∈{R+1,⋯,N})
可以验证,通过式(16)修正的随机向量
x
c
o
r
\boldsymbol{x_{cor}}
xcor满足式(1)的所有约束,可以作为式(1)所示问题的其中一个可行解。
情况2.2.2.2:若
x
g
e
n
,
R
+
1
,
⋯
,
x
g
e
n
,
N
x_{gen, R + 1}, \cdots, x_{gen, N}
xgen,R+1,⋯,xgen,N不满足式(15)所示的约束条件,此时必然存在
k
∈
{
1
,
⋯
,
R
}
k ∈ \{ 1, \cdots, R \}
k∈{1,⋯,R},使得
x
g
e
n
,
R
+
1
,
⋯
,
x
g
e
n
,
N
x_{gen, R + 1}, \cdots, x_{gen, N}
xgen,R+1,⋯,xgen,N无法满足式(15)中的第
k
k
k个约束条件。设
b
R
R
E
F
,
k
−
x
‾
k
≤
b
~
c
o
r
,
k
=
∑
j
=
1
N
−
R
a
~
k
,
j
x
c
o
r
,
R
+
j
≤
b
R
R
E
F
,
k
−
x
‾
k
\begin{equation} b_{RREF, k} - \overline{x}_k ≤ \tilde{b}_{cor, k} = \displaystyle \sum_{j = 1}^{N - R} \tilde{a}_{k, j} x_{cor, R + j} ≤ b_{RREF, k} - \underline{x}_k \end{equation}
bRREF,k−xk≤b~cor,k=j=1∑N−Ra~k,jxcor,R+j≤bRREF,k−xk
则有:
情况2.2.2.2.1:若存在 k ∈ { 1 , ⋯ , R } k ∈ \{ 1, \cdots, R \} k∈{1,⋯,R},使得 b R R E F , k − x ‾ k < ( ∑ j = 1 , a ~ k , j > 0 N − R a ~ k , j x ‾ R + j + ∑ j = 1 , a ~ k , j < 0 N − R a ~ k , j x ‾ R + j ) b_{RREF, k} - \underline{x}_k < \left( \displaystyle \sum_{j = 1, \tilde{a}_{k, j} > 0}^{N - R} \tilde{a}_{k, j} \underline{x}_{R + j} + \displaystyle \sum_{j = 1, \tilde{a}_{k, j} < 0}^{N - R} \tilde{a}_{k, j} \overline{x}_{R + j} \right) bRREF,k−xk< j=1,a~k,j>0∑N−Ra~k,jxR+j+j=1,a~k,j<0∑N−Ra~k,jxR+j 或 b R R E F , k − x ‾ k > ( ∑ j = 1 , a ~ k , j > 0 N − R a ~ k , j x ‾ R + j + ∑ j = 1 , a ~ k , j < 0 N − R a ~ k , j x ‾ R + j ) b_{RREF, k} - \overline{x}_k > \left( \displaystyle \sum_{j = 1, \tilde{a}_{k, j} > 0}^{N - R} \tilde{a}_{k, j} \overline{x}_{R + j} + \displaystyle \sum_{j = 1, \tilde{a}_{k, j} < 0}^{N - R} \tilde{a}_{k, j} \underline{x}_{R + j} \right) bRREF,k−xk> j=1,a~k,j>0∑N−Ra~k,jxR+j+j=1,a~k,j<0∑N−Ra~k,jxR+j ,则根据线性函数的单调性,显然无法在 x \boldsymbol{x} x的取值范围内找到能够满足该线性不等式约束条件的随机向量,式(1)所示的线性方程约束问题无解,因此无法将 x g e n \boldsymbol{x_{gen}} xgen修正为 x c o r \boldsymbol{x_{cor}} xcor。
情况2.2.2.2.2:若对任意的 k ∈ { 1 , ⋯ , R } k ∈ \{ 1, \cdots, R \} k∈{1,⋯,R},都有 ( ∑ j = 1 , a ~ k , j > 0 N − R a ~ k , j x ‾ R + j + ∑ j = 1 , a ~ k , j < 0 N − R a ~ k , j x ‾ R + j ) ≤ b R R E F , k − x ‾ k ≤ b R R E F , k − x ‾ k ≤ ( ∑ j = 1 , a ~ k , j > 0 N − R a ~ k , j x ‾ R + j + ∑ j = 1 , a ~ k , j < 0 N − R a ~ k , j x ‾ R + j ) \left( \displaystyle \sum_{j = 1, \tilde{a}_{k, j} > 0}^{N - R} \tilde{a}_{k, j} \underline{x}_{R + j} + \displaystyle \sum_{j = 1, \tilde{a}_{k, j} < 0}^{N - R} \tilde{a}_{k, j} \overline{x}_{R + j} \right) ≤ b_{RREF, k} - \overline{x}_k ≤ b_{RREF, k} - \underline{x}_k ≤ \left( \displaystyle \sum_{j = 1, \tilde{a}_{k, j} > 0}^{N - R} \tilde{a}_{k, j} \overline{x}_{R + j} + \displaystyle \sum_{j = 1, \tilde{a}_{k, j} < 0}^{N - R} \tilde{a}_{k, j} \underline{x}_{R + j} \right) j=1,a~k,j>0∑N−Ra~k,jxR+j+j=1,a~k,j<0∑N−Ra~k,jxR+j ≤bRREF,k−xk≤bRREF,k−xk≤ j=1,a~k,j>0∑N−Ra~k,jxR+j+j=1,a~k,j<0∑N−Ra~k,jxR+j ,则仍需分如下情况进行讨论,将 x g e n \boldsymbol{x_{gen}} xgen修正为 x c o r \boldsymbol{x_{cor}} xcor:
情况2.2.2.2.2.1:若
∑
j
=
1
N
−
R
a
~
k
,
j
x
g
e
n
,
R
+
j
>
b
R
R
E
F
,
k
−
x
‾
k
≥
b
~
c
o
r
,
k
\displaystyle \sum_{j = 1}^{N - R} \tilde{a}_{k, j} x_{gen, R + j} > b_{RREF, k} - \underline{x}_k ≥ \tilde{b}_{cor, k}
j=1∑N−Ra~k,jxgen,R+j>bRREF,k−xk≥b~cor,k,则选取式(15)中的第
k
k
k个约束条件,依照博客《一种单线性方程约束下的生成随机数修正方法(结论与应用)》中的式(4),将
x
g
e
n
,
R
+
1
,
⋯
,
x
g
e
n
,
N
x_{gen, R + 1}, \cdots, x_{gen, N}
xgen,R+1,⋯,xgen,N修正为
x
c
o
r
,
R
+
1
,
⋯
,
x
c
o
r
,
N
x_{cor, R + 1}, \cdots, x_{cor, N}
xcor,R+1,⋯,xcor,N
x
c
o
r
,
R
+
j
=
{
b
~
c
o
r
,
k
−
(
∑
j
=
1
,
a
~
k
,
j
>
0
N
−
R
a
~
k
,
j
x
‾
R
+
j
+
∑
j
=
1
,
a
~
k
,
j
<
0
N
−
R
a
~
k
,
j
x
‾
R
+
j
)
∑
j
=
1
,
a
~
k
,
j
>
0
N
−
R
a
~
k
,
j
(
x
g
e
n
,
R
+
j
−
x
‾
R
+
j
)
+
∑
j
=
1
,
a
~
k
,
j
<
0
N
−
R
a
~
k
,
j
(
x
g
e
n
,
R
+
j
−
x
‾
R
+
j
)
(
x
g
e
n
,
R
+
j
−
x
‾
R
+
j
)
+
x
‾
R
+
j
(
a
~
k
,
j
>
0
)
x
g
e
n
,
R
+
j
(
a
~
k
,
j
=
0
)
b
~
c
o
r
,
k
−
(
∑
j
=
1
,
a
~
k
,
j
>
0
N
−
R
a
~
k
,
j
x
‾
R
+
j
+
∑
j
=
1
,
a
~
k
,
j
<
0
N
−
R
a
~
k
,
j
x
‾
R
+
j
)
∑
j
=
1
,
a
~
k
,
j
>
0
N
−
R
a
~
k
,
j
(
x
g
e
n
,
R
+
j
−
x
‾
R
+
j
)
+
∑
j
=
1
,
a
~
k
,
j
<
0
N
−
R
a
~
k
,
j
(
x
g
e
n
,
R
+
j
−
x
‾
R
+
j
)
(
x
g
e
n
,
R
+
j
−
x
‾
R
+
j
)
+
x
‾
R
+
j
(
a
~
k
,
j
<
0
)
\begin{equation} x_{cor, R + j} = \begin{cases} \dfrac{\tilde{b}_{cor, k} - \left( \displaystyle \sum_{j = 1, \tilde{a}_{k, j} > 0}^{N - R} \tilde{a}_{k, j} \underline{x}_{R + j} + \displaystyle \sum_{j = 1, \tilde{a}_{k, j} < 0}^{N - R} \tilde{a}_{k, j} \overline{x}_{R + j} \right)} {\displaystyle \sum_{j = 1,\tilde{a}_{k, j} > 0}^{N - R} \tilde{a}_{k, j} \left( x_{gen, R + j} - \underline{x}_{R + j} \right) + \displaystyle \sum_{j = 1, \tilde{a}_{k, j} < 0}^{N - R} \tilde{a}_{k, j} \left( x_{gen, R + j} - \overline{x}_{R + j} \right)} \left( x_{gen, R + j} - \underline{x}_{R + j} \right) + \underline{x}_{R + j} & \left( \tilde{a}_{k, j} > 0 \right) \\ x_{gen, R + j} & \left( \tilde{a}_{k, j} = 0 \right) \\ \dfrac{\tilde{b}_{cor, k} - \left( \displaystyle \sum_{j = 1, \tilde{a}_{k, j} > 0}^{N - R} \tilde{a}_{k, j} \underline{x}_{R + j} + \displaystyle \sum_{j = 1, \tilde{a}_{k, j} < 0}^{N - R} \tilde{a}_{k, j} \overline{x}_{R + j}\right)} {\displaystyle \sum_{j = 1,\tilde{a}_{k, j} > 0}^{N - R} \tilde{a}_{k, j} \left( x_{gen, R + j} - \underline{x}_{R + j} \right) + \displaystyle \sum_{j = 1, \tilde{a}_{k, j} < 0}^{N - R} \tilde{a}_{k, j} \left( x_{gen, R + j} - \overline{x}_{R + j} \right)} \left( x_{gen, R + j} - \overline{x}_{R + j} \right)+\overline{x}_{R + j} & \left( \tilde{a}_{k, j} < 0 \right) \\ \end{cases} \end{equation}
xcor,R+j=⎩
⎨
⎧j=1,a~k,j>0∑N−Ra~k,j(xgen,R+j−xR+j)+j=1,a~k,j<0∑N−Ra~k,j(xgen,R+j−xR+j)b~cor,k−
j=1,a~k,j>0∑N−Ra~k,jxR+j+j=1,a~k,j<0∑N−Ra~k,jxR+j
(xgen,R+j−xR+j)+xR+jxgen,R+jj=1,a~k,j>0∑N−Ra~k,j(xgen,R+j−xR+j)+j=1,a~k,j<0∑N−Ra~k,j(xgen,R+j−xR+j)b~cor,k−
j=1,a~k,j>0∑N−Ra~k,jxR+j+j=1,a~k,j<0∑N−Ra~k,jxR+j
(xgen,R+j−xR+j)+xR+j(a~k,j>0)(a~k,j=0)(a~k,j<0)
由博客《一种单线性方程约束下的生成随机数修正方法(结论与应用)》的讨论可知,修正后的
x
c
o
r
,
R
+
1
,
⋯
,
x
c
o
r
,
N
x_{cor, R + 1}, \cdots, x_{cor, N}
xcor,R+1,⋯,xcor,N既满足式(15)中的第
k
k
k个约束条件,又满足式(1)中对
x
R
+
1
,
⋯
,
x
R
+
j
,
⋯
,
x
N
x_{R + 1}, \cdots, x_{R + j}, \cdots, x_N
xR+1,⋯,xR+j,⋯,xN的上下界约束,但无法保证满足式(15)中剩余的约束条件。为使其满足所有约束条件,须将修正后的
x
c
o
r
,
R
+
1
,
⋯
,
x
c
o
r
,
N
x_{cor, R + 1}, \cdots, x_{cor, N}
xcor,R+1,⋯,xcor,N代入式(15),并与式(17)联立,可知
b
~
c
o
r
,
k
\tilde{b}_{cor, k}
b~cor,k须满足
b
~
‾
c
o
r
,
k
≤
b
~
c
o
r
,
k
≤
b
~
‾
c
o
r
,
k
\begin{equation} \underline{\tilde{b}}_{cor, k} ≤ \tilde{b}_{cor, k} ≤ \overline{\tilde{b}}_{cor, k} \end{equation}
b~cor,k≤b~cor,k≤b~cor,k
其中:
b
~
‾
c
o
r
,
k
\underline{\tilde{b}}_{cor, k}
b~cor,k和
b
~
‾
c
o
r
,
k
\overline{\tilde{b}}_{cor, k}
b~cor,k分别满足
b
~
‾
c
o
r
,
k
=
max
i
=
1
R
[
b
~
‾
c
o
r
,
k
′
(
i
)
,
b
~
‾
c
o
r
,
k
′
′
(
i
)
]
b
~
‾
c
o
r
,
k
=
min
i
=
1
R
[
b
~
‾
c
o
r
,
k
′
(
i
)
,
b
~
‾
c
o
r
,
k
′
′
(
i
)
]
\begin{equation} \begin{split} \underline{\tilde{b}}_{cor, k} &= \max_{i = 1}^R \left[ \underline{\tilde{b}}'_{cor, k} \left( i \right), \underline{\tilde{b}}''_{cor, k} \left( i \right) \right] \\ \overline{\tilde{b}}_{cor, k} &= \min_{i = 1}^R \left[ \overline{\tilde{b}}'_{cor, k} \left( i \right), \overline{\tilde{b}}''_{cor, k} \left( i \right) \right] \\ \end{split} \end{equation}
b~cor,kb~cor,k=i=1maxR[b~cor,k′(i),b~cor,k′′(i)]=i=1minR[b~cor,k′(i),b~cor,k′′(i)]
剩余内容参见博客 《一种线性方程约束下生成随机数修正的一般性方法(中)》