文章目录

  • @[toc]
    • 实验内容:
    • 实验步骤:
      • BGFS.m文件
        • **fanshu.m**
        • **df.m**
        • **p2c3.m**
      • PRP.m文件
        • gold.m

实验内容:

编制无约束最优化程序(BFGS算法,PRP算法)求解下列无约束问题 (说明:一维搜索可调用实验一编写的程序)
minf(x)=2x12−2x1x2+x22+2x1−2x2min\quad f(x)=2x_1^2-2x_1x_2+x_2^2+2x_1-2x_2 minf(x)=2x12​−2x1​x2​+x22​+2x1​−2x2​


实验步骤:

  1. 理解和分析算法
  2. 编写程序
  3. 调试程序
  4. 求解无约束问题

BGFS.m文件
clear all
clc
x=sym('x',[2,1]);
syms y;y=2*x(1)^2-2*x(1)*x(2)+x(2)^2+2*x(1)-2*x(2);
m_h=zeros(2,1);   %初始x后
B_h=eye(2);          %初始B后
k=1;                     %计数器while (fanshu(df(m_h,y))>0.001)d=B_h\(-df(m_h,y))';     %求解这个线性方程组alpha=p2c3(m_h,d);  %一维搜索求得alpham_f=m_h;m_h=m_f+alpha*d;s=m_h-m_f;y_t=(-df(m_h,y))'-(-df(m_f,y))';B_f=B_h;B_h=B_f-(B_f*s*s'*B_f)/(s'*B_f*s)+(y_t*y_t')/(y_t'*s);k=k+1;
end
solver = m_h

其中fanshu、df和p2c3下面将以.m文件实现

fanshu.m
function y=fanshu(x)
y=sqrt(x(1)^2+x(2)^2);
df.m
function y=df(m,f)
x=sym('x',[2,1]);
syms y1 y2
y1=diff(f,x(1));
y2=diff(f,x(2));
t1=subs(y1,x,m);t2=subs(y2,x,m);y(1)=double(t1);
y(2)=double(t2);
p2c3.m
%%两点三次插值%初始步长α记为a=1;步长缩减因子ρ记为rho
%将点μ,μ1,μ2记为m,m1,m2,将函数值φ,φ1,φ2记为f,f1,f2
% 导数值φ',φ1',φ2'记为ff,f11,f22
%
% clear all;
% clc
function  m=p2c3(x,d)
a=1;rho=0.1;m1=0;epsilon=0.001;
f1=fun(m1,x,d); f11=fun_t(m1,x,d);if f11>0a=-abs(a);
elsea=abs(a);
endm2=m1+a; f2=fun(m2,x,d); f22=fun_t(m2,x,d);while (f11*f22)>0a=2*a;m1=m2;f1=f2;f11=f22;m2=m1+a; f2=fun(m2,x,d); f22=fun_t(m2,x,d);
endz=3*(f2-f1)/(m2-m1)-f11-f22;
w=sign(m2-m1)*sqrt(z^2-f11*f22);
m=m1+(m2-m1)*(1-(f22+w+z)/(f22-f11+2*w));
f=fun(m,x,d); ff=fun_t(m,x,d);while abs(ff)>epsilon||abs(ff)==epsilona=rho*a;m1=m; f1=f; f11=ff;if f11>0a=-abs(a);elsea=abs(a);endm2=m1+a; f2=fun(m2,x,d); f22=fun_t(m2,x,d);while f11*f22>0a=2*a;m1=m2;f1=f2;f11=f22;m2=m1+a; f2=fun(m2,x,d); f22=fun_t(m2,x,d);endz=3*(f2-f1)/(m2-m1)-f11-f22;w=sign(m2-m1)*sqrt(z^2-f11*f22);m=m1+(m2-m1)*(1-(f22+w+z)/(f22-f11+2*w));f=fun(m,x,d); ff=fun_t(m,x,d);
end
double(m);

当运行BFGS.m文件时,即可得出无约束问题的解

solver =0.00001.0000

PRP.m文件
clear all
clc
x=sym('x',[2,1]);
syms y;y=2*x(1)^2-2*x(1)*x(2)+x(2)^2+2*x(1)-2*x(2);
m_f=zeros(2,1);     %初始x前
d=(-df(m_f,y))';      %初始搜索方向
k=1;                       %计数器if (fanshu(df(m_f,y))<0.001)solver=m_f;
elsealpha=gold(m_f,d);   %一维搜索求alpham_h=m_f+alpha*d;       %  x后belta=0;              %初始值     while (fanshu(df(m_h,y))>0.001)belta=(df(m_h,y)*(df(m_h,y)-df(m_f,y))')/(df(m_f,y)*df(m_f,y)');d=(-df(m_h,y))'+belta*d;alpha=gold(m_h,d);  %一维搜索求得alpham_f=m_h;m_h=m_f+alpha*d;k=k+1;endsolver=m_h
end

其中df与fanshu在上面已经实现,接下来实现gold.m文件

gold.m
%%0.618法求精确一维搜索
%在这我们将α记为a,将αl,αr记为al,ar
%在这我们将φl,φr记为fl,fr
%μ记为m
% clear all
% clc
function  m=gold(x,d)
t=(sqrt(5)-1)/2;
[b1,b2]=s_field(x,d);
epsilon=0.0001;
al=b1+(1-t)*(b2-b1);
ar=b1+t*(b2-b1);
fl=fun(al,x,d); fr=fun(ar,x,d);while  abs(b2-b1)>epsilonif fl<frb2=ar;ar=al;fr=fl;al=b1+(1-t)*(b2-b1);fl=fun(al,x,d);elseb1=al;al=ar;fl=fr;ar=b1+t*(b2-b1);fr=fun(ar,x,d);end
endif al<arm=al;
elsem=ar;
end

当运行PRP.m文件时,即可得出无约束问题的解

solver =0.00010.9999

最优化原理与方法 BFGS算法及PRP算法相关推荐

  1. 最优化原理与方法之(一)开篇

    文章目录 1 引言 2 定义 3 划分 1 引言 最优化理论与方法是一门应用性很强的年轻学科,本质上它是研究某些数学上定义的问题的最优解,即对于给出的实际问题,从众多的方案中选出最优方案. 虽然最优化 ...

  2. 计算机地图制图原理与算法,计算机地图制图原理与方法-基本图形生成算法.ppt...

    <计算机地图制图原理与方法-基本图形生成算法.ppt>由会员分享,可在线阅读,更多相关<计算机地图制图原理与方法-基本图形生成算法.ppt(35页珍藏版)>请在人人文库网上搜索 ...

  3. java实现k 近邻算法_K近邻算法哪家强?KDTree、Annoy、HNSW原理和使用方法介绍

    1.什么是K近邻算法 K近邻算法(KNN)是一种常用的分类和回归方法,它的基本思想是从训练集中寻找和输入样本最相似的k个样本,如果这k个样本中的大多数属于某一个类别,则输入的样本也属于这个类别. 关于 ...

  4. 最优化 | 无约束优化方法 | C++实现

    文章目录 参考资料 1. 前言 2. 梯度下降法 2.1 原理 2.2 c++实现 2.3 共轭梯度法 3. 牛顿法 3.1 原理 3.2 c++实现 4. 模拟退火算法 4.1 原理 4.2 c++ ...

  5. 线性和非线性最优化理论、方法及应用研究的发展状况.

    关注. 最优化的研究包含理论.方法和应用.最优化理论主要研究问题解的最优性条件.灵敏度分析.解的存在性和一般复杂性等.而最优化方法研究包括构造新算法.证明解的收敛性.算法的比较和复杂性等.最优化的应用 ...

  6. 「AI科技」机器学习算法之K-means算法原理及缺点改进思路

    https://www.toutiao.com/a6641916717624721933/ 2019-01-03 08:00:00 K-means算法是使用得最为广泛的一个算法,本文将介绍K-mean ...

  7. 【分类算法】Logistic算法原理、标准评分卡开发流程、python代码案例

    [博客地址]:https://blog.csdn.net/sunyaowu315 [博客大纲地址]:https://blog.csdn.net/sunyaowu315/article/details/ ...

  8. 蚁群算法,PSO算法以及两种算法可以融合的几种方法

    蚁群算法(ACO)是受自然界中蚂蚁搜索食物行为的启发,是一种群智能优化算法.它基于对自然界真实蚁群的集体觅食行为的研究,模拟真实的蚁群协作过程.算法由若干个蚂蚁共同构造解路径,通过在解路径上遗留并交换 ...

  9. c++程序设计原理与实践_课程思政水资源系统优化原理与方法课程思政元素的探索...

    案例说明+课程基本信息 案例说明: 水资源系统优化原理与方法的思政教育目标是要让学生建立一种科学思维方式,用辩证和历史唯物主义的观点去观察和分析问题,培养其规则意识和约束观念,以社会主义核心价值观来进 ...

最新文章

  1. python有必要学吗-Python这么火,要不要学?听听华为工程师怎么说...
  2. D3 Data Visualization in Ext JS
  3. Extension field添加到CDS view上的技术实现
  4. Linux下memcache的安装和启动(很好)
  5. HTML5响应式品牌服装设计类织梦模板
  6. 外呼机器人起名_智能外呼机器人十大厂商
  7. 浮点数 字符串 java_Java如何将浮点数转换为字符串
  8. java web编程技术实用教程_Java Web编程技术实用教程
  9. 2015WPE封包刷Q币图文教程
  10. 怎样使用BMFont生成fnt字体
  11. win7企业版怎么都激活不了,看这里
  12. 怎样把doc转换成jpg
  13. Android实战简易教程-第五十六枪(模拟美团客户端进度提示框)
  14. 单个索引和组合索引(联合索引)谁效率高
  15. 企业邮箱客户端POP协议收信后,Webmail的邮件被删除,如何调整?
  16. 如何做社群运营才能提高用户的活跃度?
  17. 15.6. footnote 脚注
  18. php7.3 7.4,PHP 7.4 早期性能基准测试:与 7.3 差不多
  19. [BZOJ3238] [AHOI2013] 差异 - 后缀自动机
  20. 对称密码体制与公钥密码体制

热门文章

  1. 小米支付SDK接入注意事项
  2. TCGA_DESeq2分析_TP vs NT
  3. 模板标签(tags)的介绍及如何自定义模板标签
  4. msys2使用conemu终端配置
  5. Pytorch手动实现softmax回归
  6. HTML5 入门 之b u i 标签
  7. 查询应用服务器fc端口wwn号,第一章FC磁盘阵列 实现WWN端口绑定功能.doc
  8. 80端口被system占用的问题
  9. Nexus6 Android原生系统刷机方法
  10. 安徽省2017c语言笔试,2017安徽省公务员考试笔试大纲