【最优化方法】实验三 无约束最优化方法的MATLAB实现

实验的目的和要求:通过本次实验使学生进一步熟悉掌握使用MATLAB软件,并能利用该软件进行无约束最优化方法的计算。

实验内容:

1、最速下降法的MATLAB实现

2、牛顿法的MATLAB实现

3、共轭梯度法的MATLAB实现

学习建议:

本次实验就是要通过对一些具体问题的分析进一步熟悉软件的操作并加深对理论知识的理解。

重点和难点:

通过同一个具体问题用不同的方法解决的比较,加深理解恰当选用优化问题解决方法的重要性。

一 最速下降法

1.最速下降法基本原理和步骤

img 思想:寻求最速下降方向即负梯度方向

img

MATLAB实现:

2.代码及数值算例:

(1) 程序源代码:

function [ X,FMIN,K ] = zuisuxiajiang( f,x,x0,e )

%  [ X,FMIN,N ] =zuisuxiajiang()法求解无约束问题

%  X     极小点

%  FMIN   极小值

%  K     迭代次数

%  f     问题函数

%  x     变量

%  x0    初始点

%  e     终止误差

%  张超编写于2014/04/15 

count=0;

td=jacobian(f,x)';

while norm(subs(td,x,x0))>e

  P=-subs(td,x,x0);

  syms r

  y=x0+r*P;

  ft(r)=subs(f,x,y);    

  [r0]=fibonacci(ft,0,100,0.01);

  x0=x0+r0*P;

  count=count+1;

end

X=x0;

FMIN=subs(f,x,x0);

K=count;

 

end

二 牛顿法

1.牛顿法基本原理和步骤

思想:在第k次迭代的迭代点x(k)邻域内,用一个二次函数(如二阶泰勒多项式)去近似代替原目标函数f(x),然后求出该二次函数的极小点作为对原目标函数求优的下一个迭代点,依次类推,通过多次重复迭代,使迭代点逐步逼近原目标函数的极小点。

设*f(x)*二次连续可微,在点 x(k) 处的Hesse矩阵正定。

img

MATLAB实现:

2.代码及数值算例:

(2) 程序源代码:

function [ X,FMIN,K ] = ysNewton( f,x,x0,e )

%  [ X,FMIN,N ] =ysNewton()原始牛顿法求解无约束问题

%  X     极小点

%  FMIN   极小值

%  K     迭代次数

%  f     问题函数

%  x     变量

%  x0    初始点

%  e     终止误差

%  张超编写于2014/04/15

count=0;

td=jacobian(f,x)';

H=jacobian(td',x);

while norm(subs(td,x,x0))>e

  P=-subs(H,x,x0)^(-1)*subs(td,x,x0);

  x0=x0+P;

  count=count+1;

end

X=x0;

FMIN=subs(f,x,x0);

K=count;

end

牛顿法对于二次正定函数只需做一次迭代就得到最优解。特别在极小点附近,收敛性很好速度也很快。

但牛顿法也有缺点,它要求初始点离最优解不远,若初始点选的离最优解太远时,牛顿法并不能保证其收敛,甚至也不是下降方向。

为了克服牛顿法的缺点,人们保留了从牛顿法中选取牛顿方向作为搜索方向,摒弃其步长恒取1的作法,而用一维搜索确定最优步长来构造算法。

img

(3) 程序源代码:

function [ X,FMIN,K ] = xzNewton( f,x,x0,e )

%  [ X,FMIN,N ] =xzNewton()带步长牛顿法求解无约束问题

%  X     极小点

%  FMIN   极小值

%  K     迭代次数

%  f     问题函数

%  x     变量

%  x0    初始点

%  e     终止误差

%  张超编写于2014/04/15

count=0;

td=jacobian(f,x)';

H=jacobian(td',x);

while norm(subs(td,x,x0))>e

  P=-subs(H,x,x0)^(-1)*subs(td,x,x0);

  syms r

  y=x0+r*P;

  ft(r)=subs(f,x,y);    

  [r0]=fibonacci(ft,0,100,0.01);

  x0=x0+r0*P;

  count=count+1;

end

X=x0;

FMIN=subs(f,x,x0);

K=count;

 

end

三 共轭梯度法

1.共轭梯度法基本原理和步骤

思想:将共轭性和最速下降方向相结合,利用已知迭代点处的梯度方向构造一组共轭方向,并沿此方向进行搜索,求出函数的极小点。

img

MATLAB实现:

2.代码及数值算例:

(1) 程序源代码:

function [ X,FMIN,K ] = gongetidu( f,x,x0,e )

%  [ X,FMIN,N ] =gongetidu()共轭梯度法求解无约束问题

%  X     极小点

%  FMIN   极小值

%  K     迭代次数

%  f     问题函数

%  x     变量

%  x0    初始点

%  e     终止误差

%  张超编写于2014/04/15

count=1;

td=jacobian(f,x)';

H=jacobian(td',x);

if norm(subs(td,x,x0))>e

  P=-subs(td,x,x0);

  r0=-subs(td,x,x0)'*P/(P'*H*P);

  x0=x0+r0*P;

else 

  x0;

end

  

while norm(double(subs(td,x,x0)))>e

  b0=subs(td,x,x0)'*subs(td,x,x0)/(P'*P);

  P=-subs(td,x,x0)+b0*P;

  r0=-subs(td,x,x0)'*P/(P'*H*P);

  x0=x0+r0*P;

  count=count+1;

end

X=x0;

FMIN=subs(f,x,x0);

K=count;

 

end

四 一个算例

分别用上述三中方法计算下题,并比较各算法.

Min f(x)=(x1 - 2)^2 + (x1 – 2*x2)^2

初始点x0=(0,3)T

允许误差e=0.1

键入命令并输出结果:

syms x1 x2

\>> f=(x1-2)^2+(x1-2*x2)^2;

\>> x=[x1;x2];

\>> x0=[0;3];

\>> e=0.1;

  [X,FMIN,N]=zuisuxiajiang(f,x,x0,e)

 

X =

  1.9763

  0.9818

FMIN =

  7.2076e-04

N =

  10

 

\>> [X,FMIN,N]=ysNewton(f,x,x0,e)

X =

   2

   1

FMIN =

   0

N =

   1

 

[X,FMIN,N]=gongetidu(f,x,x0,e)

 

X =

 2

 1

FMIN =

0

N =

   2

由上述结果我们发现:

对于二次正定函数newton法只需一次迭代就得到正确结果,共轭梯度法只需进行两次(因为目标函数是二元函数)迭代就得出正确结果。但最速下降法却迭代了10次,虽然一维搜索存在误差,但实际上最速下降法也需迭代多次。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/658600.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL 小课推广-20240529

目前 PostgreSQL 小课在持续更新中, PostgreSQL 小课专栏 新人优惠券到 2024 年 6 月 1 日到期,有需要的伙伴还请关注下: 目前专栏的 50 元/年,后续到期不需要续费,等到专栏完成,会有一个价格调整&#xff…

618入手不亏的好物有哪些?五款品质兼优的好物分享!

随着618购物狂欢节的到来,各位消费者们是否已经摩拳擦掌,准备开启一场购物盛宴?在这里,我们为您精心准备了一份不容错过的购物清单,无论您是科技迷、学生还是家居生活爱好者,都能找到心仪的好物。 1、学生…

在全志H616核桃派开发板上进行音频配置的方法详解

耳机口​ 核桃派板载的3.5mm音频输出口,该接口有一定的输出功率,可以使用耳机或者带功放的扬声器都可以播放声音。 查看音频设备​ 可以使用下面指令来查看音频信息: aplay -l音频播放测试​ 播放系统自带wav音频文件测试, 下面指令的au…

MyBatisPlus的简单入门

文章目录 1.MybatisPlus的简介2.创建SpringBoot工程3.编写测试类 1.MybatisPlus的简介 MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在:简化开发、提高效率。 它对应的官方网址:链接 2.创建Sprin…

yolo 算法 易主

标题:YOLOv10: Real-Time End-to-End Object Detection 论文:https://arxiv.org/pdf/2405.14458ethttps%3A//arxiv.org/pdf/2405.14458.zhihu.com/?targethttps%3A//arxiv.org/pdf/2405.14458 源码:https://github.com/THU-MIG/yolov10 分析…

西储大学数据集学习

数据集下载地址:CWRU凯斯西储大学轴承数据数据集——附:下载链接_西储大学轴承数据集下载-CSDN博客 最近研究故障诊断,先对使用比较多的西储大学数据集研究。以资料【1】中的内容展开研究。 1、轴承的结构 轴承分为外圈、内圈、保持架和滚珠…

卧式混料机:混合设备的智慧之选

卧式混料机,顾名思义,是一种采用卧式结构的混合设备。它的设计精巧,结构紧凑,不仅占用空间小,而且操作简便,维护方便。与传统的立式混料机相比,卧式混料机在混合效率、混合均匀度以及物料适应性…

Java基础:类的详细说明

Java是一门面向对象的编程语言,所谓的面向对象,简单的说,就是在软件开发过程中,用各种各样的对象实现所需功能。 对象就好像是现实世界中不计其数的物体,根据物体的性质可以将其进行分门别类:石头、锤子、…

计算机SCI期刊,IF=8+,专业性强,潜力新刊!

一、期刊名称 Journal of Big data 二、期刊简介概况 期刊类型:SCI 学科领域:计算机科学 影响因子:8.1 中科院分区:2区 出版方式:开放出版 版面费:$1990 三、期刊征稿范围 《大数据杂志》发表了关于…

dp秒杀优惠券

1、全局id生成器 当用户抢购时,就会生成订单并保存到tb_voucher_order这张表中,而订单表如果使用数据库自增ID就存在一些问题: id的规律性太明显受单表数据量的限制 场景分析:如果我们的id具有太明显的规则,用户或者…

在HTML和CSS当中运用显示隐藏

1.显示与隐藏 盒子显示:display:block;盒子隐藏: display:none:隐藏该元素并且该元素所占的空间也不存在了。 visibility:hidden:隐藏该元素但是该元素所占的内存空间还存在,即“隐身效果”。 2.圆角边框 在CSS2中添加圆角,我们不得不使用背景图像&am…

基于51单片机的DS18B20温度报警器

摘 要:单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度器,本温度计属于多功能温度计,可以设置上下报警温度,…

生产者延迟消息和重试机制

messageDelayLevel1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 延迟消息级别public PutMessageResult putMessage(final MessageExtBrokerInner msg) {//事务消息处理if (tranType MessageSysFlag.TRANSACTION_NOT_TYPE|| tranType MessageSysFlag.TRANSACT…

静态测试---基于WorkList的活跃变量分析

本文主要用于记录在活跃变量分析实验中的报错及解决,涉及静态测试的详细原理内容较少,编译运行底层逻辑偏多。 一、实验要求 1)使用llvm基于框架实现一个基于WorkList的活跃变量分析demo。变量在某个程序点有两种状态,live 或 dea…

如何用俄语预定酒店,柯桥外贸俄语培训

-Привет, Алекс! Как твои дела? 你好,阿列克斯!你最近好吗? -Отлично! Я скоро уезжаю на 10 дней в Санкт-Петербург, но никак не могу найти там…

基于高光谱数据集的创新点实现-高斯核函数卷积神经网络

一、高光谱数据集简介 1.1 数据集简介 数据集链接在这:高光谱数据集(.mat.csv)-科研学术 数据集包含下面三个文件: 文件中包含.mat与.csv,145x145x220, 其实主要使用avirissub.csv文件,在代码上只是将mat文件转成了csv文件。具体avirissub.csv如下&am…

第二十四章多栏布局解决方案(什么是自适应?/)

什么是自适应? 指能使网页自适应显示在不同大小终端设备上新网页设计方式及技术.简单的来说自适应就是让同一个页面自动适应不同大小的设备,从而解决为不同设备提供不同版本的页面问题。 1.两列自适应 两列自适应布局是指左侧固定宽度,右…

小程序使用Canvas设置文字竖向排列

在需要使用的js页面引入js文件,传入对应参数即可 /** * 文本竖向排列 */ function drawTextVertical(context, text, x, y) {var arrText text.split();var arrWidth arrText.map(function (letter) {return 26;});var align context.textAlign;var baseline context.…

河北奥润顺达集团研究院PMO经理常江南受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 河北奥润顺达集团研究院PMO经理、研发部运营管理办负责人常江南先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“初建PMO的体系宣贯和人员培养实践总结”。大会将于6月29-30日在北京举办,敬请关注&#xf…

质量工具系列之Dependency-Track

项目开发中依赖了很多第三方开源工具,对于其版本,漏洞等因为时间或者是数量太多而无法关注到,Dependency-Track解决这些问题。 Dependency-Track 是一个开源组件分析平台,是开放网络应用安全项目(OWASP)的一…