最优化课程设计--共轭梯度法算法分析与实现
数值最优化(共轭梯度)ppt课件

极小点.
最终x(n)= u1 p1+u2 p2+···+un pn =x* 即迭代过程同样在n步之后找到最优点.
因此,对二次函数
f ( x) 1 xTGx bT x c 2
我们可以找到n个方向(向量),对其依次进行一维搜索,最
8
共轭方向法的思路
|| (s1 1 u1) p1 (s2 u2 ) p2 L (sn un ) pn ||G2
(s1 1 u1) p1 (s2 u2 ) p2 L (sn un ) pn ,
( s1
1
u1 )
p1
( s2
n
u2
)
p2
L
(sn un ) pn
(s1 1 u1)2 || p1 ||G2 (si ui )2 || pi ||G2
即p1,p2,···,pn线性无关,且 pi , pj 0(i j)
设问题的最优解x*= -G-1b在这组基底下的表示为x*= u1 p1+u2 p2+···+un pn
任取初始点x(0) =s1 p1+s2 p2+···+sn pn, 在方向p1上进行 一维搜索,即求解问题
min || (s1 1 u1) p1 (s2 u2 ) p2 L (sn un ) pn ||G2
z
x(1) O
x(3) =x* x(2) y
x(0)
x
5
共轭方向法的思路
上面的方法对一般的二次函数是否适用呢?
考虑问题
其中
G
1 2
最优化方法-共轭方向和共轭梯度法

由3式可以看出
2020/3/6
16
2.共轭方向-共轭方向法
• 基本定义
利用共轭方向作为搜索方向的无约束极小化算法
• 通用步骤:
(1)任取X 0 ,以及在X 0的下降方向P0 , k 0; (1)求解一维搜索问题
min f ( X k Pk ),为最优步长,是个数值.
(3) X k1 X k k Pk ;
X
T QX
bT
X
c, Q正定,
X 0是初始点,
P0
f
(X0)
X k1 X k k Pk , k 0,1...m 1, k是最优步长,且
Pk1 f ( X k1) ak Pk (这是构造的结果)
其中ak
f
( X k1)T QPk PkT QPk
,
P0
(
X
)T
k 1
Pk
)T
PkT f ( X k1)
f ( X k1) QX k1 b Q( X k k Pk ) b, ( X k 1 X k k Pk )
f ( X k1) (QX k b) kQPk f ( X k ) kQPk
当m 2时 所以,P0,P1, Pm1是线性无关的。
P0T QP1
P0T Q f ( X 1 )
f ( X 1 )T QP0 P0T QP0
P0
P0T Qf ( X 1 ) f ( X 1 )T QP0 0
表明,P0与P1共轭。
2020/3/6
2020/3/6
4
1.共轭方向法的基本原理
• 已知 X1 点是在 X 0 点在直线 l0 上沿 P0 搜索方向的一个极小 点。(l0 与 P0 是平行的)
共轭梯度算法的设计与实现毕业设计

共轭梯度算法的设计与实现毕业设计
首先,共轭梯度算法的设计需要明确以下几个步骤:初始化、迭代计算、收敛判断。
在初始化阶段,需要设置初始解向量和初始残差向量,并
计算初始共轭方向向量。
在迭代计算阶段,根据共轭方向向量和残差向量,通过求解步长和更新解向量来不断逼近准确解。
在收敛判断阶段,通过计
算残差的范数或迭代次数等指标来判断算法是否结束。
其次,共轭梯度算法的实现需要考虑以下几个方面:矩阵和向量的存储、步长的求解、解向量的更新、收敛判断的条件。
在存储方面,矩阵和
向量可以使用数组来表示,并利用索引进行读写操作。
在步长的求解方面,可以采用线或二次等方法来求解最优步长,以提高算法的收敛速度。
在解
向量的更新方面,可以使用矩阵向量乘法和向量加法等运算来更新解向量。
在收敛判断方面,可以设置收敛阈值或最大迭代次数等条件来判断算法是
否结束。
最后,为了进一步提高共轭梯度算法的性能,可以考虑以下几个改进
方法:预处理、并行计算、加速技术。
预处理可以通过矩阵分解等方法来
提前对矩阵进行优化,从而加快求解速度。
并行计算可以利用多核或集群
计算资源,将大规模计算任务分解为多个并行的小任务进行计算,以提高
计算效率。
加速技术可以利用加速硬件如GPU或FPGA等进行计算,以加
快算法的执行速度。
综上所述,共轭梯度算法的设计与实现是一个涉及多个方面的综合性
任务,需要考虑问题的数学模型、算法的理论基础以及计算机实现的技术
细节。
通过合理的设计和实现,可以提高共轭梯度算法的计算效率和性能,从而更好地应用于实际问题的求解中。
共轭梯度法

共轭梯度法1.算法思想:共轭梯度法是利用目标函数梯度逐步产生共轭方向作为线搜索方向的方法,每次搜索方向都是在目标函数梯度的共轭方向,搜索步长通过一维极值算法确定。
2.算法步骤:用共轭梯度法求无约束多维极值问题min (),n f x x R ∈的算法步骤如下:(1) 给定初始点(0)x ,及精度0ε>; (2) 若(0)()f x ε∇≤,停止,极小值点为(0)x ,否则转步骤(3);(3) 取(0)(0)()p f x =-∇,且置0k =;(4) 用一维搜索法求k t ,使得()()()()()0()mink k k k k t f x t p f x tp ≥+=+,令,(1)()()k k k k x x t p +=+,转步骤5; (5) 若(1)()k f x ε+∇≤,停止,极小值点为(1)k x +,否则转步骤(6);(6) 若1k n +=,令(0)()n x x =,转步骤(3),否则转步骤(7); (7) 令(1)(1)()()k k k k p f x p λ++=-∇+,2(1)2()()()k kk f xf x λ+∇=∇,置1k k =+,转步骤(4)。
3.算法源程序:#include<stdio.h> #include<math.h>#define N 10#define eps pow(10,-6)double f(double x[],double p[],double t){double s;s=pow(x[0]+t*p[0],2)+25*pow(x[1]+t*p[1],2); return s;}/*以下是进退法搜索区间源程序*/void sb(double *a,double *b,double x[],double p[]) {double t0,t1,t,h,alpha,f0,f1;int k=0;t0=2.5; /*初始值*/h=1; /*初始步长*/alpha=2; /*加步系数*/f0=f(x,p,t0);t1=t0+h;f1=f(x,p,t1);while(1){if(f1<f0){h=alpha*h; t=t0;t0=t1; f0=f1;k++;}else{if(k==0){h=-h;t=t1;}else{*a=t<t1?t:t1;*b=t>t1?t:t1;break;}}t1=t0+h;f1=f(x,p,t1);}}/*以下是黄金分割法程序源代码*/double hjfg(double x[],double p[]){double beta,t1,t2,t;double f1,f2;double a=0,b=0;double *c,*d;c=&a,d=&b;sb(c,d,x,p);/*调用进退法搜索区间*/printf("\nx1=%lf,x2=%lf,p1=%lf,p2=%lf",x[0],x[1],p[0],p[1]); printf("\n[a,b]=[%lf,%lf]",a,b);beta=(sqrt(5)-1.0)/2;t2=a+beta*(b-a); f2=f(x,p,t2);t1=a+b-t2; f1=f(x,p,t1);while(1){if(fabs(t1-t2)<eps)break;else{if(f1<f2){t=(t1+t2)/2;b=t2; t2=t1;f2=f1; t1=a+b-t2;f1=f(x,p,t1);}else{a=t1; t1=t2;f1=f2;t2=a+beta*(b-a);f2=f(x,p,t2);}}}t=(t1+t2)/2;return t;}/*以下是共轭梯度法程序源代码*/void gtd(){double x[N],g[N],p[N],t=0,f0,mod1=0,mod2=0,nanda=0; int i,k,n;printf("请输入函数的元数值n=");scanf("%d",&n);printf("\n请输入初始值:\n");for(i=0;i<n;i++)scanf("%lf",&x[i]);f0=f(x,g,t);g[0]=2*x[0]; g[1]=50*x[1];mod1=sqrt(pow(g[0],2)+pow(g[1],2));/*求梯度的长度*/if(mod1>eps){p[0]=-g[0]; p[1]=-g[1]; k=0;while(1){t=hjfg(x,p);/*调用黄金分割法求t的值*/printf("\np1=%lf,p2=%lf,t=%lf",p[0],p[1],t);x[0]=x[0]+t*p[0]; x[1]=x[1]+t*p[1];g[0]=2*x[0]; g[1]=50*x[1];/*printf("\nx1=%lf,x2=%lf,g1=%lf,g2=%lf",x[0],x[1],g [0],g[1]);*/mod2=sqrt(pow(g[0],2)+pow(g[1],2)); /*求梯度的长度*/if(mod2<=eps) break;else{if(k+1==n){g[0]=2*x[0]; g[1]=50*x[1];p[0]=-g[0]; p[1]=-g[1]; k=0;}else{nanda=pow(mod2,2)/pow(mod1,2);printf("\nnanda=%lf,mod=%lf",nanda,mod2);p[0]=-g[0]+nanda*p[0];p[1]=-g[1]+nanda*p[1];mod1=mod2;k++;}}printf("\n--------------------------");}}printf("\n最优解为x1=%lf,x2=%lf",x[0],x[1]);printf("\n最终的函数值为%lf",f(x,g,t));}main(){gtd();}4.运行结果:5.结论与总结:通过这次运筹学的课程设计,,从中让我学到了很多知识,对共轭梯度法的设计与实现有了进一步的认识,搜索方向都是在目标函数梯度的共轭方向,搜索步长通过一维极值算法确定,本次课程设计通过上网查找和在图书馆查找相关资料但从中还有很多不足之处,在日后的学习中不断完善。
共轭方向与共轭梯度法-最优化方法

f (X1)T P0 0 ,所以 f (X1)T P0 1P1TQ P0 0
P1TQ P0 0
(1)
以上就是搜索方向P1所必须满足的(必要) 条件。这也是使X2是极小点的充分条件。 P1,P2称为关于Q的共轭方向。
讨论表明 对于二维的具有正定矩阵Q的 二次函数f(X),从任一初始点出发,依次沿关 于Q共轭的两个方向进行一维搜索,必可达到 f(X)的无约束精确极小点。
Pk 1
0
且对j 0,1 , k 2, 有
PjT QPk PjT Q f ( X k ) k1Pk1
PjT Qf
(X
k
)
k
PT
1 j
QPk
1
f ( X k )T QPj
f ( X k )T f ( X j1) f ( X j ) j
f ( X k1 ) QX k1 b Q( X k k Pk ) b (2)
f ( X k1 ) f ( X k ) k QPk
所以
f ( X m ) f ( X m1) m1QPm1
f ( X m2 ) m2QPm2 m1QPm1
其中1 是最优步长,1>0 .因为 X * 是无约束极小点。
故 f ( X * ) 0 即 QX * b 0
f (X1) QX1 b
Q( X * 1P1) b (QX * b) 1QP1 1QP1
又因为 X1是f(X)沿P0方向的直线l0上的极小点,故
设 X En ,
,Q为对称正定矩阵,P0,
P1,···,Pm-1是关于Q共轭的m个共轭方向,
最优化共轭梯度法

x1 x2
,
A
4 0
0 2
.
f ( x) ( 4x1 , 2x2 )T .
第 1 次迭代:
令 d (1) g1 ( 8, 4 )T ,
而
1
g1T d (1) d (1)T Ad (1)
(
8
,
4
)
8 4
(
8
,
4
)
2. 共轭梯度法
Fletcher R eeves 共轭梯度法 :
min f ( x) 1 xT Ax bT x c 2
其中 x Rn , A是对称正定矩阵,b Rn,c 是常数。
基本思想:将共轭性和最速下降方向相结合,利用已知迭 代点 处的梯度方向构造一组共轭方向,并沿此方向进行搜索,求出 函数的极小点。
取最速下降方向作为第一个搜索方向,开始下一轮搜索。
注 在共轭梯度法中,也可采用其它形式的公式计算i ,如
i
giT1( gi1 giT gi
gi )
( PRP共轭梯度法)。
i
|| gi1 || d (i)T gi
(Dixon共轭梯度法)。
i
gi
T 1
(
gi1
gi
)
d (i)T ( gi1 gi )
||
gi1 ||2 d (i)T gi
|| gi1 ||2 || gi ||2
(4)
FR算法步骤:
1. 任取初始点x(1) ,精度要求 ,令k 1。 2. 令g1 f ( x(1) ),若 || g1 || ,停止,x(1)为所求极小点;
最优化课程设计共轭梯度法算法分析与实现样本

最优化课程设计--共轭梯度法算法分析与实现(设计程序)题目共轭梯度法算法分析与实现班级 / 学号 14140101/ 学生姓名黄中武指导教师王吉波王微微课程设计任务书课程名称最优化方法课程设计院(系) 理学院专业信息与计算科学课程设计题目共轭梯度法算法分析与实现课程设计时间: 年6月 16日至年 6月 27日课程设计的要求及内容:[要求]1. 学习态度要认真, 要积极参与课程设计, 锻炼独立思考能力;2. 严格遵守上机时间安排;3. 按照MATLAB编程训练的任务要求来编写程序;4. 根据任务书来完成课程设计论文;5. 报告书写格式要求按照沈阳航空航天大学”课程设计报告撰写规范”;6. 报告上交时间:课程设计结束时上交报告;7. 严禁抄袭行为, 一旦发现, 课程设计成绩为不及格。
一、运用共轭梯度法求解无约束最优化问题要求:1)了解求解无约束最优化问题的共轭梯度法;2)绘出程序流程图;3)编写求解无约束最优化问题的共轭梯度法MATLAB程序;4)利用编写文件求解某无约束最优化问题;5)给出程序注释。
指导教师年月日负责教师年月日学生签字年月日沈阳航空航天大学课程设计成绩评定单课程名称最优化理论与算法课程设计院(系) 理学院专业信息与计算科学课程设计题目共轭梯度法算法分析与实现学号姓名黄中武指导教师评语:课程设计成绩指导教师签字年月日最优化方法课程设计沈阳航空航天大学课程设计用纸目录目录一、正文 ........................................................ ....... 1 二、总结 ........................................................ ....... 8 参考文献 ........................................................ ....... 9 附录 ........................................................ (10)第 I 页最优化方法课程设计沈阳航空航天大学课程设计用纸正文一、正文一无约束最优化问题的共轭梯度法共轭梯度法最初是由Hesteness和Stiefel于1952年为求解线形方程组而提出的。
共轭梯度法

题目:共轭梯度法及其数值实现院系:数理科学与工程学院应用数学系专业:数学与应用数学姓名学号:************************************************指导教师:张世涛日期:2015 年7 月 5 日最优化是一门应用性很强的学科,近年来,随着计算机的发展以及实际问题的需要,大规模优化问题越来越受到重视。
共轭梯度法是最优化中最常见的方法之一,他具有算法简单、存储需求少、有较快的收敛速度和二次终止性且易于实现等优点,十分适合于大规模优化问题。
非线性共轭梯度法已有五十多年的历史,最早由计算数学家Hestenes和几何学家Stiefel为求解线性方程组Ax=b,n Rx∈而独立提出的。
较著名的有FR方法、PRP方法、HS方法和LS方法等。
非线性最优化的共轭梯度算法的收敛性分析,也就是讨论各种共轭梯度算法在不同搜索下的收敛性质。
本文主要研究求解无约束优化问题的非线性共轭梯度法,并用Matlab软件对其数值实现。
关键词:无约束规划;非线性共轭梯度法;迭代;最优解;数值实现AbstractOptimization is strong discipline applied. In recent years, with the development of computer and practical issues,large-scale optimization problems are given more and more attention.Conjugate gradient method is one of the most commonly used methods in optimization. It is simply, storage needs less, easy to practice with faster convergence speed and quadratic termination. It is suitable for large-scale optimization problem.The conjugate gradient method have been more than 50 years of history. The pioneers were mathematician Hestenes and geometrician Stiefel. They independently proposed this method for solving system of linear equations Ax=b,n Rx∈. Well-known conjugate gradient method is FR method, PRP method, HS method, LS method and so on. The convergence analysis of the conjugate gradient algorithm for nonlinear optimization is also the convergence of various conjugate gradient algorithms under different search conditions. Global convergence and numerical result of nonlinear conjugate gradient method of unconstrained optimization is investigated in this paper. Besides, we use Matlab to get its numerical solution.Keywords:Unconstrained programming; Nonlinear conjugate gradient method;Iteration; Optimal solution; Numerical implementation第一章引言 (2)1.1无约束优化问题概述 (2)1.2 共轭方向 (2)1.3 共轭方向法 (3)第二章共轭梯度法 (4)2.1 基本原理 (4)2.2 算法步骤 (4)2.3 程序流程图 (5)第三章算例 (6)总结 (9)参考文献 (11)附录 (12)第一章引言1.1 无约束优化问题概述无约束最优化问题,即为在不对所求问题定义域或值域做任何限制情况下,对目标函数求最小值的一类问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最优化课程设计--共轭梯度法算法分析与实现(设计程序)题目共轭梯度法算法分析与实现班级 / 学号 14140101/11 学生姓名黄中武指导教师王吉波王微微课程设计任务书课程名称最优化方法课程设计院(系) 理学院专业信息与计算科学课程设计题目共轭梯度法算法分析与实现课程设计时间: 2014 年 6月 16日至2014 年 6月 27日课程设计的要求及容:[要求]1. 学习态度要认真,要积极参与课程设计,锻炼独立思考能力;2. 严格遵守上机时间安排;3. 按照MATLAB编程训练的任务要求来编写程序;4. 根据任务书来完成课程设计论文;5. 报告书写格式要求按照航空航天大学“课程设计报告撰写规”;6. 报告上交时间:课程设计结束时上交报告;7. 严禁抄袭行为,一旦发现,课程设计成绩为不及格。
一、运用共轭梯度法求解无约束最优化问题要求:1)了解求解无约束最优化问题的共轭梯度法;2)绘出程序流程图;3)编写求解无约束最优化问题的共轭梯度法MATLAB程序;4)利用编写文件求解某无约束最优化问题;5)给出程序注释。
指导教师年月日负责教师年月日学生签字年月日航空航天大学课程设计成绩评定单课程名称最优化理论与算法课程设计院(系) 理学院专业信息与计算科学课程设计题目共轭梯度法算法分析与实现学号 11 黄中武指导教师评语: 课程设计成绩指导教师签字年月日最优化方法课程设计航空航天大学课程设计用纸目录目录一、正文 ............................................................... 1 二、总结 ............................................................... 8 参考文献 ............................................................... 9 附录 (10)第 I 页最优化方法课程设计航空航天大学课程设计用纸正文一、正文一无约束最优化问题的共轭梯度法共轭梯度法最初是由Hesteness和Stiefel于1952年为求解线形方程组而提出的。
后来,人们把这种方法用于求解无约束最优化问题,使之成为一种重要的最优化方法。
下面,重点介绍Fletcher-Reeves共轭梯度法,简称FR法。
共轭梯度法的基本思想是把共轭性与最速下降法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点。
根据共轭梯度方向的基本性质,这种方法具有二次终止性。
首先讨论对于二次函数的共轭梯度法,然后再把这种方法推广到极小化一般函数的情形。
考虑问题TTmi fx(),,,0.5xAxbxcn其中A是对称正定矩阵,c是常数。
具体求解方法如下:(1)首先,任意给定一个初始点,计算出目变函数在这点的梯度,fx()xg若=0,则停止计算,否则,令 1(1)(1)dfxg,,,,,() 1(1)(2)(2),0沿方向搜索,得到点,计算在处的梯度,若g,则利用dxx2(1)(2)(2)和构造第二个搜索方向,再沿搜索。
,gddd2()k()k()k()k一般地,若已知点和搜索方向,则从出发,沿进行xdxd搜索,得到(1)()()kkk,xxd,,, k其中步长满足 ,k()()kk()()kkfxd(),,,fxd(),,min k此时可求出的显式表达。
令 ,k()()kk,,,()(),,fxd,,()求得极小点,令'(1)()kTk,,,()()0,,,fxd第 1 页最优化方法课程设计航空航天大学课程设计用纸正文根据二次函数的梯度表达式,即(1)()kTk, ()0Axbd,,T()()kkk Axdbd(+)0,,,,,kT()()kk (10.3.16) gAdd,,,0,,()kk由(10.3.16)式得到Tk()gd()()kTkk (10.3.17) ,,,dAdk(1)k,计算在处的梯度,若,则停止计算;否则,用fx()g,0x,gk,1k,1()k(1)k,(1)k,()k和构造下一个搜索方向,并使和关于A共轭。
按此设dddd想,令(1)()kk,dgd,,,, (10.3.18) kk,1()kT上式两端左乘,并令 dA()(1)()()()kTkkTkTk,dAddAgdAd,,,,,0 kk,1由此得到()kT()()kTk,,dAg (10.3.19) dAd,kk1(1)k,(1)k,再从出发,沿方向搜索 xd综上分析,在第一个搜索方向取负梯度的前提下,重复使用公式(10.3.14),(10.3.17),(10.3.18)和(10.3.19),就能伴随计算点的增加,构造出一组搜索方向。
第 2 页最优化方法课程设计航空航天大学课程设计用纸正文二程序流程图开始输入初始点x0精度e继续迭代满足精度要 N求Y输出迭代结果结束图一共轭梯度法程序流程图三共轭梯度法的MATLAB程序function [x,val,k]=frcg(fun,gfun,x0)maxk=5000;rho=0.6;sigma=0.4;k=0;epsilon=1e-7;n=length(x0);while (k<maxk)g=feval(gfun,x0);第 3 页最优化方法课程设计航空航天大学课程设计用纸正文itern=k-(n+1)*floor(k/(n+1));itern=itern+1;if(itern==1)d=-g;elsebeta=(g'*g)/(g0'*g0);d=-g+beta*d0;gd=g'*d;if(gd>=0)d=-g;endendif (norm(g)<epsilon)break;endm=0;mk=0;while (m<20)if(feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d) mk=m;break;endm=m+1;endx0=x0+rho^mk*d;val=feval(fun,x0);g0=g;d0=d;k=k+1;end第 4 页最优化方法课程设计航空航天大学课程设计用纸正文 x=x0;val=feval(fun,x);function f=fun(x)f=100*(x(1)^2-x(2))^2+(x(1)-1)^2;function g=gfun(x)g=[400*x(1)*(x(1)^2-x(2))+2*(x(1)-1),-200*(x(1)^2-x(2))]'四利用所编程序求解实际问题222mifxxxx()100*()(1),,,,例 n121**Txfx,,(1,1),()0该问题有精确解利用所编程序求解此问题,在命令窗口输入:运行结果为:第 5 页最优化方法课程设计航空航天大学课程设计用纸正文五程序注释function [x,val,k]=frcg(fun,gfun,x0)%用FR共轭梯度法求解无约束问题:min f(x) %输入:x0时初始点,fun,gfun 分别是目标函数和梯度 %输出:x,val分别是近似最优点和最优值,k是迭代次数。
maxk=5000;%最大迭代次数rho=0.6;sigma=0.4;k=0;epsilon=1e-7;n=length(x0);while (k<maxk)g=feval(gfun,x0);%计算梯度itern=k-(n+1)*floor(k/(n+1));itern=itern+1;%计算搜索方向if(itern==1)d=-g;elsebeta=(g'*g)/(g0'*g0);d=-g+beta*d0;gd=g'*d;if(gd>=0)d=-g;endendif (norm(g)<epsilon)%检验终止条件break;endm=0;mk=0;while (m<20)第 6 页最优化方法课程设计航空航天大学课程设计用纸正文if(feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d) mk=m;break;endm=m+1;endx0=x0+rho^mk*d;val=feval(fun,x0);g0=g;d0=d;k=k+1;endx=x0;val=feval(fun,x);function f=fun(x)f=100*(x(1)^2-x(2))^2+(x(1)-1)^2;%需要求解的函数function g=gfun(x)g=[400*x(1)*(x(1)^2-x(2))+2*(x(1)-1),-200*(x(1)^2-x(2))]'%梯度第 7 页最优化方法课程设计航空航天大学课程设计用纸正文二、总结不知不觉,一个学期就这样过去了,随着期末尾声的到来,《最优化》这门课也已经结课了,接着而来的是为期两个星期的课程设计。
作为信息与计算科学系的一员,我们在课堂上接触最多的就是理论部分,刚好课程设计可以给我们验证理论,联系实际的机会,所以,这次课程设计,我一直都在认真完成。
在拿到自己的课程设计题目的时候,我对它进行了一定时间的审题,题目中要求我用共轭梯度法求解无约束优化问题,所以我拿到课本,仔细地看了共轭梯度法的原理与例题求解,以便帮助我更好的理解共轭梯度法的应用。
我记得,再一次研究生面试中,有的老师问过考生:你在你的大学生涯中学到了什么,如果让我回答,我会说:我学到了一种发现问题与解决问题的方法,这种方法是在我的学习中慢慢形成的一种潜移默化的思想,关于学到的容,我们不会一直保留太清晰的记忆,也不会在以后的生活中用到太多,就像买菜不会用到微积分,不会求导,但是,数学方法和思想给我们思考问题所带来的方法论却是大有裨益。
这次课程设计,我发现我的很多不足,比如在MATLAB上的应用上,我还不熟练,这与我在平时的练习中没有加以重视有关,而且在《最优化》的很多知识点上,自己还没有很好地掌握。
最后,我要感我们的任课教师王吉波老师,感他在给我们上课中的带来的幽默感和知识的传授。
在此,祝愿老师身体健康,工作顺利。
完稿日期: 2014 年 6月 21日第 8 页最优化方法课程设计航空航天大学课程设计用纸参考文献参考文献[1] 宝林.《最优化理论与算法》[M].,清华大学,2013. [2] 卫国.《MATLAB程序设计教程》[M].,中国水利水电,2010. [3] 马昌凤.《最优化方法及其MATLAB程序设计》[M].,科学,2010.第 9 页最优化方法课程设计航空航天大学课程设计用纸附录附录源程序:function [x,val,k]=frcg(fun,gfun,x0)maxk=5000;rho=0.6;sigma=0.4;k=0;epsilon=1e-7;n=length(x0);while (k<maxk)g=feval(gfun,x0);itern=k-(n+1)*floor(k/(n+1));itern=itern+1;if(itern==1)d=-g;elsebeta=(g'*g)/(g0'*g0);d=-g+beta*d0;gd=g'*d;if(gd>=0)d=-g;endendif (norm(g)<epsilon)break;endm=0;mk=0;while (m<20)if(feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d) 第 10 页最优化方法课程设计航空航天大学课程设计用纸附录mk=m;break;endm=m+1;endx0=x0+rho^mk*d;val=feval(fun,x0);g0=g;d0=d;k=k+1;endx=x0;val=feval(fun,x);function f=fun(x)f=100*(x(1)^2-x(2))^2+(x(1)-1)^2;function g=gfun(x)g=[400*x(1)*(x(1)^2-x(2))+2*(x(1)-1),-200*(x(1)^2-x(2))]' 第 11 页。