1120 罚函数法 (罚函数法与乘子法合订)
罚函数罚与乘子法(1)2

罚函数法罚函数法是能够处理一般的约束优化问题:min ()()0,1,2,()0,1,2,,i if x h x i kg x j m ⎧⎪==⎨⎪≥=⎩ 的一类方法。
其基本思想是将约束优化问题卑微无约束问题来求解。
罚函数是由目标函数和约束函数的某种组合得到的函数,对于等式约束的优化问题min ()()0,1,2,i f x h x i k⎧⎨==⎩ ,可以定义如下的罚函数: 21()()()ki i F x f x c h x ==+∑将约束优化问题转化为无约束优化问题;对于不等式约束的优化问题min ()()0,1,2,,i f x g x j m⎧⎨≥=⎩ 可以定义如下的罚函数:11()()()mj j F x f x C g x ==+∑对于同时存在等式约束和不等式约束的优化问题,可以去上面两个罚函数的组合。
当然罚函数还有其他的取法,但是构造罚函数的思想都是一样的,即使得在可行点罚函数等于原来的目标函数值,在不可行点罚函数等于一个很大的数。
外点罚函数法 1.算法原理外点罚函数法是通过一系列罚因子{}i c ,求罚函数的极小值来逼近原约束问题的最有点。
之所以称为外点罚函数法,是因为它是从可行域外部向约束边界逐步靠拢的。
2,。
算法步骤用外点罚函数法求解线性约束问题min ()f x Ax b ⎧⎨=⎩的算法过程如下:1,给定初始点(0)x ,罚参数列{}i c 及精度0ε>,置1k =; 2,构造罚函数2()()F x f x c Ax b =+-;3,用某种无约束非线性规划,以(1)k x -为初始点求解min ()F x ;4,设最优解为()k x ,若()k x 满足某种终止条件,则停止迭代输出()k x ,否则令1k k =+,转2;罚参数列{}i c 的选法:通常先选定一个初始常数1c 和一个比例系数2ρ≥,则其余的可表示为11i i c c ρ-=。
终止条件可采用()S x ε≤,其中2()S x c Ax b =-。
第二节 罚函数法

β ∈ (0,1) ,允许误差 ε > 0 ,置 k = 1 ;
k −1 x 为初点,求解无约束优化问题 Step2: 以
min G ( x, r ) = f ( x) + rB( x) s.t. x ∈ int S
设其极小点为 x ;
G ( x, r ) = f ( x) − r ∑ ln g i ( x)
m
-----对数障碍函数
由 G( x, r ) 的定义, r 取值越小,问题
min G ( x, r ) = f ( x) + rB( x) s.t. x ∈ int S
的最优解越接近约束优化问题的最优解。 2. 内点罚函数法的计算步骤
k min H ( x) x Step4: 以 为初始点求解无约束问题 x∈Sk k +1 的最优解
x k +1 ,其中
H k +1 ( x) = −∑ gi ( x) + rk +1 ∑ gi ( x)
i∈I k i∈J k
, Sk = {x | gi ( x) > 0, i ∈ J k }
令 rk + 2 = βrk +1 , k = k + 1, 返回 Step2. 注:该算法中,对于 k = 0,1,2,L ,有 I k +1 ⊂ I k , J k +1 ⊃ J k ,且 最后某个 I k = ∅ 。 三. 广义乘子法 1. 对于等式约束优化问题
φ ( x, y , ω , σ ) = f ( x ) − ∑ ω j ( g j ( x ) − y j ) +
2 j =1 l
关于接触问题中的拉格朗日乘子法和罚函数法

关于接触问题中的拉格朗日乘子法和罚函数法
我只了解一点皮毛,就当抛砖引玉把这个帖子顶上去。
一般可以把要解决的物理问题归结为一个满足一定边界条件的场函数的微分方程的问题;这样的问题也与相应的积分形式的泛函的极值问题对应。
当微分描述的形式有了附加的约束方程,相应可以用拉氏乘子法或者罚函数方法构造出新的泛函与该问题对应。
相比较而言,罚函数的方法引入这种约束关系不必对以前的问题做大的修改,因而采用的更加广泛一些。
可能说的不太清楚,简单的讲:两个都是引入附加约束的方法,罚函数法似乎更好一些
诚如楼上所言,区别就在于在系统的泛函变分式子中引入约束方程的方式不同而造成的,罚函数法的方式引入没有改变系统方程的阶数,同时也没有破坏刚度矩阵的对称正定性质,易于求解,但是约束方程并非能够精确得到满足,是一种近似方法。
而拉格朗日乘子法由于引入了一个新的乘子,方程的阶数增加了,同时刚度矩阵也不再是对称正定阵,求出相应的乘子,那么该约束方程是被精确满足的,但是由于失去了正定性,对于大型方程组的求解会带来困难。
好像接触碰撞问题中采用的是罚函数法。
罚函数之乘子法

罚函数之乘⼦法外罚函数主要⽤于对于等式约束问题的求解,内点法主要是对于不等式问题的求解,⼀般问题中包含等式约束以及不等式约束,故需要使⽤乘⼦法解决问题。
1、乘⼦法概述(1)等式约束乘⼦法描述:min f(x)s.t. g i(x) =0⼴义乘⼦法是拉格朗⽇乘⼦法与罚函数法的结合,构造增⼴函数:φ (x,λ,σ)=f(x)+λT g(x)+1/2σg T(x)g(x)在罚函数的基础上增加了乘⼦项,⾸先在σ⾜够⼤的基础上,获得ϕ的极⼩值,然后在调整λ获得原问题的最优解。
(2)包含等式约束以及不等式约束问题描述:min f(x)s.t. h i(x) =0,i=1,...,lg i(x)≥0,i=1,...m其基本思想是:先引进辅助变量把不等式约束化为等式约束,然后利⽤最优性条件消去辅助变量,主要是通过构造增⼴拉格朗⽇函数,进⾏外迭代与内迭代综合,带⼊乘⼦迭代公式,进⽽得出得出,故针对上述⼀般问题构造拉格朗⽇函数为:4、其代码实现为function [x,mu,lambda,output]=multphr(fun,hf,gf,dfun,dhf,dgf,x0)%功能:⽤乘⼦法解⼀般约束问题:min f(x),s.t. h(x)=0.g(x)>=0%输⼊:x0是初始点,fun,dfun分别是⽬标函数及其梯度;%hf,dhf分别是等式约束(向量)函数及其jacobi矩阵的转置;%gf,dgf分别是不等式约束(向量)函数及其jacobi矩阵的转置;%输出:x是近似最优点,mu,lambda分别是相应于等式约束和不等式% 等式约束的乘⼦向量;output是结构变量,输出近似极⼩值f,迭代次数,内迭代次数等%%%%%%c初始化相关参数%%%%%%%%%%%maxk=500; %最⼤迭代次数sigma=2.0; %罚因⼦eta=2.0; theta=0.8; %PHR算法中的实参数k=0; ink=0; %k,ink分别是外迭代和内迭代次数epsilon=1e-5;%终⽌误差值x=x0;he=feval(hf,x);gi=feval(gf,x);%he=feval(hf,x)=hf(x)n=length(x);l=length(he);m=length(gi);%选取乘⼦向量的初始值mu=0.1*ones(1,1);lambda=0.1*ones(m,1);%ones为⽣成m*n的全1矩阵btak=10; btaold=10; %⽤来检验终⽌条件的两个值while (btak>epsilon & k<maxk)%%%%%%c先求解⽆约束问题%%%%%%%%%%%%调⽤BFGS算法程序求解⽆约束⼦问题[x,v,ik]=bfgs('mpsi','dmpsi',x0,fun,hf,gf,dfun,dhf,dgf,mu,lambda,sigma);%%其中x为最优点,val为最优值,ik为迭代次数 ink=ink+ik;he=feval(hf,x);gi=feval(gf,x);%%%%%%%%%%计算btak%%%%%%%%%%%btak=0.0;for(i=1:l),btak=btak+he(i)^2; endfor(i=1:m)temp=min(gi(i),lambda(i)/sigma);btak=btak+temp^2;endbtak=sqrt(btak);if btak>epsilon%%%%%%%%%%%更新罚参数%%%%%%%%%%%if(k>=2 & btak>theta*btaold)sigma=eta*sigma;end%%%%%%%%%%%更新乘⼦向量%%%%%%%%%%%%for(i=1:l),mu(i)=mu(i)-sigma*he(i);endfor(i=1:m)%lambda(i)=max(0.0,lambda(i)-sigma*gi(i));lambda(i)=max(0.0,lambda(i)-gi(i));endend%%%%%%%%%%%迭代%%%%%%%%%%%%k=k+1;btaold=btak;x0=x;endf=feval(fun,x);output.fval=f;output.iter=k;output.inner_iter=ink;output.bta=btak;BFGS算法部分:function [x,val,k]=bfgs(fun,gfun,x0,varargin)%功能:⽤BFGS算法求解⽆约束问题:minf(x)%输⼊:x0是初始点,fun,gfun分别是⽬标函数及其梯度%varargin是输⼊的可变参数变量,简单调⽤bfgs时可以忽略,其他程序调⽤则尤为重要%输出:x为最优点,val为最优值,k时迭代次数maxk=500;%给出最⼤迭代次数rho=0.55;sigma=0.4;epsilon=1e-5;k=0;n=length(x0);Bk=eye(n);%Bk=feval('Hess',x0)while(k<maxk)gk=feval(gfun,x0,varargin{:});%计算梯度if(norm(gk)<epsilon),break;end%检验终⽌准则dk=-Bk\gk;%解⽅程组,计算搜索⽅向m=0;mk=0;while(m<20)%搜索求步长newf=feval(fun,x0+rho^m*dk,varargin{:});oldf=feval(fun,x0,varargin{:});if(newf<oldf+sigma*rho^m*gk'*dk)mk=m;break;endm=m+1;end%bfgs校正x=x0+rho^mk*dk;sk=x-x0;yk=feval(gfun,x,varargin{:})-gk;if(yk'*sk>0)Bk=Bk-(Bk*sk*sk'*Bk)/(sk'*Bk*sk)+(yk*yk')/(yk'*sk);endk=k+1;x0=x;endval=feval(fun,x0,varargin{:});主函数部分为:%⽬标函数⽂件function f=f1(x)f=(x(1)-2.0)^2+(x(2)-1.0)^2;%等式约束条件function he=h1(x)he=x(1)-2.0*x(2)+1.0;%不等式约束条件function gi=g1(x)gi=-0.25*x(1)^2-x(2)^2+1;%⽬标函数的梯度⽂件function g=df1(x)g=[2.0*(x(1)-2.0),2.0*(x(2)-1.0)]';%等式函数的Jacobi(转置)矩阵⽂件function dhe=dh1(x)dhe=[1.0,-2.0]';%不等式约束函数的Jacobi矩阵(转置矩阵)function dgi=dg1(x)dgi=[-0.5*x(1),-2.0*x(2)]';命令⾏指令为:x0=[3,3]'[x,mu,lambda,output]=multphr('f1','h1','g1','df1','dh1','dg1',x0)输出结果如下:。
罚函数

增广目标函数
增广目标函数由两个部分构成, 增广目标函数由两个部分构成,一部 分是原问题的目标函数, 分是原问题的目标函数,另一部分是 由约束函数构造出的“惩罚” 由约束函数构造出的“惩罚”项, 惩罚”项的作用是对“违规” “惩罚”项的作用是对“违规”的点 进行“惩罚”。 进行“惩罚”
罚函数的分类
内点法
如果从可行域内部的一点X 出发, 如果从可行域内部的一点X(0)出发, 按无约束极小化方向进行迭代( 按无约束极小化方向进行迭代(在进 行以为搜索时要适当控制步长, 行以为搜索时要适当控制步长,以免 迭代点跑到R 之外), ),则随着障碍因 迭代点跑到R0之外),则随着障碍因 的逐步减小, 子rk的逐步减小,即: r1>r2>…>rk>…>0 障碍项所起的作用也越来越小, 障碍项所起的作用也越来越小,因 而:
罚函数法主要有两种形式: 罚函数法主要有两种形式:外点法和内 点法。 点法。 外点法的迭代点一般在可行域的外部移 随着迭代次数的增加, 惩罚” 动,随着迭代次数的增加,“惩罚” 的力度也越来越大, 的力度也越来越大,从而迫使迭代点 向可行域靠近; 向可行域靠近;
罚函数的分类
内点法从满足约束条件的可行域的内点 开始迭代, 开始迭代,并对企图穿越可行域边界 的点予以“惩罚” 的点予以“惩罚”,当迭代点越接近 边界, 惩罚”就越大, 边界,“惩罚”就越大,从而保证迭 代点的可行性。 代点的可行性。
外点法
X=(-1/8,M=3: X=(-1/8,-29/192)T M=4: X=(-1/10,-23/200)T X=(-1/10,可知X(M)从R的外面逐步逼近R的边界, 可知X(M)从 的外面逐步逼近R的边界, X(M) 当 时 ∞X(M)趋于原问题 M → ,X(M)趋于原问题 的极小值解X 的极小值解Xmin=(0,0)T
罚函数法

No γk+1 = β γk
闸函数法: (续)
求初始内点: 1 x (1) , k 1, 转2 ; 2 令I k {i | g i ( x ( k ) ) 0}
(k ) 若 I , 则 x 为初始内点。 k 转 3 ; (k ) (k ) 否则,取j使g j ( x ) max{ g i ( x ) | i I k }
2 x
0
0
g ( x , ) 2 最优值(原问题)
3.闸函数法: (续)
定义 ( ) inf{ f ( x) B( x) | x S 0 } 有类似于罚函数法的理论结果: 定理: ( fg ), f , g连续,S 0 Φ , 最优解x S 0 则 1 min{ f ( x) | x S} inf{ ( ) | 0} lim ( )
(t ), (t )的典型取法: (t ) [max {0, t}] p (t ) | t | p
p为正整数。
当p 2时,称2次罚函数.(常用:因2次是最低次的光滑函数)
1.罚函数概念 (续)
Ex. min x s.t. x 2 0
2
( x 2) 2 , x 2 二次罚函数 : ( x) [max{ 0, x 2}] 0, x 2 如图 当 时, min 解析解 : 辅助函数 x ( x 2) 2 x 2 (4 1) x 4 , g ( x, ) f ( x) ( x) x ,x 2 4 1 当x 2时, g ( x, )的驻点x 2 2 故x 2 opt. 当x 2时, g ( x, )的最小值点~ x 2 x2 f ( x) ( x) f ( x ) x 2
惩罚函数法及广义乘子法

转化求解法(一):罚函数法
内罚函数法
Step1 选取初始数据。给定初始点 x0 ,in初tS始参数
允(0许,1)误差 ,令 0
k 1
,缩1 小 系0 数
Step2 求解无约束问题,以x k 为1 初始点,求解无约束问题
设其最优解为 。x k
min s.t.
G(x,rk)f(x)kB(x)
xintS
(1)
hj (x) 0, j 1,2,L ,l
其中 f ( x ) ,gi(x)(i1 ,2,L,m )和 hj(x)(j1,2,L,l)
都是定
min f (x)
。
s.t. gi(x) 0,i 1,2,L ,m
hj (x) 0, j 1,2,L ,l
为约x束k 问题
转化求解法(一):罚函数法
外罚函数法例题
转化求解法(一):罚函数法
外罚函数法例题
转化求解法(一):罚函数法
外罚函数法例题
转化求解法(一):罚函数法
外罚函数法例题
4.6-2 内惩罚函数法
基本是想
在迭代中总是从可行点出发,并保持在可行域内部进行搜索。 因此,这种方法适用于只有不等式约束的最优化问题
(一)、等式约束下的广义乘子法
等式约束的最优问题
min s.t.
f
(x)
2
l
h2j
(x)
j1
hj (x) 0, j 1,2,L ,l
m x iR n nF (x , k) ,f设(x 其) 最k 优P 解(x ) 为 。
xk
Step3 检查是否满足终止准则,若 kP(xk,)则迭代终止,
min s.t.
f (x) gi(x) 0的, 近i 似1,最2,优L解,m;, 否则,
罚函数法

外罚函数法算法
Step1: 给出 x0 ∈ Rn (可是不可行点), > 0(ε =10−4 ) ε 罚因子 σ1(σ1 =1) , 放大系数 C(C =10) , k =1. Step2: 以 xk−1 为初始点求无约束问题: ~ m P( x,σk ) = f ( x) +σk P( x) 得 xk = x(σk ). in ~ Step3: 若 σk P(xk ) < ε , 则 x* = xk ,停; 否则转step4 Step4: 令 σk+1 = Cσk , k = k +1, 转step2.
Q f (xk ) ≤ P(xk ,σk ) ≤ f x
设其极限为 f . ∴ { f (xk )} 亦为单调有界序列, ~ ∴ lim σk P(xk ) = lim [P(xk ,σk ) − f (xk )] = p0 − f 0 k→+∞ k→+∞ ~ Q σk →+∞ ∴ lim P(xk ) = 0 k→+∞ ~ ~ ~ 且 P(x) 连续; P(~) = 0 即 ~ 为可行解 x ∴ x Q x →x
0
( )
*
Q x 为最优解;∴ f x* ≤ f (~) x ~, f (x) 连续; f (~) = lim f (x ) ≤ f (x* ) ∴ x Q xk → x k k→+∞ * ~) 即 ~ 为(3)的整体最优解. ∴ f x = f (x x
k *
( )
( )
外罚函数法评价
(1) 如果有了求解无约束问题的好算法,利用 外罚函数法求解约束问题很方便. (2) 每个近似解 x(σk ) 往往不是可行解,这是某 些实际问题所无法接受的. 内罚函数法可以解决. (3) 由收敛性定理 σk 取越大越好, σk 越大将 而 造成增广目标函数 P( x,σ ) 的Hesse阵条件数越 大,趋于病态,给无约束问题求解增加很大困 难,甚至无法求解.乘子法可解决这个问题.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3 1
,
x2
3 2
2 1
又因该点处
2F x12
2
1,
2F x22
2
1,
2F 2
x1x2
并且 0,
可见
2F
2
2
1
2
2 1
正定.
因此 F x, 在点
x
5 2
s.t. gi ( x) 0, i 1, , m
hj ( x) 0, j 1, , p
做法:作辅助函数: F x, f x P x
其中 0是常数,称为惩罚因子;
P x 是定义在Rn上的一个函数,
称为惩罚项,它满足:
(1) P x是连续的; (2) 对任意的x Rn , 有P x 0; (3) 当且仅当x是可行点时,P x =0 .
p
hj
x
i 1
j 1
0 是很大的正数. 1, 1, 一般取 2.
分析:当 x是可行点时,P( x) 0, F ( x, ) f ( x).
当 x不是可行点时,P x 0, 又因 是大正数.
故此 x 很难成为F x, 的极小点. 因此,按上策略
4,
x1 x2 4 x1 x2 4
Page 10
同理:
F x2
2 x2 2 , 2 x2 2
2
x1
x2
4,
x1 x2 4 x1 x2 4
令: F F 0
x1 x2
得:x1
5 2
其中
P
x
m
max0,
gi
x
p
hj
x
i 1
j 1
0 是很大的正数. 1, 1, 一般取 2.
(2)求解: Min F x, f x P x xRn 得最优解 x
(3) 令 ,有 x x, 即得原问题的最优解.
即:无约束问题的最优解的极限为原问题 的最优解.
例2: 用外点罚函数法求解:
Page 9
min f x x1 32 x2 22
s.t g x x1 x2 4 0
解:作辅助函数
F x, x1 32 x2 22 max0, x1 x2 42
Page 7
解:构造罚函数和辅助函数:
F
x,
x2 1
x22
x1
x2
22
其中 是很大的正数.
令: F F 0
x1 x2
得:
x1
x2
2 2 1
又因该点处
2F x12
2
1,
2F x22
2
1,
2F 2
x1x2
并且 0,
可见
2F
2
2
1
2
2
1
正定.
Page 8
因此 F x, 在点
x
2 2
1
,
2
T
2 1
处取得极小值.
令 时,有:
x1 , x2 T x1*, x2* T 1,1 T
接下来求解 Min F( x, ), 并不断改变 ,不断循环求解.
Page 4
min f ( x), x Rn
1.
解析法:
s.t .
gi ( x) 0,
i 1,
,m
hj ( x) 0, j 1, , p
(1)构造: F x, f x P x
Page 1
§2 惩罚函数法
基本思想:
通过引入惩罚函数,将求解约束非线性规划问 题转化为求解一系列无约束非线性规划问题.
具体说:根据约束的特点,构造某种惩罚函数,
然后把它加到目标函数中去,将约束问题的求解 化为一系列无约束问题的求解(准确地说,是将 这些无约束问题的极小点依次作为迭代点).
Page 2
即:F
x,
x1 x1
32 32
x2 x2
22 22
,
x1
x2
4
2
,
x1 x2 4 0 x1 x2 4 0
因此:
F x1
2 x1 3 , 2 x1 3
2
x1
x2
辅助函数: F x, f x P x
根据惩罚函数表达式(构造方法的不同),形 成不同的罚函数法。我们重点介绍三种:
外点罚函数法、内点罚函数法、乘子法(外点罚 函数法的一种推广和发展).
一、外点惩罚函数法—外点法
Page 3
考虑如下问题:min f ( x), x Rn
2.罚函数的特点
min f ( x), x Rn
s.t. gi ( x) 0, i 1,
hj ( x) 0, j 1,
辅助函数: F x, f x P x
Page 5
,m ,p
其中
P
x
Байду номын сангаас
m
max0,
gi
x
Page 11
3 算法实现
Page 12
对于上述解法中, 的选取对问题的求解十分重要,
一般策略是取一个趋于无穷大的严格递增正数列 k,
3 1
,
3
2
T
2 1
处取得极小值.
令 得:
x
lim
x
5 2
,
3 2
T
.
易验证 g x 0 0, 即满足约束条件,
所以原问题的最优解及最优值分别为:
x*
5 2
,
3 2
T
,
f x* 1 . 2
得到的 F x, 的极小点应充分靠近可行域,逐渐
接近原问题的最优解.
Page 6
例1: 求解等式约束问题:
min f x1, x2 x12 x22
s.t x1 x2 2 0
分析: 图解法求出最优解 x* 1,1T .
下面看用外点法如何求解. 即如何构造惩罚 函数?