【最优化方法】实验二 一维搜索方法的MATLAB实现

实验二  一维搜索方法的MATLAB实现

实验的目的和要求:通过本次实验应使学生掌握如何使用MATLAB软件进行一维搜索,并学会对具体问题进行分析。

实验内容:

1、0.618法的MATLAB实现

2、Fibonacci法的MATLAB实现

学习建议:

本次实验是学生初次使用MATLAB进行优化问题的实验,本次实验就是要通过对一些具体问题的分析学会软件的操作并加深对理论知识的理解。

重点和难点:

具体问题的步长因子的确定,理解、掌握精度与效率的关系。

实验内容:

0.618法和Fibonacci法都是分割方法,其基本思想是通过取试探点和进行函数值的比较,使包含极小点的搜索区间不断缩短,当区间长度缩短到一定程度时,区间上每个点的函数值均接近极小值,从而各点可以看作为极小点的近似。这类方法仅需计算函数值,不涉及导数,又称直接法。他们用途很广,尤其适用于非光滑及导数表达式复杂或写不出的情形。

​ 注意,这些方法要求所考虑区间上的目标函数是单峰函数,如果这个条件不满足,我们可以把所考虑的区间分成若干个小区间,在每个区间上的函数式单峰的。这样,我们在每个小区间上求极小点,然后选取其中的最小点。

一 0.618法

1.0.618法方法原理:

0.618 法的基本思想是通过取试探点使包含极小点的区间(不确定区间)不断缩短, 当区间长度小到一定程度时, 区间上各点的函数值均接近极小值, 因此任意一点都可作为极小点的近似.

0.618 法计算试探点的公式:

img

2.0.618法的算法步骤:

①置初始区间img及精度要求img, 计算试探点imgimg, 计算函数值imgimg. 计算公式是

img

img.

②若img, 则停止计算. 否则, 当img时, 转步骤③; 当img时, 转步骤④.

③置img, img, ,img, 计算函数值img, 转步骤⑤.

④置img, img, img,img, 计算函数值img, 转步骤⑤.

⑤置img, 返回步骤②.

MATLAB实现:

3.代码及数值算例:

(1) 程序源代码:

function [ X,FMIN,K ] = find0618( f,a1,b1,e )%  [ X,FMIN,K ] = find0618( f,a1,b1,e ) 0.618法一维搜索%  f 目标函数%  a1,b1初始区间%  e  精度要求%  X  极小点%  FMIN极小值%  K  迭代次数%  2014  张超a=a1;b=b1;k=1;r=a+0.328*(b-a);u=a+0.618*(b-a);while 1if f(r)>f(u)if (b-r)<=eu;break;else a=r;b=b;r=u;u=a+0.618*(b-a);endelseif (u-a)<=er;break;else a=a;b=u;u=r;r=a+0.382*(b-a);endk=k+1;endX=(r+u)/2;FMIN=double(f(X));K=k;end

(2) 数值算例:

Min f(x)=2xx – x – 1;

初始区间, 精度e<=0.16.

键入命令并输出结果:

syms xf(x)=2*x^2-x-1;a1=-1;b1=1;e=0.16;[X,FMIN,K]=find0618(f,a1,b1,e)X =0.2258FMIN =-1.1238K =6

二 Fibonacci法

1.Fibonacci法基本原理和步骤

思想:搜索区间长度缩短率采用Fibonacci数

1 1 2 3 5 8 13 21 34 55 89 ……

img

img

MATLAB实现:

2.代码及数值算例:

(1) 程序源代码:

function [ X,Fmin,K] = fibonacci( f,a0,b0,e )% fibonacci() Fibonacci法求极小值 %   X     极值点%   Fmin   极小值%   K     需要用到第K个Fibonacci数%   a0,b0   初始搜索区间%   e     精度%   张超编写于2014/04/01a=a0;b=b0;F=[1 1];i=1;while F(i)<=(b-a)/e  F(i+2)=F(i)+F(i+1);i=i+1;endm=i;r=a+F(m-2)/F(m)*(b-a);u=a+F(m-1)/F(m)*(b-a);for k=1:m-3if f(r)<f(u)​      a=a;b=u;u=r;r=a+F(m-k-2)/F(m-k)*(b-a);else ​      a=r;b=b;r=u;u=a+F(m-k-1)/F(m-k)*(b-a);endendX=(r+u)/2;Fmin=double(f(X));K=m;end

(2) 数值算例:

Min f(x)= x*x – x + 2;

初始区间img, 精度e<=0.08.

容易验证,在此区间上的函数为严格凸函数。为了进行

比较我们给出其精确解:t*=0.5,f(t*)=1.75。

键入命令并输出结果:

syms xf(x)=x^2-x+2;a1=-1;b1=3;e=0.08;[X,FMIN,K]=fibonacci(f,a1,b1,e)X =0.5273FMIN =1.7507K =10

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习(五) -- 监督学习(4) -- 集成学习方法-随机森林

系列文章目录及链接 上篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;3&#xff09; -- 决策树 下篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;5&#xff09; -- 线性回归1 前言 tips&#xff1a;标题前有“***”…

150.二叉树:二叉树的后序遍历(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr, right(nullptr) {}* Tree…

vite开发服务器server选项配置(2024-05-29)

server.host​ 类型&#xff1a; string | boolean默认&#xff1a; localhost 指定服务器应该监听哪个 IP 地址。 如果将此设置为 0.0.0.0 或者 true 将监听所有地址&#xff0c;包括局域网和公网地址。 也可以通过 CLI 使用 --host 0.0.0.0 或 --host 来设置。 NOTE 在某些…

Autoware 技术代码解读(三)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&#xff0c;并附带200G…

​一款开源的.NET程序集反编译、编辑和调试神器

前言 说到.NET相关的反编译工具大家脑海里第一个想到的工具是什么&#xff1f;ILSpy、dnSpy、还是dotPeek&#xff1f;咱们今天的主要内容是讲讲dnSpyEx&#xff08;dnSpyEx是dnSpy项目的非官方Fork维护版本&#xff09;这个开源的.NET程序集反编译、编辑和调试工具该如何使用…

TypeScript 学习笔记(十七):TypeScript 与现代前端构建工具的结合使用

TypeScript 学习笔记(十七):TypeScript 与现代前端构建工具的结合使用 1. 引言 在前几篇学习笔记中,我们探讨了 TypeScript 的基础知识、前后端框架的结合应用、测试与调试技巧、性能优化、前端架构设计、工具和生态系统,以及 TypeScript 与数据库的深度结合和第三方库的…

Redis教程(十八):Redis的Redisson的看门狗机制

传送门:Redis教程汇总篇,让你从入门到精通 Redisson的看门狗机制 Redisson的看门狗机制主要是指客户端在获取到锁之后,通过后台线程或定时任务自动续期的功能,以避免在锁持有期间因为处理时间过长而导致锁自动释放,进而确保操作的安全性与原子性。 这个机制的工作原理是…

对于异地项目,集团总部如何进行有效管理?

近几年&#xff0c;随着全球经济的发展和企业的崛起&#xff0c;越来越多的企业开始将业务扩展到不同的地理位置。这使得异地项目的管理成为了一个重要的挑战。异地项目指的是分布在不同地区或国家的项目&#xff0c;由总部或主要管理团队远程协调和管理。在这种情况下&#xf…

Burnout Drift Multiplayer(多人赛车游戏模板)

Burnout Drift Multiplayer是一个完整的项目,已在PC、Android、iOS和WebGL上发布的Burnout Drift系列中使用。 [包括最新版本的Realistic Car Controller Pro] PC、WebGL和Android演示 包括Burnout Drift系列的所有功能。您只需几分钟即可轻松添加自己的车辆、场景和配乐。 警…

Windows 下载安装Apache

一、官网下载 1、打开Apache官网http://httpd.apache.org&#xff0c;点击Download。 2、选择Windows版本&#xff0c;点击链接。 3、选择对应版本选择下载。 二、安装、设置 1、将下载好的解压。 2、依次打开Apache24-conf-httpd.conf,用记事本打开 1)、修改路径 2)、修改…

mysql去除重复数据

需求描述 doc表有很多重复的title,想去除掉重复的记录 表结构 CREATE TABLE doc (id INT PRIMARY KEY,title VARCHAR(255),content TEXT );去重SQL -- 创建临时表 CREATE TEMPORARY TABLE temp_doc AS SELECT * FROM doc WHERE 10;-- 插入唯一的记录&#xff08;每个title最…

[数据集][目标检测]红外兔子检测数据集VOC+YOLO格式96张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;96 标注数量(xml文件个数)&#xff1a;96 标注数量(txt文件个数)&#xff1a;96 标注类别数…

Redis 源码学习记录:散列 (dict)

散列 Redis 源码版本&#xff1a;Redis-6.0.9&#xff0c;本篇文章的代码均在 dict.h / dict.c 文件中。 散列类型可以存储一组无需的键值对&#xff0c;他特别适用于存储一个对象数据。 字典 Redis 通常使用字典结构体存储用户散列数据。字典是 Redis 的重要数据结构。除了散…

机械行业工程设计资质乙级需要哪些人员

申请机械行业工程设计资质乙级需要的人员主要包括以下几个方面&#xff0c;具体要求和数量根据参考文章归纳如下&#xff1a; 一、主要专业技术人员 数量要求&#xff1a;主要专业技术人员数量应不少于所申请行业资质标准中主要专业技术人员配备表规定的人数。学历和职称要求…

在虚拟机上安装MySQL和Hive

在虚拟机上安装MySQL和Hive的步骤如下。这里将分别针对MySQL和Hive的安装进行说明。 MySQL安装步骤 1. 准备工作 下载MySQL安装包&#xff0c;选择与你虚拟机操作系统版本相匹配的MySQL版本&#xff0c;例如MySQL 8.0.35。 2. 卸载旧版本&#xff08;如果已安装&#xff09…

java大学城水电管理系统源码(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的大学城水电管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 大学城水电管理系统的…

PHP对接百度语音识别技术

PHP对接百度语音识别技术 引言 在目前的各种应用场景中&#xff0c;语音识别技术已经越来越常用&#xff0c;并且其应用场景正在不断扩大。 百度提供的语音识别服务允许用户通过简单的接口调用&#xff0c;将语音内容转换为文本。 本文将通过PHP语言集成百度的语音识别服务…

批量视频剪辑神器:高效提取随机秒数画面,轻松实现视频素材精准筛选!

在数字化时代&#xff0c;视频内容已成为我们生活中不可或缺的一部分。无论是个人创作者还是专业团队&#xff0c;都需要对视频素材进行高效处理。然而&#xff0c;面对大量的视频文件&#xff0c;如何快速提取出我们所需的画面片段&#xff0c;却成为了一个令人头疼的问题。今…

【源码】【海外客服】简洁版海外客服系统/在线客服系统/即时聊天通讯源码

1&#xff0c;此版本采用前台一人或多人与后台一人&#xff08;管理员&#xff09;进行会话模式 2&#xff0c;此版本前后台只能发送文字和图片&#xff08;图片是选择后自动发送&#xff09; 3&#xff0c;前后台根据IP来识别不同的会话者 4&#xff0c;前台发起会话后&…

大数据——Spark

1.Spark MLlib概述 MLlib是Spark的机器学习&#xff08;Machine Learning&#xff09;库&#xff0c;旨在简化机器学习的工程实践工作&#xff0c;并方便扩展到更大规模。 MLlib由一些通用的学习算法和工具组成&#xff0c;包括分类、回归、聚类、协同过滤、降维等&#xff0…