优化问题 - 内点法

转自 :https://blog.csdn.net/theonegis/article/details/50977588


文字理解

内点法属于约束优化算法。约束优化算法的基本思想是:通过引入效用函数的方法将约束优化问题转换成无约束问题,再利用优化迭代过程不断地更新效用函数,以使得算法收敛。 
内点法(罚函数法的一种)的主要思想是:在可行域的边界筑起一道很高的“围墙”,当迭代点靠近边界时,目标函数徒然增大,以示惩罚,阻止迭代点穿越边界,这样就可以将最优解“档”在可行域之内了。

数学定义

对于下面的不等式约束的优化问题: 

minf(x),xRn minf(x),x∈Rn

s.tgi(x)0,i=1,2,...,m s.tgi(x)≤0,i=1,2,...,m

利用内点法进行求解时,构造惩罚函数的一般表达式为 
φ(X,r)=f(X)ri=1m1gi(X) φ(X,r)=f(X)−r∑i=1m1gi(X)

或者 
φ(X,r)=f(X)ri=1mln[gi(X)] φ(X,r)=f(X)−r∑i=1mln⁡[−gi(X)]

算法步骤

  1. 取初始惩罚因子 r(0)>0 r(0)>0,允许误差 ϵ>0 ϵ>0
  2. 在可行域 D D内选取初始点 X(0) X(0),令 k=1 k=1
  3. 构造惩罚函数 φ(X,r(k)) φ(X,r(k)),从 X(k1) X(k−1)点出发用无约束优化方法求惩罚函数 φ(X,r(k)) φ(X,r(k))的极值点 (X,r(k)) (X∗,r(k))
  4. 检查迭代终止准则:如果满足
    Xr(k)Xr(k1)ϵ1=105107 ‖X∗r(k)−X∗r(k−1)‖≤ϵ1=10−5−10−7
    或者
    φ(X,r(k))φ(X,r(k1))φ(X,r(k1))ϵ2=103104 ‖φ(X∗,r(k))−φ(X∗,r(k−1))φ(X∗,r(k−1))‖≤ϵ2=10−3−10−4
    则停止迭代计算,并以 (X,r(k)) (X∗,r(k))作为原目标函数 f(X) f(X)的约束最优解,否则转入下一步;
  5. r(k+1)=cr(k) r(k+1)=cr(k) X(0)=Xr(k) X(0)=X∗r(k) k=k+1 k=k+1,转向步骤3。递减系数 c=0.10.5 c=0.1−0.5,通常取0.1。

内点惩罚函数法特点及其应用

  • 惩罚函数定义于可行域内,序列迭代点在可行域内不断趋于约束边界上的最优点(这就是称为内点法的原因)
  • 只适合求解具有不等式约束的优化问题

内点法求解案例

用内点法求下面约束优化问题的最优解,取迭代初始 X0=[0,0]T X0=[0,0]T,惩罚因子的初始值 r0=1 r0=1,收敛终止条件 XkXk1ε ‖Xk−Xk−1‖≤ε ε=0.01 ε=0.01

minf(X)=x21+x21x1x210x14x2+60 minf(X)=x12+x12−x1x2−10x1−4x2+60

s.t.g(X)=x1+x280 s.t.g(X)=x1+x2−8≤0

  1. 构造内惩罚函数: φ(X,r)=x21+x21x1x210x14x2+60rln(x1+x28) φ(X,r)=x12+x12−x1x2−10x1−4x2+60−rln⁡(x1+x2−8)
  2. 用解析法求内惩罚函数的极小值

φ(X,r)=[2x1x210rx1+x282x2x14rx1+x28] ∇φ(X,r)=[2x1−x2−10−rx1+x2−82x2−x1−4−rx1+x2−8]

φ(X,r)=0 ∇φ(X,r)=0得: 2x1x210rx1+x28=02x2x14rx1+x28=0 2x1−x2−10−rx1+x2−8=02x2−x1−4−rx1+x2−8=0

解得:

X1(r)=[13+9+2r29+9+2r2]T X1∗(r)=[13+9+2r29+9+2r2]T

X2(r)=[139+2r299+2r2]T X2∗(r)=[13−9+2r29−9+2r2]T

g(X1(r))>0 ∵g(X1∗(r))>0

 舍去 X1(r) X1∗(r)

φ(X,r) ∵φ(X,r)为凸函数

 无约束优化问题的最优解为 X(r)=X2(r)=[139+2r299+2r2]T X∗(r)=X2∗(r)=[13−9+2r29−9+2r2]T

  1. 求最优解

r0=1 r0=1时, X(r0)=(4.84172.8417)T X∗(r0)=(4.84172.8417)T X(r0)X0=5.6140>ε ‖X∗(r0)−X0‖=5.6140>ε

r1=0.1 r1=0.1时, X(r1)=(4.98342.9834)T X∗(r1)=(4.98342.9834)T X(r1)X(r0)=0.2004>ε ‖X∗(r1)−X∗(r0)‖=0.2004>ε

r2=0.01 r2=0.01时, X(r2)=(4.99832.9983)T X∗(r2)=(4.99832.9983)T X(r2)X(r1)=0.0211>ε ‖X∗(r2)−X∗(r1)‖=0.0211>ε

r3=0.01 r3=0.01时, X(r3)=(4.99982.9998)T X∗(r3)=(4.99982.9998)T X(r3)X(r2)=0.0021<ε ‖X∗(r3)−X∗(r2)‖=0.0021<ε

X(r3) X∗(r3)为最优解


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值