约束优化方法_1_——Zoutendijk可行方向法

Zoutendijk可行性方法属于约束极值问题可行方向法中的一种。与之前无约束极值问题中的最速下降法、牛顿法相像,可行方向法的策略是:从可行点出发,沿着下降的可行方向进行搜索,求出使目标函数值下降的可行点。 教材中共介绍了四种方法:Zoutendijk可行性方法、Rosen梯度投影方法、既约梯度法、Frank-Wolfe方法。博文对Zoutendijk可行性方法和Frank-Wolfe方法进行了介绍,这个是第一篇。

这类算法的两大步骤如下所示,搜索方向的选择策略不同形成了不同的可行方向法。

1、选择搜索方向d

2、确定沿此方向移动的步长\alpha

 接下来开始正题:Zoutendijk可行性方法


一、线性约束情形

     1.确定变动方向

对于一个非线性规划问题:min f(x)\large s.t. Ax\geqslant b \& Ex=e。可以看到其共有m个不等式约束,n个等式约束。

若初始点设定为\widehat{x},考虑到m个等式约束中有一些是起作用约束(在边界上满足=),有一些是不起作用约束(在内部满足\geqslant),所以将A矩阵进行行调换:A=[A_{1}|A_{2}]{}',同时对b向量也进行对应分块:b=[b_{1}|b_{2}]{}',最终得到起作用约束A_{1} \widehat{x}=b_{1},不起作用约束A_{2} \widehat{x}\geqslant b_{2}

定理1(可行方向):在此点选择一个方向d,如果使得目标函数值下降,则应满足:A_{1}d\geqslant 0, Ed=0,即只考虑起作用约束集和等式约束集。

(这个定理不难理解,可行点已经触犯到了一些不等式约束的边缘,如果发生变动,那么变动之后的点一定依然满足这些起作用集约束。)

之前都是站在约束角度考察方向d的取值,现在结合目标函数值进行联合分析:如果方向d同时满足\triangledown f(\widehat{x})^Td< 0,A_{1}d\geqslant 0, Ed=0,那么这个方向d就是下降可行方向(即方向d既能够使函数值下降,又能满足约束条件)。基于这些分析我们可以把求方向d规范化为线性规划问题:

计算过程1(求方向d):min \triangledown f(x)^Tds.t. \ \ \ A_{1}x\geqslant 0 \ \ \ \&\ \ \ Ed=0 \ \ \ \&\ \ \ \left \| d_{j}\leqslant 1 \right \|

形象理解可知,当d和函数梯度夹角大于90°时,函数值可以下降,上目标函数为负值。而当已经到达局部最优点,没有下降方向时,上目标函数最小值为0。这时可以给出第二个定理,即KT点和下降可行方向的关联:

定理2(KT点关联下降可行方向):当在x点处满足约束,且上目标函数最小值为0时,此点为KT点。(充要条件)

 至此我们完成了方向d的确定。

     2.确定移动步长

和无约束最优化问题类似,可行点的迭代公式为:x^{(k+1)}=x^{(k)}+\lambda _kd^{(k)}。步长的选择一方面要满足后续点的可行性,一方面又要使目标函数值尽可能地小。因此可以得到完备计算过程:

计算过程2(完备求步长\lambda):min f(x^{(k)}+\lambda _kd^{(k)}) \ \ s.t. \ \ A(x^{(k)}+\lambda _kd^{(k)})\geqslant b\ \ \& \ \ E(x^{(k)}+\lambda _kd^{(k)})=e

 这时考虑:在选取d时已经使得 作用约束满足、等式约束满足。因此只考虑非作用约束即可(这一步真的神奇!)。因此计算过程直接化简为:

计算过程2(简化求步长\lambda):min f(x^{(k)}+\lambda _kd^{(k)}) \ \ s.t. A_{2}x^{(k)}+\lambda A_{2}d^{(k)}\geqslant b_2 \ \ \& \ \ \lambda\geqslant 0

 接下来对  A_{2}x^{(k)}+\lambda A_{2}d^{(k)}\geqslant b_2  式进行仔细分析:将不含\lambda的项移动到右端:\lambda A_{2}d^{(k)}\geqslant b_2-A_{2}x^{(k)},可以发现右端式满足小于0。分类讨论,当A_{2}d^{(k)} \geqslant 0时,无论\lambda如何选取都满足条件,0\leqslant \lambda\leqslant \infty;当A_{2}d^{(k)} \leqslant 0时,A_{2}d^{(k)}左除引起变号,\lambda最大取(b_2-A_{2}x^{(k)})/A_{2}d^{(k)}。所以最终精简求法为:

计算过程2(精简求步长\lambda):min f(x^{(k)}+\lambda _kd^{(k)}) \ \ s.t. \ \ \ 0 \leqslant \lambda\leqslant \lambda_{max}

 其中\lambda_{max}求法按照上述分类讨论计算。完整的\lambda_{max}计算方法在教材中已经给出:

3.完整算法

  • 21
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值