一种单线性方程约束下的生成随机数修正方法(结论与应用)

16 篇文章 0 订阅
15 篇文章 0 订阅

修正方法

    设需要生成一组如下所示的 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=[x1xixN]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=1Naixi=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,1xgen,ixgen,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(xixi)+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} xixgen,i(xixi)+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,1xcor,ixcor,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=1Naixgen,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>0Nai(xgen,ixi)+i=1,ai<0Nai(xgen,ixi)b(i=1,ai>0Naixi+i=1,ai<0Naixi)(xgen,ixi)+xixgen,ii=1,ai>0Nai(xgen,ixi)+i=1,ai<0Nai(xgen,ixi)b(i=1,ai>0Naixi+i=1,ai<0Naixi)(xgen,ixi)+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=1Naixgen,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>0Nai(xgen,ixi)+i=1,ai<0Nai(xgen,ixi)b(i=1,ai>0Naixi+i=1,ai<0Naixi)(xgen,ixi)+xixgen,ii=1,ai>0Nai(xgen,ixi)+i=1,ai<0Nai(xgen,ixi)b(i=1,ai>0Naixi+i=1,ai<0Naixi)(xgen,ixi)+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>0Naixi+i=1,ai<0Naixibi=1,ai>0Naixi+i=1,ai<0Naixi时,通过式(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]6x13x2+x3+7x45x53x7+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,13xgen,2+xgen,3+7xgen,45xgen,53xgen,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)×(34)+1×(62)+7×[5(4)]+(5)×(511)+(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)×(34)+1×(62)+7×[5(4)]+(5)×(511)+(3)×[(2)4]+8×[0(5)]12[6×(3)+(3)×4+1×2+7×(4)+(5)×11+(3)×4+8×(5)]×(34)+4=3.245xcor,3=6×[4(3)]+(3)×(34)+1×(62)+7×[5(4)]+(5)×(511)+(3)×[(2)4]+8×[0(5)]12[6×(3)+(3)×4+1×2+7×(4)+(5)×11+(3)×4+8×(5)]×(62)+2=5.02xcor,4=6×[4(3)]+(3)×(34)+1×(62)+7×[5(4)]+(5)×(511)+(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)×(34)+1×(62)+7×[5(4)]+(5)×(511)+(3)×[(2)4]+8×[0(5)]12[6×(3)+(3)×4+1×2+7×(4)+(5)×11+(3)×4+8×(5)]×(511)+11=6.47xcor,6=2xcor,7=6×[4(3)]+(3)×(34)+1×(62)+7×[5(4)]+(5)×(511)+(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)×(34)+1×(62)+7×[5(4)]+(5)×(511)+(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,13xcor,2+xcor,3+7xcor,45xcor,53xcor,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,13xgen,2+xgen,3+7xgen,45xgen,53xgen,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×(210)+7×[(2)8]+(5)×(70)+(3)×[1(6)]+8×(34)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×(210)+7×[(2)8]+(5)×(70)+(3)×[1(6)]+8×(34)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×(210)+7×[(2)8]+(5)×(70)+(3)×[1(6)]+8×(34)12[6×6+(3)×(1)+1×10+7×8+(5)×0+(3)×(6)+8×4]×(210)+10=3.1837xcor,4=6×[(2)6]+(3)×[1(1)]+1×(210)+7×[(2)8]+(5)×(70)+(3)×[1(6)]+8×(34)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×(210)+7×[(2)8]+(5)×(70)+(3)×[1(6)]+8×(34)12[6×6+(3)×(1)+1×10+7×8+(5)×0+(3)×(6)+8×4]×(70)+0=5.9643xcor,6=2xcor,7=6×[(2)6]+(3)×[1(1)]+1×(210)+7×[(2)8]+(5)×(70)+(3)×[1(6)]+8×(34)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×(210)+7×[(2)8]+(5)×(70)+(3)×[1(6)]+8×(34)12[6×6+(3)×(1)+1×10+7×8+(5)×0+(3)×(6)+8×4]×(34)+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,13xcor,2+xcor,3+7xcor,45xcor,53xcor,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) 将生成随机数修正方法应用到基于启发式算法的优化问题求解中,使得启发式算法能够始终在优化问题的可行域中搜寻问题的解,从而加快启发式优化算法的收敛速度。

  • 26
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
线级联扩展PWM芯片是一种常用的数字控制设备,用于对多通道PWM信号进行扩展和控制。该芯片具有以下功能和特点。 首先,线级联扩展PWM芯片可以通过一个控制线实现对多个通道的PWM信号进行扩展。这使得系统设计更加简洁,有效减少了线缆的使用和连接复杂性。 其次,该芯片支持多通道的PWM信号输出。它通常具有多个PWM输出通道,并且可以通过软件控制每个通道的输出频率、占空比等参数。这个功能使得在多个设备或外围器件需要PWM信号的应用中,能够方便地生成并输出多个PWM信号。 此外,线级联扩展PWM芯片还具有高精度的PWM输出能力。它使用精准的时钟和计数器来生成PWM信号,可以实现高精度的频率和占空比控制,满足不同应用对精度要求的需要。 另外,该芯片一般还具有保护功能。例如过流保护、过热保护等,可以有效保护芯片和周边设备的安全,提高系统的稳定性和可靠性。 最后,线级联扩展PWM芯片通常还支持命令控制接口,可以通过一些特定命令和指令进行通信和控制。这使得用户可以通过外部控制器、微处理器或其他设备来与芯片进行交互,实现对PWM输出的灵活控制和调试。 总之,线级联扩展PWM芯片是一种功能强大、灵活可扩展的数字控制设备,广泛应用于工业自动化、通信设备、家电及航空航天等领域,为各种应用提供了精确、稳定的PWM信号输出。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Academia1998

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值