修正方法
设需要生成一组如下所示的
N
N
N维随机向量
x
=
[
x
1
⋯
x
i
⋯
x
N
]
T
\boldsymbol{x}=\left[ \begin{matrix} x_1 & \cdots & x_i & \cdots & x_N \end{matrix} \right]^T
x=[x1⋯xi⋯xN]T满足如式(1)所示的约束条件
{
x
i
∈
[
x
‾
i
,
x
‾
i
]
,
i
∈
{
1
,
⋯
,
N
}
∑
i
=
1
N
a
i
x
i
=
b
\begin{equation} \begin{cases} x_i∈\left[ \underline{x}_i, \overline{x}_i \right], i ∈ \{ 1, \cdots, N \} \\ \displaystyle \sum_{i=1}^{N} a_i x_i=b \\ \end{cases} \end{equation}
⎩
⎨
⎧xi∈[xi,xi],i∈{1,⋯,N}i=1∑Naixi=b
其中:
x
‾
i
\underline{x}_i
xi和
x
‾
i
\overline{x}_i
xi分别是第
i
i
i维随机数
x
i
x_i
xi的下界和上界;
a
i
a_i
ai为线性方程约束中随机数
x
i
x_i
xi的系数,方程中的
a
i
a_i
ai不能全部等于
0
0
0;
b
b
b为方程的常数项。
若按照如式(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
,
i
=
r
i
(
x
‾
i
−
x
‾
i
)
+
x
‾
i
,
i
∈
{
1
,
⋯
,
N
}
\begin{equation} x_{gen, i}=r_i \left(\overline{x}_i - \underline{x}_i \right) + \underline{x}_i, i ∈ \{ 1,\cdots, N \} \end{equation}
xgen,i=ri(xi−xi)+xi,i∈{1,⋯,N}
其中
r
i
r_i
ri为
[
0
,
1
]
[0,1]
[0,1]上满足特定概率分布的随机数,易得
x
‾
i
≤
x
g
e
n
,
i
≤
(
x
‾
i
−
x
‾
i
)
+
x
‾
i
=
x
‾
i
,
i
∈
{
1
,
⋯
,
N
}
\begin{equation} \underline{x}_i ≤ x_{gen, i} ≤ \left( \overline{x}_i - \underline{x}_i \right) + \underline{x}_i = \underline{x}_i, i ∈ \{ 1, \cdots, N \} \end{equation}
xi≤xgen,i≤(xi−xi)+xi=xi,i∈{1,⋯,N}
但该随机数生成方法无法保证满足式(1)中的线性方程约束,此时需要通过如下方法将
x
g
e
n
\boldsymbol{x_{gen}}
xgen修正为
x
c
o
r
=
[
x
c
o
r
,
1
⋯
x
c
o
r
,
i
⋯
x
c
o
r
,
N
]
T
\boldsymbol{x_{cor}} = \left[ \begin{matrix}x_{cor, 1} & \cdots & x_{cor, i} & \cdots & x_{cor, N} \end{matrix} \right]^T
xcor=[xcor,1⋯xcor,i⋯xcor,N]T。
情况1:当
∑
i
=
1
N
a
i
x
g
e
n
,
i
>
b
\displaystyle \sum_{i=1}^{N} a_ix_{gen, i} > b
i=1∑Naixgen,i>b时,可按如式(4)所示的形式进行修正
x
c
o
r
,
i
=
{
b
−
(
∑
i
=
1
,
a
i
>
0
N
a
i
x
‾
i
+
∑
i
=
1
,
a
i
<
0
N
a
i
x
‾
i
)
∑
i
=
1
,
a
i
>
0
N
a
i
(
x
g
e
n
,
i
−
x
‾
i
)
+
∑
i
=
1
,
a
i
<
0
N
a
i
(
x
g
e
n
,
i
−
x
‾
i
)
(
x
g
e
n
,
i
−
x
‾
i
)
+
x
‾
i
(
a
i
>
0
)
x
g
e
n
,
i
(
a
i
=
0
)
b
−
(
∑
i
=
1
,
a
i
>
0
N
a
i
x
‾
i
+
∑
i
=
1
,
a
i
<
0
N
a
i
x
‾
i
)
∑
i
=
1
,
a
i
>
0
N
a
i
(
x
g
e
n
,
i
−
x
‾
i
)
+
∑
i
=
1
,
a
i
<
0
N
a
i
(
x
g
e
n
,
i
−
x
‾
i
)
(
x
g
e
n
,
i
−
x
‾
i
)
+
x
‾
i
(
a
i
<
0
)
\begin{equation} {x_{cor, i}} = \begin{cases} \dfrac{b - \left( \displaystyle \sum_{i=1,a_i>0}^{N} a_i \underline{x}_i + \displaystyle \sum_{i=1, a_i<0}^{N} a_i \overline{x}_i\right)} {\displaystyle \sum_{i=1,a_i>0}^{N} a_i \left(x_{gen, i} - \underline{x}_i \right) + \displaystyle \sum_{i=1, a_i<0}^{N} a_i \left( x_{gen, i} - \overline{x}_i \right)} \left( x_{gen, i} - \underline{x}_i \right) + \underline{x}_i & \left( a_i > 0 \right) \\ x_{gen, i} & \left( a_i = 0 \right) \\ \dfrac{b - \left( \displaystyle \sum_{i=1,a_i>0}^{N} a_i \underline{x}_i + \displaystyle \sum_{i=1, a_i<0}^{N} a_i \overline{x}_i\right)} {\displaystyle \sum_{i=1,a_i>0}^{N} a_i \left(x_{gen, i} - \overline{x}_i \right) + \displaystyle \sum_{i=1, a_i<0}^{N} a_i \left(x_{gen, i} - \underline{x}_i \right)}\left( x_{gen, i}-\overline{x}_i \right)+\overline{x}_i & \left( a_i < 0 \right) \\ \end{cases} \end{equation}
xcor,i=⎩
⎨
⎧i=1,ai>0∑Nai(xgen,i−xi)+i=1,ai<0∑Nai(xgen,i−xi)b−(i=1,ai>0∑Naixi+i=1,ai<0∑Naixi)(xgen,i−xi)+xixgen,ii=1,ai>0∑Nai(xgen,i−xi)+i=1,ai<0∑Nai(xgen,i−xi)b−(i=1,ai>0∑Naixi+i=1,ai<0∑Naixi)(xgen,i−xi)+xi(ai>0)(ai=0)(ai<0)
情况2:当
∑
i
=
1
N
a
i
x
g
e
n
,
i
<
b
\displaystyle \sum_{i=1}^{N} a_i x_{gen, i} < b
i=1∑Naixgen,i<b时,可按如式(5)所示的形式进行修正
x
c
o
r
,
i
=
{
b
−
(
∑
i
=
1
,
a
i
>
0
N
a
i
x
‾
i
+
∑
i
=
1
,
a
i
<
0
N
a
i
x
‾
i
)
∑
i
=
1
,
a
i
>
0
N
a
i
(
x
g
e
n
,
i
−
x
‾
i
)
+
∑
i
=
1
,
a
i
<
0
N
a
i
(
x
g
e
n
,
i
−
x
‾
i
)
(
x
g
e
n
,
i
−
x
‾
i
)
+
x
‾
i
(
a
i
>
0
)
x
g
e
n
,
i
(
a
i
=
0
)
b
−
(
∑
i
=
1
,
a
i
>
0
N
a
i
x
‾
i
+
∑
i
=
1
,
a
i
<
0
N
a
i
x
‾
i
)
∑
i
=
1
,
a
i
>
0
N
a
i
(
x
g
e
n
,
i
−
x
‾
i
)
+
∑
i
=
1
,
a
i
<
0
N
a
i
(
x
g
e
n
,
i
−
x
‾
i
)
(
x
g
e
n
,
i
−
x
‾
i
)
+
x
‾
i
(
a
i
<
0
)
\begin{equation} {x_{cor, i}} = \begin{cases} \dfrac{b - \left( \displaystyle \sum_{i=1,a_i>0}^{N} a_i \overline{x}_i + \displaystyle\sum_{i=1, a_i<0}^{N} a_i \underline{x}_i \right)} {\displaystyle \sum_{i=1,a_i>0}^{N} a_i \left(x_{gen, i} - \underline{x}_i \right) + \displaystyle\sum_{i=1, a_i<0}^{N} a_i \left(x_{gen, i} - \overline{x}_i \right)} \left( x_{gen, i} - \overline{x}_i \right) + \overline{x}_i & \left( a_i > 0 \right) \\ x_{gen, i} & \left( a_i = 0\right) \\ \dfrac{b - \left( \displaystyle \sum_{i=1, a_i>0}^{N} a_i \overline{x}_i + \displaystyle \sum_{i=1, a_i<0}^{N} a_i \underline{x}_i \right)} {\displaystyle \sum_{i=1,a_i>0}^{N} a_i \left( x_{gen, i} - \overline{x}_i \right) + \displaystyle \sum_{i=1, a_i<0}^{N} a_i \left(x_{gen, i} - \underline{x}_i \right)} \left( x_{gen, i} - \underline{x}_i \right) + \underline{x}_i & \left( a_i < 0 \right) \\ \end{cases} \end{equation}
xcor,i=⎩
⎨
⎧i=1,ai>0∑Nai(xgen,i−xi)+i=1,ai<0∑Nai(xgen,i−xi)b−(i=1,ai>0∑Naixi+i=1,ai<0∑Naixi)(xgen,i−xi)+xixgen,ii=1,ai>0∑Nai(xgen,i−xi)+i=1,ai<0∑Nai(xgen,i−xi)b−(i=1,ai>0∑Naixi+i=1,ai<0∑Naixi)(xgen,i−xi)+xi(ai>0)(ai=0)(ai<0)
可以验证,当且仅当 ∑ i = 1 , a i > 0 N a i x ‾ i + ∑ i = 1 , a i < 0 N a i x ‾ i ≤ b ≤ ∑ i = 1 , a i > 0 N a i x ‾ i + ∑ i = 1 , a i < 0 N a i x ‾ i \displaystyle \sum_{i = 1,a_i>0}^{N} a_i \underline{x}_i + \displaystyle\sum_{i = 1, a_i < 0}^{N} a_i \overline{x}_i ≤ b ≤ \displaystyle \sum_{i = 1, a_i > 0}^{N} a_i \overline{x}_i + \displaystyle \sum_{i = 1, a_i<0}^{N} a_i \underline{x}_i i=1,ai>0∑Naixi+i=1,ai<0∑Naixi≤b≤i=1,ai>0∑Naixi+i=1,ai<0∑Naixi时,通过式(4)和式(5)修正的随机向量 x c o r \boldsymbol{x_{cor}} xcor满足式(1)的所有约束,可以作为式(1)所示问题的其中一个可行解。
实例分析
现有一组8维未知向量
x
\boldsymbol{x}
x,要求满足如式(6)所示的约束条件
{
x
1
∈
[
−
3
,
6
]
x
2
∈
[
−
1
,
4
]
x
3
∈
[
2
,
10
]
x
4
∈
[
−
4
,
8
]
x
5
∈
[
0
,
11
]
x
6
∈
[
1
,
3
]
x
7
∈
[
−
6
,
4
]
x
8
∈
[
−
5
,
4
]
6
x
1
−
3
x
2
+
x
3
+
7
x
4
−
5
x
5
−
3
x
7
+
8
x
8
=
−
12
\begin{equation} \begin{cases} x_1 ∈ \left[ -3, 6 \right] \\ x_2 ∈ \left[ -1, 4 \right] \\ x_3 ∈ \left[ 2, 10 \right] \\ x_4 ∈ \left[ -4, 8 \right] \\ x_5 ∈ \left[ 0, 11 \right] \\ x_6 ∈ \left[ 1, 3 \right] \\ x_7 ∈ \left[ -6, 4 \right] \\ x_8 ∈ \left[ -5, 4 \right] \\ 6x_1 - 3x_2 + x_3 + 7x_4 - 5x_5 - 3x_7 + 8x_8 = -12 \\ \end{cases} \end{equation}
⎩
⎨
⎧x1∈[−3,6]x2∈[−1,4]x3∈[2,10]x4∈[−4,8]x5∈[0,11]x6∈[1,3]x7∈[−6,4]x8∈[−5,4]6x1−3x2+x3+7x4−5x5−3x7+8x8=−12
实例1:若按照式(2)生成的随机向量为
x
g
e
n
=
[
4
,
3
,
6
,
5
,
5
,
2
,
−
2
,
0
]
T
\boldsymbol{x_{gen}} = \left[ 4, 3, 6, 5, 5, 2, -2, 0 \right]^T
xgen=[4,3,6,5,5,2,−2,0]T,则
x
g
e
n
\boldsymbol{x_{gen}}
xgen满足式(6)中所有变量的上下限约束条件,但经式(7)计算式(6)中线性方程的常数项
b
g
e
n
b_{gen}
bgen
b
g
e
n
=
6
x
g
e
n
,
1
−
3
x
g
e
n
,
2
+
x
g
e
n
,
3
+
7
x
g
e
n
,
4
−
5
x
g
e
n
,
5
−
3
x
g
e
n
,
7
+
8
x
g
e
n
,
8
=
37
>
−
12
\begin{equation} b_{gen} = 6x_{gen, 1} - 3x_{gen, 2} + x_{gen, 3} + 7x_{gen, 4} - 5x_{gen, 5} - 3x_{gen, 7} + 8x_{gen, 8} = 37 > -12 \end{equation}
bgen=6xgen,1−3xgen,2+xgen,3+7xgen,4−5xgen,5−3xgen,7+8xgen,8=37>−12
不满足式(6)的约束条件,
x
g
e
n
\boldsymbol{x_{gen}}
xgen不能作为式(6)所示优化问题的一个可行解。
为满足优化问题中的所有约束条件,应按照式(4)所示方法将
x
g
e
n
\boldsymbol{x_{gen}}
xgen修正为
x
c
o
r
\boldsymbol{x_{cor}}
xcor。将
x
g
e
n
\boldsymbol{x_{gen}}
xgen代入式(4),则修正后的
x
c
o
r
\boldsymbol{x_{cor}}
xcor为
{
x
c
o
r
,
1
=
−
12
−
[
6
×
(
−
3
)
+
(
−
3
)
×
4
+
1
×
2
+
7
×
(
−
4
)
+
(
−
5
)
×
11
+
(
−
3
)
×
4
+
8
×
(
−
5
)
]
6
×
[
4
−
(
−
3
)
]
+
(
−
3
)
×
(
3
−
4
)
+
1
×
(
6
−
2
)
+
7
×
[
5
−
(
−
4
)
]
+
(
−
5
)
×
(
5
−
11
)
+
(
−
3
)
×
[
(
−
2
)
−
4
]
+
8
×
[
0
−
(
−
5
)
]
×
[
4
−
(
−
3
)
]
+
(
−
3
)
=
2.285
x
c
o
r
,
2
=
−
12
−
[
6
×
(
−
3
)
+
(
−
3
)
×
4
+
1
×
2
+
7
×
(
−
4
)
+
(
−
5
)
×
11
+
(
−
3
)
×
4
+
8
×
(
−
5
)
]
6
×
[
4
−
(
−
3
)
]
+
(
−
3
)
×
(
3
−
4
)
+
1
×
(
6
−
2
)
+
7
×
[
5
−
(
−
4
)
]
+
(
−
5
)
×
(
5
−
11
)
+
(
−
3
)
×
[
(
−
2
)
−
4
]
+
8
×
[
0
−
(
−
5
)
]
×
(
3
−
4
)
+
4
=
3.245
x
c
o
r
,
3
=
−
12
−
[
6
×
(
−
3
)
+
(
−
3
)
×
4
+
1
×
2
+
7
×
(
−
4
)
+
(
−
5
)
×
11
+
(
−
3
)
×
4
+
8
×
(
−
5
)
]
6
×
[
4
−
(
−
3
)
]
+
(
−
3
)
×
(
3
−
4
)
+
1
×
(
6
−
2
)
+
7
×
[
5
−
(
−
4
)
]
+
(
−
5
)
×
(
5
−
11
)
+
(
−
3
)
×
[
(
−
2
)
−
4
]
+
8
×
[
0
−
(
−
5
)
]
×
(
6
−
2
)
+
2
=
5.02
x
c
o
r
,
4
=
−
12
−
[
6
×
(
−
3
)
+
(
−
3
)
×
4
+
1
×
2
+
7
×
(
−
4
)
+
(
−
5
)
×
11
+
(
−
3
)
×
4
+
8
×
(
−
5
)
]
6
×
[
4
−
(
−
3
)
]
+
(
−
3
)
×
(
3
−
4
)
+
1
×
(
6
−
2
)
+
7
×
[
5
−
(
−
4
)
]
+
(
−
5
)
×
(
5
−
11
)
+
(
−
3
)
×
[
(
−
2
)
−
4
]
+
8
×
[
0
−
(
−
5
)
]
×
[
5
−
(
−
4
)
]
+
(
−
4
)
=
2.795
x
c
o
r
,
5
=
−
12
−
[
6
×
(
−
3
)
+
(
−
3
)
×
4
+
1
×
2
+
7
×
(
−
4
)
+
(
−
5
)
×
11
+
(
−
3
)
×
4
+
8
×
(
−
5
)
]
6
×
[
4
−
(
−
3
)
]
+
(
−
3
)
×
(
3
−
4
)
+
1
×
(
6
−
2
)
+
7
×
[
5
−
(
−
4
)
]
+
(
−
5
)
×
(
5
−
11
)
+
(
−
3
)
×
[
(
−
2
)
−
4
]
+
8
×
[
0
−
(
−
5
)
]
×
(
5
−
11
)
+
11
=
6.47
x
c
o
r
,
6
=
2
x
c
o
r
,
7
=
−
12
−
[
6
×
(
−
3
)
+
(
−
3
)
×
4
+
1
×
2
+
7
×
(
−
4
)
+
(
−
5
)
×
11
+
(
−
3
)
×
4
+
8
×
(
−
5
)
]
6
×
[
4
−
(
−
3
)
]
+
(
−
3
)
×
(
3
−
4
)
+
1
×
(
6
−
2
)
+
7
×
[
5
−
(
−
4
)
]
+
(
−
5
)
×
(
5
−
11
)
+
(
−
3
)
×
[
(
−
2
)
−
4
]
+
8
×
[
0
−
(
−
5
)
]
×
[
(
−
2
)
−
4
]
+
4
=
−
0.53
x
c
o
r
,
8
=
−
12
−
[
6
×
(
−
3
)
+
(
−
3
)
×
4
+
1
×
2
+
7
×
(
−
4
)
+
(
−
5
)
×
11
+
(
−
3
)
×
4
+
8
×
(
−
5
)
]
6
×
[
4
−
(
−
3
)
]
+
(
−
3
)
×
(
3
−
4
)
+
1
×
(
6
−
2
)
+
7
×
[
5
−
(
−
4
)
]
+
(
−
5
)
×
(
5
−
11
)
+
(
−
3
)
×
[
(
−
2
)
−
4
]
+
8
×
[
0
−
(
−
5
)
]
×
[
0
−
(
−
5
)
]
+
(
−
5
)
=
−
1.225
\begin{equation} \begin{cases} x_{cor, 1} = \dfrac{-12 - \left[ 6 \times \left( -3 \right) + \left( -3 \right) \times 4 + 1 \times 2 + 7 \times \left( -4 \right) + \left( -5 \right) \times 11 + \left( -3 \right) \times 4 + 8 \times \left( -5 \right) \right]} {6 \times \left[ 4 - \left( -3 \right) \right] + \left( -3 \right) \times \left( 3 - 4 \right) + 1 \times \left( 6 - 2 \right) + 7 \times \left[ 5 - \left( -4 \right) \right] + \left( -5 \right) \times \left( 5 - 11 \right) + \left( -3 \right) \times \left[ \left( -2 \right) - 4 \right] + 8 \times \left[ 0 - \left( -5 \right) \right]} \times \left[ 4 - \left( -3 \right) \right] + \left( -3 \right) = 2.285 \\ x_{cor, 2} = \dfrac{-12 - \left[ 6 \times \left( -3 \right) + \left( -3 \right) \times 4 + 1 \times 2 + 7 \times \left( -4 \right) + \left( -5 \right) \times 11 + \left( -3 \right) \times 4 + 8 \times \left( -5 \right) \right]} {6 \times \left[ 4 - \left( -3 \right) \right] + \left( -3 \right) \times \left( 3 - 4 \right) + 1 \times \left( 6 - 2 \right) + 7 \times \left[ 5 - \left( -4 \right) \right] + \left( -5 \right) \times \left( 5 - 11 \right) + \left( -3 \right) \times \left[ \left( -2 \right) - 4 \right] + 8 \times \left[ 0 - \left( -5 \right) \right]} \times \left( 3 - 4 \right) + 4 = 3.245 \\ x_{cor, 3} = \dfrac{-12 - \left[ 6 \times \left( -3 \right) + \left( -3 \right) \times 4 + 1 \times 2 + 7 \times \left( -4 \right) + \left( -5 \right) \times 11 + \left( -3 \right) \times 4 + 8 \times \left( -5 \right) \right]} {6 \times \left[ 4 - \left( -3 \right) \right] + \left( -3 \right) \times \left( 3 - 4 \right) + 1 \times \left( 6 - 2 \right) + 7 \times \left[ 5 - \left( -4 \right) \right] + \left( -5 \right) \times \left( 5 - 11 \right) + \left( -3 \right) \times \left[ \left( -2 \right) - 4 \right] + 8 \times \left[ 0 - \left( -5 \right) \right]} \times \left( 6 - 2 \right) + 2 = 5.02 \\ x_{cor, 4} = \dfrac{-12 - \left[ 6 \times \left( -3 \right) + \left( -3 \right) \times 4 + 1 \times 2 + 7 \times \left( -4 \right) + \left( -5 \right) \times 11 + \left( -3 \right) \times 4 + 8 \times \left( -5 \right) \right]} {6 \times \left[ 4 - \left( -3 \right) \right] + \left( -3 \right) \times \left( 3 - 4 \right) + 1 \times \left( 6 - 2 \right) + 7 \times \left[ 5 - \left( -4 \right) \right] + \left( -5 \right) \times \left( 5 - 11 \right) + \left( -3 \right) \times \left[ \left( -2 \right) - 4 \right] + 8 \times \left[ 0 - \left( -5 \right) \right]} \times \left[ 5 - \left( -4 \right) \right] + \left( -4 \right) = 2.795 \\ x_{cor, 5} = \dfrac{ -12 - \left[ 6 \times \left( -3 \right) + \left( -3 \right) \times 4 + 1 \times 2 + 7 \times \left( -4 \right) + \left( -5 \right) \times 11 + \left( -3 \right) \times 4 + 8 \times \left( -5 \right) \right]} {6 \times \left[ 4 - \left( -3 \right) \right] + \left( -3 \right) \times \left( 3 - 4 \right) + 1 \times \left( 6 - 2 \right) + 7 \times \left[ 5 - \left( -4 \right) \right] + \left( -5 \right) \times \left( 5 - 11 \right) + \left( -3 \right) \times \left[ \left( -2 \right) - 4 \right] + 8 \times \left[ 0 - \left( -5 \right) \right]} \times \left( 5 - 11 \right) + 11 = 6.47 \\ x_{cor, 6} = 2 \\ x_{cor, 7} = \dfrac{-12 - \left[ 6 \times \left( -3 \right) + \left( -3 \right) \times 4 + 1 \times 2 + 7 \times \left( -4 \right) + \left( -5 \right) \times 11 + \left( -3 \right) \times 4 + 8 \times \left( -5 \right) \right]} {6 \times \left[ 4 - \left( -3 \right) \right] + \left( -3 \right) \times \left( 3 - 4 \right) + 1 \times \left( 6 - 2 \right) + 7 \times \left[ 5 - \left( -4 \right) \right] + \left( -5 \right) \times \left( 5 - 11 \right) + \left( -3 \right) \times \left[ \left( -2 \right) - 4 \right] + 8 \times \left[ 0 - \left( -5 \right) \right]} \times \left[ \left( -2 \right) - 4 \right] + 4 = -0.53 \\ x_{cor, 8} = \dfrac{-12 - \left[ 6 \times \left( -3 \right) + \left( -3 \right) \times 4 + 1 \times 2 + 7 \times \left( -4 \right) + \left( -5 \right) \times 11 + \left( -3 \right) \times 4 + 8 \times \left( -5 \right) \right]} {6 \times \left[ 4 - \left( -3 \right) \right] + \left( -3 \right) \times \left( 3 - 4 \right) + 1 \times \left( 6 - 2 \right) + 7 \times \left[ 5 - \left( -4 \right) \right] + \left( -5 \right) \times \left( 5 - 11 \right) + \left( -3 \right) \times \left[ \left( -2 \right) - 4 \right] + 8 \times \left[ 0 - \left( -5 \right) \right]} \times \left[ 0 - \left( -5 \right) \right] + \left( -5 \right) = -1.225 \\ \end{cases} \end{equation}
⎩
⎨
⎧xcor,1=6×[4−(−3)]+(−3)×(3−4)+1×(6−2)+7×[5−(−4)]+(−5)×(5−11)+(−3)×[(−2)−4]+8×[0−(−5)]−12−[6×(−3)+(−3)×4+1×2+7×(−4)+(−5)×11+(−3)×4+8×(−5)]×[4−(−3)]+(−3)=2.285xcor,2=6×[4−(−3)]+(−3)×(3−4)+1×(6−2)+7×[5−(−4)]+(−5)×(5−11)+(−3)×[(−2)−4]+8×[0−(−5)]−12−[6×(−3)+(−3)×4+1×2+7×(−4)+(−5)×11+(−3)×4+8×(−5)]×(3−4)+4=3.245xcor,3=6×[4−(−3)]+(−3)×(3−4)+1×(6−2)+7×[5−(−4)]+(−5)×(5−11)+(−3)×[(−2)−4]+8×[0−(−5)]−12−[6×(−3)+(−3)×4+1×2+7×(−4)+(−5)×11+(−3)×4+8×(−5)]×(6−2)+2=5.02xcor,4=6×[4−(−3)]+(−3)×(3−4)+1×(6−2)+7×[5−(−4)]+(−5)×(5−11)+(−3)×[(−2)−4]+8×[0−(−5)]−12−[6×(−3)+(−3)×4+1×2+7×(−4)+(−5)×11+(−3)×4+8×(−5)]×[5−(−4)]+(−4)=2.795xcor,5=6×[4−(−3)]+(−3)×(3−4)+1×(6−2)+7×[5−(−4)]+(−5)×(5−11)+(−3)×[(−2)−4]+8×[0−(−5)]−12−[6×(−3)+(−3)×4+1×2+7×(−4)+(−5)×11+(−3)×4+8×(−5)]×(5−11)+11=6.47xcor,6=2xcor,7=6×[4−(−3)]+(−3)×(3−4)+1×(6−2)+7×[5−(−4)]+(−5)×(5−11)+(−3)×[(−2)−4]+8×[0−(−5)]−12−[6×(−3)+(−3)×4+1×2+7×(−4)+(−5)×11+(−3)×4+8×(−5)]×[(−2)−4]+4=−0.53xcor,8=6×[4−(−3)]+(−3)×(3−4)+1×(6−2)+7×[5−(−4)]+(−5)×(5−11)+(−3)×[(−2)−4]+8×[0−(−5)]−12−[6×(−3)+(−3)×4+1×2+7×(−4)+(−5)×11+(−3)×4+8×(−5)]×[0−(−5)]+(−5)=−1.225
将按照式(8)求出的
x
c
o
r
=
[
2.285
,
3.245
,
5.02
,
2.795
,
6.47
,
2
,
−
0.53
,
−
1.22
]
T
\boldsymbol{x_{cor}} = \left[ 2.285, 3.245, 5.02, 2.795, 6.47, 2, -0.53, -1.22 \right]^T
xcor=[2.285,3.245,5.02,2.795,6.47,2,−0.53,−1.22]T代入式(6)中的线性方程,则求出的常数项
b
c
o
r
b_{cor}
bcor为
b
c
o
r
=
6
x
c
o
r
,
1
−
3
x
c
o
r
,
2
+
x
c
o
r
,
3
+
7
x
c
o
r
,
4
−
5
x
c
o
r
,
5
−
3
x
c
o
r
,
7
+
x
c
o
r
,
8
=
−
12
\begin{equation} b_{cor} = 6x_{cor, 1} - 3x_{cor, 2} + x_{cor, 3} + 7x_{cor, 4} - 5x_{cor, 5} - 3x_{cor, 7} + x_{cor, 8} = -12 \end{equation}
bcor=6xcor,1−3xcor,2+xcor,3+7xcor,4−5xcor,5−3xcor,7+xcor,8=−12
满足式(6)中的所有约束条件, x c o r \boldsymbol{x_{cor}} xcor可以作为式(6)所示问题的其中一个可行解。
实例2:若按照式(2)生成的随机向量为
x
g
e
n
=
[
−
2
,
1
,
2
,
−
2
,
7
,
2
,
1
,
3
]
T
\boldsymbol{x_{gen}}=\left[-2, 1, 2, -2, 7, 2, 1, 3\right]^T
xgen=[−2,1,2,−2,7,2,1,3]T,则
x
g
e
n
\boldsymbol{x_{gen}}
xgen满足式(6)中所有变量的上下限约束条件,但经式(10)计算式(6)中线性方程的常数项
b
g
e
n
b_{gen}
bgen
b
g
e
n
=
6
x
g
e
n
,
1
−
3
x
g
e
n
,
2
+
x
g
e
n
,
3
+
7
x
g
e
n
,
4
−
5
x
g
e
n
,
5
−
3
x
g
e
n
,
7
+
8
x
g
e
n
,
8
=
−
41
<
−
12
\begin{equation} b_{gen} = 6x_{gen, 1} - 3x_{gen, 2} + x_{gen, 3} + 7x_{gen, 4} - 5x_{gen, 5} - 3x_{gen, 7} + 8x_{gen, 8} = -41 < -12 \end{equation}
bgen=6xgen,1−3xgen,2+xgen,3+7xgen,4−5xgen,5−3xgen,7+8xgen,8=−41<−12
不满足式(6)的约束条件,
x
g
e
n
\boldsymbol{x_{gen}}
xgen不能作为式(6)所示优化问题的一个可行解。
为满足优化问题中的所有约束条件,应按照式(5)所示方法将
x
g
e
n
\boldsymbol{x_{gen}}
xgen修正为
x
c
o
r
\boldsymbol{x_{cor}}
xcor。将
x
g
e
n
\boldsymbol{x_{gen}}
xgen代入式(5),则修正后的
x
c
o
r
\boldsymbol{x_{cor}}
xcor为
{
x
c
o
r
,
1
=
−
12
−
[
6
×
6
+
(
−
3
)
×
(
−
1
)
+
1
×
10
+
7
×
8
+
(
−
5
)
×
0
+
(
−
3
)
×
(
−
6
)
+
8
×
4
]
6
×
[
(
−
2
)
−
6
]
+
(
−
3
)
×
[
1
−
(
−
1
)
]
+
1
×
(
2
−
10
)
+
7
×
[
(
−
2
)
−
8
]
+
(
−
5
)
×
(
7
−
0
)
+
(
−
3
)
×
[
1
−
(
−
6
)
]
+
8
×
(
3
−
4
)
×
[
(
−
2
)
−
6
]
+
6
=
−
0.8163
x
c
o
r
,
2
=
−
12
−
[
6
×
6
+
(
−
3
)
×
(
−
1
)
+
1
×
10
+
7
×
8
+
(
−
5
)
×
0
+
(
−
3
)
×
(
−
6
)
+
8
×
4
]
6
×
[
(
−
2
)
−
6
]
+
(
−
3
)
×
[
1
−
(
−
1
)
]
+
1
×
(
2
−
10
)
+
7
×
[
(
−
2
)
−
8
]
+
(
−
5
)
×
(
7
−
0
)
+
(
−
3
)
×
[
1
−
(
−
6
)
]
+
8
×
(
3
−
4
)
×
[
1
−
(
−
1
)
]
+
(
−
1
)
=
0.7041
x
c
o
r
,
3
=
−
12
−
[
6
×
6
+
(
−
3
)
×
(
−
1
)
+
1
×
10
+
7
×
8
+
(
−
5
)
×
0
+
(
−
3
)
×
(
−
6
)
+
8
×
4
]
6
×
[
(
−
2
)
−
6
]
+
(
−
3
)
×
[
1
−
(
−
1
)
]
+
1
×
(
2
−
10
)
+
7
×
[
(
−
2
)
−
8
]
+
(
−
5
)
×
(
7
−
0
)
+
(
−
3
)
×
[
1
−
(
−
6
)
]
+
8
×
(
3
−
4
)
×
(
2
−
10
)
+
10
=
3.1837
x
c
o
r
,
4
=
−
12
−
[
6
×
6
+
(
−
3
)
×
(
−
1
)
+
1
×
10
+
7
×
8
+
(
−
5
)
×
0
+
(
−
3
)
×
(
−
6
)
+
8
×
4
]
6
×
[
(
−
2
)
−
6
]
+
(
−
3
)
×
[
1
−
(
−
1
)
]
+
1
×
(
2
−
10
)
+
7
×
[
(
−
2
)
−
8
]
+
(
−
5
)
×
(
7
−
0
)
+
(
−
3
)
×
[
1
−
(
−
6
)
]
+
8
×
(
3
−
4
)
×
[
(
−
2
)
−
8
]
+
8
=
−
0.5204
x
c
o
r
,
5
=
−
12
−
[
6
×
6
+
(
−
3
)
×
(
−
1
)
+
1
×
10
+
7
×
8
+
(
−
5
)
×
0
+
(
−
3
)
×
(
−
6
)
+
8
×
4
]
6
×
[
(
−
2
)
−
6
]
+
(
−
3
)
×
[
1
−
(
−
1
)
]
+
1
×
(
2
−
10
)
+
7
×
[
(
−
2
)
−
8
]
+
(
−
5
)
×
(
7
−
0
)
+
(
−
3
)
×
[
1
−
(
−
6
)
]
+
8
×
(
3
−
4
)
×
(
7
−
0
)
+
0
=
5.9643
x
c
o
r
,
6
=
2
x
c
o
r
,
7
=
−
12
−
[
6
×
6
+
(
−
3
)
×
(
−
1
)
+
1
×
10
+
7
×
8
+
(
−
5
)
×
0
+
(
−
3
)
×
(
−
6
)
+
8
×
4
]
6
×
[
(
−
2
)
−
6
]
+
(
−
3
)
×
[
1
−
(
−
1
)
]
+
1
×
(
2
−
10
)
+
7
×
[
(
−
2
)
−
8
]
+
(
−
5
)
×
(
7
−
0
)
+
(
−
3
)
×
[
1
−
(
−
6
)
]
+
8
×
(
3
−
4
)
×
[
1
−
(
−
6
)
]
+
(
−
6
)
=
−
0.0357
x
c
o
r
,
8
=
−
12
−
[
6
×
6
+
(
−
3
)
×
(
−
1
)
+
1
×
10
+
7
×
8
+
(
−
5
)
×
0
+
(
−
3
)
×
(
−
6
)
+
8
×
4
]
6
×
[
(
−
2
)
−
6
]
+
(
−
3
)
×
[
1
−
(
−
1
)
]
+
1
×
(
2
−
10
)
+
7
×
[
(
−
2
)
−
8
]
+
(
−
5
)
×
(
7
−
0
)
+
(
−
3
)
×
[
1
−
(
−
6
)
]
+
8
×
(
3
−
4
)
×
(
3
−
4
)
+
4
=
3.1480
\begin{equation} \begin{cases} x_{cor, 1} = \dfrac{-12 - \left[ 6 \times 6 + \left( -3 \right) \times \left( -1 \right) + 1 \times 10 + 7 \times 8 + \left( -5 \right) \times 0 + \left( -3 \right) \times \left( -6 \right) + 8 \times 4 \right]} {6 \times \left[ \left( -2 \right) - 6 \right] + \left( -3 \right) \times \left[ 1 - \left( -1 \right) \right] + 1 \times \left( 2 - 10 \right) + 7 \times \left[ \left( -2 \right) - 8 \right] + \left( -5 \right) \times \left( 7 - 0 \right) + \left( -3 \right) \times \left[ 1 - \left( -6 \right) \right] + 8 \times \left( 3 - 4 \right)} \times \left[ \left( -2 \right) - 6 \right] + 6 = -0.8163 \\ x_{cor, 2} = \dfrac{-12 - \left[ 6 \times 6 + \left( -3 \right) \times \left( -1 \right) + 1 \times 10 + 7 \times 8 + \left( -5 \right) \times 0 + \left( -3 \right) \times \left( -6 \right) + 8 \times 4 \right]} {6 \times \left[ \left( -2 \right) - 6 \right] + \left( -3 \right) \times \left[ 1 - \left( -1 \right) \right] + 1 \times \left( 2 - 10 \right) + 7 \times \left[ \left( -2 \right) - 8 \right] + \left( -5 \right) \times \left( 7 - 0 \right) + \left( -3 \right) \times \left[ 1 - \left( -6 \right) \right] + 8 \times \left( 3 - 4 \right)} \times \left[ 1 - \left( -1 \right) \right] + \left( -1 \right) = 0.7041 \\ x_{cor, 3} = \dfrac{-12 - \left[ 6 \times 6 + \left( -3 \right) \times \left( -1 \right) + 1 \times 10 + 7 \times 8 + \left( -5 \right) \times 0 + \left( -3 \right) \times \left( -6 \right) + 8 \times 4 \right]} {6 \times \left[ \left( -2 \right) - 6 \right] + \left( -3 \right) \times \left[ 1 - \left( -1 \right) \right] + 1 \times \left( 2 - 10 \right) + 7 \times \left[ \left( -2 \right) - 8 \right] + \left( -5 \right) \times \left( 7 - 0 \right) + \left( -3 \right) \times \left[ 1 - \left( -6 \right) \right] + 8 \times \left( 3 - 4 \right)} \times \left( 2 - 10 \right) + 10 = 3.1837 \\ x_{cor, 4} = \dfrac{-12 - \left[ 6 \times 6 + \left( -3 \right) \times \left( -1 \right) + 1 \times 10 + 7 \times 8 + \left( -5 \right) \times 0 + \left( -3 \right) \times \left( -6 \right) + 8 \times 4 \right]} {6 \times \left[ \left( -2 \right) - 6 \right] + \left( -3 \right) \times \left[ 1 - \left( -1 \right) \right] + 1 \times \left( 2 - 10 \right) + 7 \times \left[ \left( -2 \right) - 8 \right] + \left( -5 \right) \times \left( 7 - 0 \right) + \left( -3 \right) \times \left[ 1 - \left( -6 \right) \right] + 8 \times \left( 3 - 4 \right)} \times \left[ \left( -2 \right) - 8 \right] + 8 = -0.5204 \\ x_{cor, 5} = \dfrac{-12 - \left[ 6 \times 6 + \left( -3 \right) \times \left( -1 \right) + 1 \times 10 + 7 \times 8 + \left( -5 \right) \times 0 + \left( -3 \right) \times \left( -6 \right) + 8 \times 4 \right]} {6 \times \left[ \left( -2 \right) - 6 \right] + \left( -3 \right) \times \left[ 1 - \left( -1 \right) \right] + 1 \times \left( 2 - 10 \right) + 7 \times \left[ \left( -2 \right) - 8 \right] + \left( -5 \right) \times \left( 7 - 0 \right) + \left( -3 \right) \times \left[ 1 - \left( -6 \right) \right] + 8 \times \left( 3 - 4 \right)} \times \left( 7 - 0 \right) + 0 = 5.9643 \\ x_{cor, 6} = 2 \\ x_{cor, 7} = \dfrac{-12 - \left[ 6 \times 6 + \left( -3 \right) \times \left( -1 \right) + 1 \times 10 + 7 \times 8 + \left( -5 \right) \times 0 + \left( -3 \right) \times \left( -6 \right) + 8 \times 4 \right]} {6 \times \left[ \left( -2 \right) - 6 \right] + \left( -3 \right) \times \left[ 1 - \left( -1 \right) \right] + 1 \times \left( 2 - 10 \right) + 7 \times \left[ \left( -2 \right) - 8 \right] + \left( -5 \right) \times \left( 7 - 0 \right) + \left( -3 \right) \times \left[ 1 - \left( -6 \right) \right] + 8 \times \left( 3 - 4 \right)} \times \left[ 1 - \left( -6 \right) \right] + \left( -6 \right) = -0.0357 \\ x_{cor, 8} = \dfrac{-12 - \left[ 6 \times 6 + \left( -3 \right) \times \left( -1 \right) + 1 \times 10 + 7 \times 8 + \left( -5 \right) \times 0 + \left( -3 \right) \times \left( -6 \right) + 8 \times 4 \right]} {6 \times \left[ \left( -2 \right) - 6 \right] + \left( -3 \right) \times \left[ 1 - \left( -1 \right) \right] + 1 \times \left( 2 - 10 \right) + 7 \times \left[ \left( -2 \right) - 8 \right] + \left( -5 \right) \times \left( 7 - 0 \right) + \left( -3 \right) \times \left[ 1 - \left( -6 \right) \right] + 8 \times \left( 3 - 4 \right)} \times \left( 3 - 4 \right) + 4 = 3.1480 \\ \end{cases} \end{equation}
⎩
⎨
⎧xcor,1=6×[(−2)−6]+(−3)×[1−(−1)]+1×(2−10)+7×[(−2)−8]+(−5)×(7−0)+(−3)×[1−(−6)]+8×(3−4)−12−[6×6+(−3)×(−1)+1×10+7×8+(−5)×0+(−3)×(−6)+8×4]×[(−2)−6]+6=−0.8163xcor,2=6×[(−2)−6]+(−3)×[1−(−1)]+1×(2−10)+7×[(−2)−8]+(−5)×(7−0)+(−3)×[1−(−6)]+8×(3−4)−12−[6×6+(−3)×(−1)+1×10+7×8+(−5)×0+(−3)×(−6)+8×4]×[1−(−1)]+(−1)=0.7041xcor,3=6×[(−2)−6]+(−3)×[1−(−1)]+1×(2−10)+7×[(−2)−8]+(−5)×(7−0)+(−3)×[1−(−6)]+8×(3−4)−12−[6×6+(−3)×(−1)+1×10+7×8+(−5)×0+(−3)×(−6)+8×4]×(2−10)+10=3.1837xcor,4=6×[(−2)−6]+(−3)×[1−(−1)]+1×(2−10)+7×[(−2)−8]+(−5)×(7−0)+(−3)×[1−(−6)]+8×(3−4)−12−[6×6+(−3)×(−1)+1×10+7×8+(−5)×0+(−3)×(−6)+8×4]×[(−2)−8]+8=−0.5204xcor,5=6×[(−2)−6]+(−3)×[1−(−1)]+1×(2−10)+7×[(−2)−8]+(−5)×(7−0)+(−3)×[1−(−6)]+8×(3−4)−12−[6×6+(−3)×(−1)+1×10+7×8+(−5)×0+(−3)×(−6)+8×4]×(7−0)+0=5.9643xcor,6=2xcor,7=6×[(−2)−6]+(−3)×[1−(−1)]+1×(2−10)+7×[(−2)−8]+(−5)×(7−0)+(−3)×[1−(−6)]+8×(3−4)−12−[6×6+(−3)×(−1)+1×10+7×8+(−5)×0+(−3)×(−6)+8×4]×[1−(−6)]+(−6)=−0.0357xcor,8=6×[(−2)−6]+(−3)×[1−(−1)]+1×(2−10)+7×[(−2)−8]+(−5)×(7−0)+(−3)×[1−(−6)]+8×(3−4)−12−[6×6+(−3)×(−1)+1×10+7×8+(−5)×0+(−3)×(−6)+8×4]×(3−4)+4=3.1480
将按照式(11)求出的
x
c
o
r
=
[
−
0.8163
,
0.7041
,
3.1837
,
−
0.5204
,
5.9643
,
2
,
−
0.0357
,
3.1480
]
T
\boldsymbol{x_{cor}} = \left[ -0.8163, 0.7041, 3.1837, -0.5204, 5.9643, 2, -0.0357, 3.1480 \right]^T
xcor=[−0.8163,0.7041,3.1837,−0.5204,5.9643,2,−0.0357,3.1480]T代入式(6)中的线性方程,则求出的常数项
b
c
o
r
b_{cor}
bcor为
b
c
o
r
=
6
x
c
o
r
,
1
−
3
x
c
o
r
,
2
+
x
c
o
r
,
3
+
7
x
c
o
r
,
4
−
5
x
c
o
r
,
5
−
3
x
c
o
r
,
7
+
x
c
o
r
,
8
=
−
12
\begin{equation} b_{cor} = 6x_{cor, 1} - 3x_{cor, 2} + x_{cor, 3} + 7x_{cor, 4} - 5x_{cor, 5} - 3x_{cor, 7} + x_{cor, 8} = -12 \end{equation}
bcor=6xcor,1−3xcor,2+xcor,3+7xcor,4−5xcor,5−3xcor,7+xcor,8=−12
满足式(6)中的所有约束条件, x c o r \boldsymbol{x_{cor}} xcor可以作为式(6)所示问题的其中一个可行解。
MATLAB代码实现
clear;
close all;
clc;
lb = [-3, -1, 2, -4, 0, 1, -6, -5]';
ub = [6, 4, 10, 8, 11, 3, 4, 4]';
% A * x > b
x_gen = [4, 3, 6, 5, 5, 2, -2, 0]';
% A * x < b
% x_gen = [-2, 1, 2, -2, 7, 2, 1, 3]';
A = [6, -3, 1, 7, -5, 0, -3, 8];
b_lb = A * ((A > 0)' .* lb + (A < 0)' .* ub);
b_ub = A * ((A > 0)' .* ub + (A < 0)' .* lb);
b = -12;
Eq = A * x_gen;
delta_plus = A * ((A > 0)' .* (x_gen - lb) + (A < 0)' .* (x_gen - ub));
delta_minus = A * ((A > 0)' .* (x_gen - ub) + (A < 0)' .* (x_gen - lb));
if Eq > b
x_cor(A > 0) = ((b - b_lb) /delta_plus) * (x_gen(A > 0) - lb(A > 0)) + lb(A > 0);
x_cor(A == 0) = x_gen(A == 0);
x_cor(A < 0) = ((b - b_lb) /delta_plus) * (x_gen(A < 0) - ub(A < 0)) + ub(A < 0);
elseif Eq < b
x_cor(A > 0) = ((b - b_ub) /delta_minus) * (x_gen(A > 0) - ub(A > 0)) + ub(A > 0);
x_cor(A == 0) = x_gen(A == 0);
x_cor(A < 0) = ((b - b_ub) /delta_minus) * (x_gen(A < 0) - lb(A < 0)) + lb(A < 0);
end
x_cor = x_cor';
Equation_corified = A * x_cor;
does_x_cor_exceed_lb = x_cor < lb;
does_x_cor_exceed_ub = x_cor > ub;
does_x_cor_exceed = does_x_cor_exceed_lb | does_x_cor_exceed_ub;
flag_x_cor_exceed = any(does_x_cor_exceed);
is_Equation_cor_equal_to_b = abs(Equation_corified - b) <= 1e-12;
研究目标
(1) 给出满足一般线性约束的生成随机数修正方法;
(2) 探究满足某些非线性约束的生成随机数修正方法;
(3) 将生成随机数修正方法应用到基于启发式算法的优化问题求解中,使得启发式算法能够始终在优化问题的可行域中搜寻问题的解,从而加快启发式优化算法的收敛速度。