Zoutendijk可行方向法

目录

线性约束:

算法步骤:

例题解析:

非线性约束:

算法步骤:

例题解析:

Zoutendijk 的改进:


在约束非线性最优化问题的研究过程中, Zoutendijk 可行方向法是无约束下降算法的自然推广。它的基本思想是从可行点出发,沿着可行方向进行搜索,求出使得目标函数值下降的新的可行点。 算法主要包括选择搜索方向和搜索步长两个主要方面,搜索方向的选择方式不同形成不同的可行方向法。

下面我们分线性约束问题和非线性约束问题来讨论。


线性约束:

\left\{\begin{matrix} minf(x)\\s.t.Ax>b \\Ex=e \end{matrix}\right.

其中 f(x) 可微,A 是 m\times n 矩阵,E 是 m\times n 矩阵,A 是 l\times n 矩阵,x\in R^{n},b\in R^{m},e\in R^{l}

定理1:设 x 是\left\{\begin{matrix} minf(x)\\s.t.Ax>b ,Ex=e \end{matrix}\right.的可行解,在 x 处有 A_{1}x=b_{1},A_{2}x>b_{2},其中 A=\begin{bmatrix} A_{1}\\A_{2} \end{bmatrix},b=\begin{bmatrix} b_{1}\\b_{2} \end{bmatrix},则非零向量 d 为 x 处的可行方向的充要条件是:A_{1}d\geq 0,Ed=0

即对于非零向量 d ,只要 A_{1}d\geq 0,Ed=0,d 就是在 x 处的可行方向。如果 d 再满足 \bigtriangledown f(x)^{T}d<0,那么 d 就是在 x 处的可行下降方向。

因此,确定搜索方向可归结于求解线性规划问题:(要使 \bigtriangledown f(x)^{T}d 足够小(小于0)才成立)

\left\{\begin{matrix} minf(x)^{T}d\\s.t.A_{1}d\geq 0\\Ed=0\\|d_{j}|\leq 1,j=1,2,...,m \end{matrix}\right.

\because \hat{d}=0 为可行解,则 0 为上界,由此:

  • \bigtriangledown f(\bar{x})^{T}\hat{d}=0\bar{x} 为 K-T点。
  • \bigtriangledown f(\bar{x})^{T}\hat{d}<0\hat{d} 为可行下降方向。

定理2:设 x 是 \left\{\begin{matrix} minf(x)\\s.t.Ax>b ,Ex=e \end{matrix}\right. 的可行解,在 x 处有 A_{1}x=b_{1},A_{2}x>b_{2},其中 A=\begin{bmatrix} A_{1}\\A_{2} \end{bmatrix},b=\begin{bmatrix} b_{1}\\b_{2} \end{bmatrix},则 x 是 K-T 点的充要条件是:\bigtriangledown f(\bar{x})^{T}\hat{d}=0。(上述线性规划问题最优解为0)

之后,可以通过一维搜索,确定步长,需满足以下两个条件:

1,x^{k+1}=x^{k}+\lambda _{k}d^{k},且 x^{k+1} 可行;

2,f(x^{k+1})-f(x^{k}) 尽量小。

将新的约束条件代入:

\left\{\begin{matrix} minf(x^{k}+\lambda d^{k})\\s.t.A(x^{k}+\lambda d^{k})>b \\E(x^{k}+\lambda d^{k})=e \\\lambda \geq 0\end{matrix}\right.

(前提:有 x^{k} 为可行点,Ax^{k}>b,Ex^{k}=ed^{k} 为可行下降方向 A_{1}d\geq 0,Ed=0

则上述规划可以进行简化:

\Rightarrow E(x^{k}+\lambda d^{k})=Ex^{k}+\lambda Ed^{k}=e +0=e 恒成立

\Rightarrow Ax^{k}+\lambda Ad^{k}> \binom{b_1}{b_2},即 A_{1}x^{k}+\lambda A_{1}d^{k}> {b_1}A_{2}x^{k}+\lambda A_{2}d^{k}> {b_2}

其中 A_{1}x^{k}+\lambda A_{1}d^{k}> {b_1} 中,A_{1}x^{k}= {b_1},\lambda A_{1}d^{k}> 0,故其恒成立。

化简为以下形式:

\left\{\begin{matrix} minf(x^{k}+\lambda d^{k})\\s.t.A_2x^{k}+\lambda A_2d^{k}>b_{2} \\\lambda \geq 0\end{matrix}\right.

\Rightarrow \lambda A_2d^{k}>b_{2}- A_2x^{k}

设 A_2d^{k}=\hat{d},b_2-A_2x^{k}=\hat{b}

\Rightarrow \lambda _{max}=\begin{cases} min\left \{ \frac{\hat{b_i}}{\hat{d_i}}|\hat{d_i}< 0 \right \} & \text{ if } \hat{d_i}<0\\ \infty & \text{ if } \hat{d_i}\geq 0 \end{cases}


算法步骤:

步骤1:选取初始点 x_0,允许误差 \varepsilon >0,k=0 ;

步骤2:在 x_{k} 处分解出起作用的约束: A=\begin{bmatrix} A_{1}\\A_{2} \end{bmatrix},b=\begin{bmatrix} b_{1}\\b_{2} \end{bmatrix}, A_{1}x_k=b_{1},A_{2}x_k>b_{2},计算 \bigtriangledown f(x_k)

步骤3:求解前述的线性规划问题,得到 d_k ;

步骤4:如果 \left | \bigtriangledown f(x_k)^{T}d_k \right |\leq \varepsilon,停止,输出 x_{k} ,否则,转步骤5;

步骤5:按前述方法求出 \lambda _{k},令 x^{k+1}=x^{k}+\lambda _{k}d^{k},k=k+1,转步骤2。


例题解析:

例题:用 Zoutendijk 法求解下面规划问题,初始点 x_0=(0,0)^{T}.

\left\{\begin{matrix} min & x_{1}^{2}+x_{2}^{2}-2x_1-4x_2+6\\s.t. &-2x_1+x_2+1 \geq 0 \\ &-x_1-x_2+2\geq 0 \\ & x_1\geq 0,x_2\geq 0 \end{matrix}\right.

解:

\bigtriangledown f(x)=\begin{bmatrix} 2x_1-2\\2x_2-4 \end{bmatrix}

A=\begin{bmatrix} -2 &1 \\-1 &-1 \\1 &0 \\ 0 & 1 \end{bmatrix}   ,b=\begin{bmatrix} -1\\-2 \\0 \\0 \end{bmatrix}

第一次迭代:在 x_0 处,起作用的指标集 I(x_0)=\left \{ 3,4 \right \},\bigtriangledown f(x_0)=\begin{bmatrix} -2\\-4 \end{bmatrix}

A_1=\begin{bmatrix} 1 &0 \\0 &1 \end{bmatrix},b_1=\begin{bmatrix} 0\\0 \end{bmatrix},A_2=\begin{bmatrix} -2&1 \\-1 &-1 \end{bmatrix},b_2=\begin{bmatrix} -1\\-2 \end{bmatrix}

辅助线性规划问题如下:

\left\{\begin{matrix} min & -2d_1-4d_2\\s.t. & d_1\geq 0\\ &d_2\geq0 \\ &1\geq d_1\geq -1 \\ & 1\geq d_2\geq -1 \end{matrix}\right.   

\Rightarrow d_0=(1,1)^T

\left | \bigtriangledown f(x_0)^{T}d_0 \right |=6\neq 0d_0 是可行下降方向,

\hat{b}=b_2-A_2x_{0}=\begin{bmatrix} -1\\-2 \end{bmatrix},\hat{d}=A_2d_{0}=\begin{bmatrix} -1\\-2 \end{bmatrix}

\lambda _{max}=min\left \{ \frac{-1}{-1} ,\frac{-2}{-2}\right \}=1

\min_{0\leq \lambda \leq 1}f(x_0+\lambda d_0)=min_{0\leq \lambda \leq 1}(2\lambda ^2-6\lambda +6)\Rightarrow \lambda _0=1

\Rightarrow x_1=x_0+\lambda _0d_0=(1,1)^T

第二次迭代:在 x_1 处,起作用的指标集 I(x_1)=\left \{ 1,2 \right \},\bigtriangledown f(x_1)=\begin{bmatrix} 0\\-2 \end{bmatrix}

A_1=\begin{bmatrix} -2 &1 \\-1 &-1 \end{bmatrix},b_1=\begin{bmatrix} -1\\-2 \end{bmatrix},A_2=\begin{bmatrix} 1&0 \\0 &1 \end{bmatrix},b_2=\begin{bmatrix} 0\\0 \end{bmatrix}

辅助线性规划问题如下:

\left\{\begin{matrix} min & -2d_2\\s.t. & -2d_1+d_2\geq 0\\ &-d_1-d_2\geq0 \\ &1\geq d_1\geq -1 \\ & 1\geq d_2\geq -1 \end{matrix}\right.   

\Rightarrow d_1=(-1,1)^T

\left | \bigtriangledown f(x_1)^{T}d_1 \right |=2\neq 0d_1 是可行下降方向,

\hat{b}=b_2-A_2x_{1}=\begin{bmatrix} -1\\-1 \end{bmatrix},\hat{d}=A_2d_{1}=\begin{bmatrix} -1\\1 \end{bmatrix}

\lambda _{max}=min\left \{ \frac{-1}{-1} ,\infty \right \}=1

\min_{0\leq \lambda \leq 1}f(x_1+\lambda d_1)=min_{0\leq \lambda \leq 1}(2\lambda ^2-2\lambda +2)\Rightarrow \lambda _1=\frac{1}{2}

\Rightarrow x_2=x_1+\lambda _1d_1=(\frac{1}{2},\frac{3}{2})^T

第三次迭代:在 x_2 处,起作用的指标集  I(x_2)=\left \{ 2 \right \},\bigtriangledown f(x_2)=\begin{bmatrix} -1\\-1 \end{bmatrix}

A_1=\begin{bmatrix} -1 &-1 \end{bmatrix},b_1=\begin{bmatrix} -2 \end{bmatrix},A_2=\begin{bmatrix} -2&1 \\1 &0\\0&1 \end{bmatrix},b_2=\begin{bmatrix} -1\\0\\0\end{bmatrix}

辅助线性规划问题如下:

\left\{\begin{matrix} min & -d_1-d_2\\s.t. & -d_1-d_2\geq 0 \\ &1\geq d_1\geq -1 \\ & 1\geq d_2\geq -1 \end{matrix}\right.   

\Rightarrow d_2=(0,0)^T

\left | \bigtriangledown f(x_2)^{T}d_2 \right |= 0

\Rightarrow x_2=(\frac{1}{2},\frac{3}{2})^T 是 K-T 点。

该问题是凸规划问题,所以 \bar{x}=x_2 是最优解。


非线性约束:

\left\{\begin{matrix} min&f(x)\\s.t.&g_i(x)\geq 0,i=1,2,...,m \end{matrix}\right.

其中 f(x),g_i(x),i=1,2,...,m 可微。

如果满足:\left\{\begin{matrix} \bigtriangledown f(x)^Td<0 & \\ \bigtriangledown g_i(x)^Td>0 & i\in I(x) \end{matrix}\right.,则 d 是可行下降方向。

求可行下降方向归结于求解线性规划问题:

\left\{\begin{matrix} min&z\\s.t.&\bigtriangledown f(x)^Td-z\leq 0 \\& \bigtriangledown g_i(x)^Td\geq 0\\&-1\leq d_j\leq 1&j=1,2,...m \end{matrix}\right.

设求出的最优解为:(\bar{z},\bar{d}),则有:

1,如果 \bar{z}<0,则 \bar{d} 是 x 处的可行下降方向;

2,如果 \bar{z}=0,则 \bar{x} 是 Fritz-John 点。

如何确定步长 \lambda _k ?

1,求解: \lambda _{max}=sup\left \{ \lambda |g_i(x_k+\lambda d_k)\geq 0,i=1,2,...,m \right \}

2,求解: \lambda _k=min_{0\leq \lambda \leq \lambda _{max}}f(x_k+\lambda d_k)


算法步骤:

步骤1:选取初始点 x_0,允许误差 \varepsilon >0,k=0 ;

步骤2:确定起作用约束指标集 I(x_k)

步骤3:求解辅助线性规划问题,得到最优解 (\bar{z},\bar{d}) ;

步骤4:如果 \left | z \right |\leq \varepsilon,停止,输出 x_{k} ,否则,得到可行下降方向 d_k=\bar{d} 转步骤5;

步骤5:做一维搜索求出 \lambda _{k},令 x^{k+1}=x^{k}+\lambda _{k}d^{k},k=k+1,转步骤2。


例题解析:


Zoutendijk 的改进:

当迭代点在一个约束的边界上时,如果可行方向取得不恰当,沿着该方向可能因为接近另一个约束边界而只能做一个很小的移动;否则,就会使迭代点跑出边界。

为了防止这一现象,设想在约束条件的边界上设立一条隔离带”. 迭代点进入这个区域时,只允许它往可行内部移动,而不许向边界靠近。

为了防止出现锯齿现象,还可考虑起作用约束和不起作用约束在确定搜索方向中都起作用,这种全作用约束方法是TopkisVeinote1967年提出的,这种方法能收敛到Fritz John点。

(行文中若有纰漏,希望大家指正)

  • 25
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

背对人潮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值