最速下降法求解无约束最优化问题

上传人:re****.1 文档编号:513000720 上传时间:2022-08-11 格式:DOCX 页数:10 大小:37.35KB
返回 下载 相关 举报
最速下降法求解无约束最优化问题_第1页
第1页 / 共10页
最速下降法求解无约束最优化问题_第2页
第2页 / 共10页
最速下降法求解无约束最优化问题_第3页
第3页 / 共10页
最速下降法求解无约束最优化问题_第4页
第4页 / 共10页
最速下降法求解无约束最优化问题_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《最速下降法求解无约束最优化问题》由会员分享,可在线阅读,更多相关《最速下降法求解无约束最优化问题(10页珍藏版)》请在金锄头文库上搜索。

1、最速下降法求解无约束最优化问题理论基础已知问题模型为min f (x )xeRn算法:1)2)选取初始点x与f = f (x ),初始化k = 00 0 0验证迭代中止条件:|Vx | eps且|Vf (x ) lim若是 |Vx | eps 且 |Vf (x )kk lim,则输出error信息注:其中 eps = 10-10 ,lim = 10003)计算x点搜索方向:d =-Vf (x )kkk计算x点迭代步长:a = arg min f (x +ad )kka0kk更新点列:x = x +a d , k = k +1k +1 k k k转第2步2 MATLAB 程序2.1 函数说明文件

2、名称:Opt_Steepest.mfunc tion xo, fo = Opt_St eepes t(f, grad, x0, TolX, TolFun, dis t0, Max Iter)% 用最速下降法求最优化解% 输入:% f函数名% grad梯度函数% x0解的初值% TolX变量的误差阈值% TolFun函数的误差阈值% distO初始步长% MaxIter最大迭代次数% 输出:% xo最小值的点% fo最小的函数值% 判断输入的变量数,设定一些变量为默认值if nargin 7MaxIter = 1000; %最大迭代次数默认为100 endif nargin 6dist0 = 1

3、0;%初始步长默认为10endif nargin 5TolFun = 1e-10; %函数值误差为1e-8endif nargin fx1+TolFun & fx1 fx1 = kmax1warning = warning + 1; %无法确定最优步长elsewarning = 0;endif warning = 2 | (norm(x - x0) TolX & abs(fx - fx0) TolFun) break;endx0 = x;fx0 = fx;endxo = x;fo = fx;if k = MaxIterfprintf(Just best in %d iterations, Ma

4、xIter);end2.2 函数测试文件名称:test.m% 用最速下降法求最优化解clc;% 目标函数fun = inline(x(l)2+2*x(2)2-2*x(l)*x(2)-4*x(l), x);% 目标函数的梯度函数grad = inline(2*x(1)-2*x(2)-4, 4*x(2)-2*x(1), x);x0 = 0 0;TolX = 1e-4;TolFun = 1e-9;MaxIter = 1000;dist0 = 1;xo, fo = Opt_Steepest(fun, grad, x0, TolX, TolFun, dist0, MaxIter)2.3测试结果3.1函数

5、说明文件名称:functionc#include #include #include # define eps 1e-6double f (int coe, double x) return (double) coe0*pow(x0,2)+coe1*pow(x1,2)+coe2*x0*x1+coe3*x0+coe4*x1;void grads (int coe, double x,double grads_x)grads_x0 = (double) 2*coe0*x0+coe2*x1+coe3;grads_x1 = (double) 2*coe1*x1+coe2*x0+coe4;double

6、findLambda (int c, double x, double g)double inf_x2 , lamd = 1;doinf_x0 = -2*c0*(x0-lamd*g0)*g0-2*c1*(x1-lamd*g1)*g1-x0*g1*c2-x1*g0*c2+2*c2* g0*g1*lamd-g0*c3-c4*g1;inf_x1 = 2*c0*g0*g0+2*c1*g1*g1+2*c2*g0*g1;lamd = lamd - inf_x0/inf_x1;while(inf_x0eps);return lamd;3.2 函数测试文件名称:runme.c#include #include

7、 #include #include function.c# define eps 1e-6int main()int coe5 = 1, 2, -2, -4, 0;double x2 = 0, 0,grads_x2,lambda;double fx = 0;int i=0;grads(coe, x, grads_x); /* 求梯度 */while(sqrt(pow(grads_x0,2)+pow(grads_x1,2)-eps0)lambda = findLambda(coe, x, grads_x); /* 一维精确搜索 */x0 = x0 - lambda*grads_x0;x1 = x1 - lambda*grads_x1;grads(coe, x, grads_x);fx = f(coe, x);prin tf(The optimal solution is: n);for(i=0;i2;i+)printf(%fn,xi);printf(nThe optimal value is:); printf(nfx = %f n,fx);getch();return 0;3.3测试结果lllie optimal soLutian is; 3-999999Q.Q&QQQQThe optimal naLue is: fx = -8.0S0090

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号