用最速下降法求解无约束非线性规划问题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
则
所以
x (4) x (3) (3) p (3) (0.1317, 0.0329) T 0.4168( 0.2634, 0.1316) T (0.0 225, 0.0219)T 2x 此时, p (4) f ( x (4) ) 1 | (0.0225,0.0219)T (0.045, 0.0878) T 4 x2
用最速下降法求解无约束非线性规划问题
摘要: 无约束非线性规划问题是一类重要的数学规划问题。文主要研究了用最速 下降法也就是梯度法对无约束非线性规划问题进行求解。 对于一个无约束非线性 规划利用最速下降法求解,首先需要确定其优化方向,此优化方向应该选择为 f 在当前点处的负梯度方向,利用一维搜索法找出沿此方向上的最小值及其对应 点,此后将该点作为新的出发点重复上述过程,直到达到允许的误差为止。本文 最后利用 c++语言编程得到满足允许误差内的最优解。 本文主要对一个无约束非线性规划问题的实例,首先利用上述迭代的方法, 计算出各迭代点的函数值,梯度及其模。然后应用 c++语言编程,得到精确地最 优 解 , 需 迭 代 六 次 才 使 得 0.01 , 得 到 的 最 优 解 为
f ( x ) 0 ,并且 2 f ( x ) 正定,则
x
是无约束非线性问题的严格局部最优解。
一般而言,无约束非线性问题的目标函数的驻点不一定是无约束非线性问题 的最优解, 但对于其目标函数是凸函数的无约束凸规划,下面定理证明了它的目 标函数的驻点就是它的整体最优解。 定理 4 设 f: R n R1 , x R n ,f 是 R n 上的可微凸函数。若有 f ( x ) 0 , 则 x 是无约束问题的整体最优解。 2.2 最速下降法的基本思想 最速下降法又称为梯度法,是 1847 年由著名数学家 Cauchy 给出的,他是解 析法中最古老的一种,其他解析方法或是他的变形,或是他的启发得到的,因此 它是最优化方法的基础。 设无约束非线性规划问题中的目标函数 f: R n R1 在点 x R n 处可微。最 速下降法的基本思想是:从当前点 x k 出发,取函数 f ( x) 在点 x k 处下降最快的方 向 作 为 我 们 收 索 方 向
k:=k+1
图(3-1)
利用 c++语言编程(源代码如下) :
#include<iostream.h> #include<math.h> double lambda(double x[2],double p[2],double a[2]) { double lam1,lam2; lam1=4*(pow(a[0],3)*x[0]*x[0]+pow(a[1],3)*x[1]*x[1]); lam2=-4*(pow(a[0]*x[0],2)+pow(a[1]*x[1],2)); double s; s=-lam2/(2*lam1);
又因为
p (3) (0.2634)2 (0.1316)2 0.2944 0.01
则进行第四次迭代
f ( x(3) p (3) ) (0.1317 0.2634 )2 2(0.0329 0.1316 )2 df 0.5268(0.1317 0.2634 ) 0.5264(0.0329 0.1316 ) d df 0 ,代入即可解得: (3) 0.4168 令 d
pk , 由 f ( x) 的 Taylor 展 示 知
f ( x k ) f ( x k p k ) f ( x k )T p k 0( p k ) ,略去 的高阶无穷小项不计,可
见取 p k f ( x k ) 时,函数值下降的最多 ,于是,我们可以够造出最速下降法 的迭代步骤。 2.3 无约束非线性规划问题的迭代步骤 解无约束非线性规划问题的最速下降法计算步骤 第1步 第2步 步; 选取初始点 x 0 ,给定终止误差 >0,令 k=0; 计算 f ( x k ) ,若 f ( x k ) ,停止迭代,输出 x k ,否则进行第 3
则
所以
x (3) x (2) (2) p (2) (0.2962, 0.2966) T 0.2777( 0.5924, 1.1864) T (0.1 317, 0.0329)T 2x 此时, p (3) f ( x (3) ) 1 | (0.1317, 0.0329)T (0.2634, 0.1316) T 4 x2
x[1]=x[1]+lamb*g[1]; p[0]=2*a[0]*x[0]; p[1]=2*a[1]*x[1]; g[0]=-p[0]; g[1]=-p[1]; i++; //cout("di %d ci mo=%f x1=%f\tx2=%f\tbuchang
a=%f\n",++i,sqrt(g[0]*g[0]+g[1]*g[1]),x[0],x[1],a); cout<<" 迭 代 次 数 为 "<<i<<" "<<sqrt(g[0]*g[0]+g[1]*g[1])<<endl<<"x "<<x[1]<<endl<<endl; } y=a[0]*x[0]*x[0]+a[1]*x[1]*x[1]; cout<<endl<<" 分 别 输 出 x[1],x[2] : "<<x[0]<<" 的 值 p 的 模 "<<x[0]<<"
又因为
p (2) (0.5924)2 (1.1864)2 1.3261 0.01
则进行第三次迭代
f ( x (2) p (2) ) (0.2962 0.5924 )2 2(0.2966 1.1864 )2 df 1.1848(0.2962 0.5924 ) 4.7456(0.2966 1.1864 ) d df 0 ,代入即可解得: (2) 0.2777 令 d
则
所以
x (2) x (1) (1) p (1) (1.7776, 0.44448) T 0.4167( 3.5552,1.7792) T (0. 2962, 0.2966)T 2x 此时, p (2) f ( x (2) ) 1 | (0.2962,0.2966)T (0.5924, 1.1864) T 4 x2
函数 f 的一个驻点可以是极小值点;也可以是极大值点;甚至也可能既不是 极小值点也不是极大值点,因此称它为函数 f 的鞍点,以上定理告诉我们, x 是 无约束问题的局部最优解的必要条件是: x 是其目标函数 f 的驻点。 定 理 3 设 f : R n R1 在 点 x R n 处 的 Hesse 矩 阵 2 f ( x ) 存 在 , 若
第3步 第4步
取 p k f ( x k ) ; 进行一维搜索,求 k ,使得 f ( x k k p k ) min f ( x k p k ) ,令
k 0
x k 1 x k k p k ,k=k+1。转第 2 步。
由以上计算步骤可知,最速下降法迭代终止时,求得的是目标函数驻点的一 个近似点。
取x
(0)
, 0.01
k:=0
计算 p
(k )
f ( x ( k ) )
停
p(k ) ?
否 求
(k ) (k )
是
x x ( k )
f (x min
0
p(k ) ) f ( x(k ) (k ) p(k ) )
令x
( k 1)
x(k ) (k ) p(k )
又因为
p (1) (3.5552)2 (1.7792)2 3.9755 0.01
则进行第二次迭代
f ( x(1) p (1) ) (1.7776 3.5552 )2 2(0.4448 1.7792 )2 df 7.1104(1.7776 3.5552 ) 7.1168(0.4448 1.7792 ) d df 0 ,代入即可解得: (1) 0.4167 令 d
return s; }
void main() { double lamb,x[2],a[2],p[2],g[2],e=0.01,y; int i=0; x[0]=4.0; x[1]=4.0; cout<<"输入函数的系数:a[0],a[1]:"<<endl; for(i=0;i<2;i++) cin>>a[i]; p[0]=2*a[0]*x[0]; p[1]=2*a[1]*x[1]; g[0]=-p[0]; g[1]=-p[1]; i=0; cout<<endl; while(sqrt(g[0]*g[0]+g[1]*g[1])>e&&i<=200) { lamb=lambda(x,g,a); x[0]=x[0]+lamb*g[0]; //开始迭代将次数赋值为 0
则
所以, x (1) x (0) (0) p (0) (4, 4)T 0.2778( 8, 16)T (1.7776, 0.4448)T
2x 此时, p (1) f ( x (1) ) 1 | (1.7776, 0.4448)T (3.5552,1.7792) T 4 x2
又因为
p (4) (0.045)2 (0.0878)2 0.0986 0.01
以上仍然没有达到要求,即还需继续迭代,直到满足 p ( k ) 0.01 为止。
3.2 对原无约束非线性规划进行 c++语言编程求解
就这样无限的迭代下去,直到 p ( k ) 0.01 为止,为此,我们可以用 c++语言 编程得到,其算法设计如下图(图 3-1)
三、问题求解
3.1 对原无约束非线性规划迭代
首先进行第一次迭代
2 x1 T p (0) f ( x (0) ) | (4,4)T (8, 16) 4 x2 f ( x(0) p (0) ) f ((4, 4)T (8, 16)T ) f (4 8 , 4 16 )T (4 8 )2 2(4 16 )2 df 16(4 8 ) 64(4 16 ) d df 5 0 ,即 16(4 8 ) 64(4 16 ) =0,解得: (0) 0.2778 令 d 18
x (6) (0.00162577, 0.00162577) T , p (6) 0.00727066 。
关键词:最速下降法 无约束非线性规划 最优解
一、问题重述
2 ) ,设初始点取为 用最速下降法求解无约束非线性规划问题: min( x12 2 x2
x (0) (4, 4)T ,迭代到满足允许误差 =0.01 为止的精确解。
二、问题分析
2.1 无约束非线性问题的最优条件 该问题是一个无约束非线性规划问题,利用最少下降法求解该问题,无约束 非线性规划问题的最优解所要满足的必要条件和充分条件是我们设计算法的依 据,为此有以下几个定理。 定理 1 设 f: R n R1 在点 x R n 处可微,若存在 p R n ,使 ຫໍສະໝຸດ Baiduf ( x )T p 0 , 则向量 p 是 f 在点 x 处的下降方向。 定理 2 设 f: R n R1 在点 x R n 处可微,若 x 是无约束问题的局部最优解, 则 f ( x ) 0 有数学分析中我们已经知道,使 f ( x) 0 的点 x 为函数 f 的驻点或平稳点。