运筹说 第98期|无约束极值问题

news2024/9/27 23:35:12

上一期我们一起学习了关于非线性规划问题的一维搜索方法的相关内容,本期小编将带大家学习非线性规划的无约束极值问题。

下面,让我们从实际问题出发,学习无约束极值问题吧

一、问题描述及求解原理

无约束极值问题的定义

无约束极值问题可表述为

图片

在求解上述问题时常使用迭代法。

2 迭代法

迭代法的基本思想:在一个近似点处选定一个有利搜索方向,沿这个方向进行一维寻查,得出新的近似点。然后对新点施行同样手续,如此反复迭代,直到满足预定的精度要求为止。根据搜索方向的取法不同,可以有各种算法。

迭代法的分类

(1)解析法

要用到函数的一阶导数和(或)二阶导数,由于用到了函数的解析性质,故称为解析法;

(2)直接法

在迭代过程中仅用到函数值,而不要求函数的解析性质,这类方法称为直接法。

一般说来,直接法的收敛速度较慢,只是在变量较少时才适用。但直接法的迭代步骤简单,特别是当目标函数的解析表达式十分复杂,甚至写不出具体表达式时,它们的导数很难求得,或根本不存在,就只有用直接法了。而对于存在一阶/二阶导数且能够求导的问题来说,解析性质的收敛速度更快,下面介绍两种基本的解析法。

3 梯度法(最速下降法)

梯度法是一种古老的方法,但由于它的迭代过程简单,使用方便,而且又是理解其他非线性最优化方法的基础,所以先来说明这一方法。

确定下降方向

假定问题min⁡f(X),X∈En 中的目标函数 f(X)具有一阶连续偏导数,它存在极小点X *。则第k+1次近似可表示为在第k次近似点X(k)上,沿方向P(k)做射线,并前进步长λ,即

图片

将f(X)在X(k)处作泰勒展开,得

图片

假定∇f(X(k))≠0,只要

图片

即可保证

图片

即取X(k+1)=X(k)+λP(k),就能改善目标函数值。此时,只要使∇f(X(k))TP(k)取值最小,就可求出最优的X(k+1)点。

因此,需要寻找P(k),使∇f(X(k))TP(k)最小。

图片

为向量∇f(X(k))T和P(k)的内积,θ为两个向量的夹角。在∥∇f(X(k))T∥和∥P(k)∥一定的情况下,显然cos⁡θ=-1,两向量反向时,上式最小。即负梯度方向是函数值下降最快的方向。

确定步长

方法1:试算是否满足

图片

若满足则用此λ继续迭代,否则减小λ。

方法2:通过在负梯度方向的一维搜索(例如用0.618法),来确定使f(X)最小的λk

图片

这样得到的步长称为最佳步长,有时把采用最佳步长时的梯度法成为称为最速下降法。

求解步骤

(1)给定初始点X(0)和允许误差ε>0,令k:=0。

(2)计算f(Xk)和∇f(X(k)),若∥∇f(X(k))∥2≤ε,停止迭代,得近似极小点Xk和近似极小值f(Xk);否则,转下一步。

(3)做一维搜索

图片

并计算X(k+1)=X(k)-λk ∇f(X(k)),然后令k:=k+1,转回第(2)步。

现设f(X)具有二阶连续偏导数,将f(X(k))-λ∇(X(k))在X(k)作泰勒展开:

图片

对λ求导,并令其等于零,即可得近似最佳步长的如下计算公式:

图片

有时,把搜索方向P(k)的模格式化为1,即取

图片

在这种情况下,f(X)=f(X(k)+λP(k))的泰勒展开为

图片

对λ求导,并令其等于零,得到

图片

代入P(k),即近似最佳步长变为

例题求解

例题:用梯度法求函数 f(X)=x12+5x22 的极小点,取允许误差 ε=0.7

解:取初试点

图片

其黑塞矩阵

图片

图片

图片

图片

故以 X(4)=(0.152,0.0759)T为近似极小点,此时的函数值 f(X(4)) =0.0519。

该问题的精确解是X*=(0,0)T,f(X*) =0。可知,要得到真正的精确解,需无限迭代下去。

由于沿负梯度方向目标函数的最速下降性,很容易使人们误认为负梯度方向是最理想的搜索方向,最速下降法是一种理想的极小化方法。必须指出的是,某点的负梯度方向,通常只是在该点附近才具有这种最速下降的性质。在一般情况下,当用最速下降法寻找极小点时,其搜索路径呈直角锯齿状(请回忆定理3),在开头几步,目标函数值下降较快;但在接近极小点时,收敛速度常就不理想了。特别是当目标函数的等值线为比较扁平的椭圆时,收敛就更慢了。因此,在实用中常将梯度法和其他方法联合应用,在前期使用梯度法,而在接近极小点时,可改用收敛较快的其他方法。

牛顿法

接下来介绍另外一种基本的解析法——牛顿法。牛顿法的基本思想是利用迭代点处的一阶导数(梯度)和二阶导数(Hessen矩阵)对目标函数进行二次函数近似,然后把二次模型的极小点作为新的迭代点,并不断重复这一过程,直至求得满足精度的近似极小值。下面分别介绍正定二次函数和非正定二次函数的求解过程。

(1)正定二次函数的求解

对于正定二次函数

图片

假设函数极小点为X*,则必有

图片

从而有AX*=-B。对任一点X(0)∈En,函数在该点得梯度

图片

消去B,得到

图片

可解出

图片

即对于正定二次函数,从任意近似点出发,沿着

图片

方向搜索,以1为步长,迭代一步就可到达极小点。

(2)非正定二次函数的求解

对于一般n元实函数f(X),假定它有连续二阶偏导数,X(k) 为其极小点的某一近似。在这个点附近取f(X)的二阶泰勒多项式逼近:

图片

其中,∆X=X-X(k) 。

这个近似函数的极小点应满足一阶必要条件,即

图片

设∇2f(X(k))的逆阵存在,可得

图片

由上式解得的该近似函数的极小点,也就仅是f(X)极小点的近似。

因此为求得f(X)的极小点,可以-[∇2 f(X(k))]-1 ∇f(X(k))为搜索方向(牛顿方向),按下述公式进行迭代:

图片

这就是阻尼牛顿法(广义牛顿法),可用于求解非正定二次函数的极小点。

例题求解

例题:用牛顿法求 f(X)=x12+5x22的极小点。

解:任取初始点X(0)=(2,1)T,算出。在本例中,

图片

图片

图片

可知X* 确实为极小点。

优缺点

牛顿法的优点是收敛速度快,缺点是有时进行不下去而需采取改进措施,当维数较高时,工作量很大。

为克服梯度法收敛速度慢及牛顿法有时失效和在维数较高时计算工作量大的缺点,不少学者提出了一些更加实用的其他算法,如共轭梯度法、变尺度法等。

以上就是无约束极值问题的全部内容了,通过本节学习大家是否对该问题有了一个初步的认识呢,是否可以求解无约束极值问题呢?

作者 | 陈优 陈梦 

责编 | 陈梦

审核 | 徐小峰

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

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

相关文章

【C++干货铺】会旋转的二叉树——AVLTree

个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 前言 AVL树 AVL树的概念 AVL树结点的定义 AVL树的插入 寻找插入结点的位置 修改平衡因子 AVL树的旋转 右单旋 左单旋 先右旋再左旋 先左旋再右旋 AVL树…

【JAVA-打包jar】jar不能双击运行,Jar包找不到主类

我的问题比较简单,搞了一下午,查阅了很多教程,无意发现,居然是 jdk过期需要更新! 气的吐血! 所以不要废话,首先检查自己的环境变量和JDK!!! 环境变量&…

ML:2-1-4理解python如何实现forward prop

文章目录 1. 单层上的向前传播forward prop2. 前向传播的一般实现3. 通用人工智能 1. 单层上的向前传播forward prop 【了解在python中如何实现forward prop】 继续使用咖啡烘焙模型: 了解经过每一个神经元的预测过程。设置每一个神经元的w,b值。从而得…

(2024,分数蒸馏抽样,Delta 降噪分数,LoRA)PALP:文本到图像模型的提示对齐个性化

PALP: Prompt Aligned Personalization of Text-to-Image Models 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 4. 提示对齐方法 4.1 概述 4.2 个性化 4.3 提示对齐分数抽…

深度学习记录--Train/dev/test sets

为什么需要训练集、验证集(简单交叉验证集)和测试集? 为了创建高效的神经网络,需要不断进行训练(迭代) 一个神经网络的产生 从最开始的想法idea开始,然后付诸于代码code,根据结果验证反过来对一开始的想法idea进行修正&#xf…

架构简介,到底什么是架构?

1. 前言 对技术人员来说,“架构”是一个再常见不过的词儿了。我们经常对新员工培训整个系统的架构,参加架构设计评审,学习业界开源系统(例如,MySQL、Hadoop)的架构,研究大公司的架构实现&#…

2024年腾讯云服务器多少钱1个月?

2024年腾讯云服务器多少钱1个月?5元一个月,62元一年,更多腾讯云服务器精准报价。腾讯云服务器租用优惠价格表:轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三年、2核4G5M带宽218元一年,…

2024年全网最全春招时间线

2024年全网最全春招时间线 春招,许多同学可能会误以为这是春天才会进行。 你可能会想,期末刚考完试,先享受下寒假,再欢度春节,收些红包,甚至还能抽空去理个发型。等到春日明媚时,再参加春招活…

如何用ArcGIS制作城市用地适应性评价

01概述 “城市用地适宜性评价是城市总体规划的一项重要前期工作,它首先对工程地质、社会经济和生态环境等要素进行单项用地适宜性评价,然后用地图叠加技术根据每个因子所占权重生成综合的用地适宜性评价结果,俗称“千层饼模式”。 做用地适…

STM32F103标准外设库——寄存器 (二)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

C语言中对变量的理解

变量(variable)是程序中不可或缺的组成单位,是最基本的存储单元。 1.什么是变量? Ⅰ.概念: 内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化。 通过变量名,可以访问这块内存区域,获取里…

翻译: Streamlit从入门到精通 部署一个机器学习应用程序 四

Streamlit从入门到精通 系列: 翻译: Streamlit从入门到精通 基础控件 一翻译: Streamlit从入门到精通 显示图表Graphs 地图Map 主题Themes 二翻译: Streamlit从入门到精通 构建一个机器学习应用程序 三 1. 5. 如何部署一个Streamlit应用 部署是将应用程序从开发…

Linux中文件名修改的多种方法

找一个不算漂亮的普通女孩,一起柴米油盐,一起日出日落,一起田间地头,一起春花冬雪!要一个不算大的小房子,生两个健康可爱的宝宝,这样就很好。。。。。。 简介: 在Linux系统中&#x…

nvcc -V显示command not found

出现这个问题,不仅是 nvcc -V会显示command not found,nvidia-smi同样也会显示 解决方法如下: 1)这里首先转换到CUDA所在位置,一般是在这个位置 cd /usr/local 2)打开、编辑环境变量的配置文件 vim ~/.bashrc …

使用NI VeriStand构建分布式系统

使用NI VeriStand构建分布式系统 - NI 概览 本文探讨了如何使用NI VeriStand来构建分布式处理和I/O系统,并提供诸多功能来帮助工程师更高效地开发强大的分布式系统。 飞机、汽车或其他工业项目中的控制系统由于需要执行监测、测试或仿真任务,其所需的计…

【MATLAB】EEMD+FFT+HHT组合算法

代码原理 EEMD(经验模态分解)FFT(快速傅里叶变换)HHT(希尔伯特-黄变换)组合算法是一种常用的信号处理和分析方法。这个组合算法包含了EEMD、FFT和HHT三个步骤,可以用于处理非线性和非平稳信号。…

IO网络2.0

思维导图 机械臂 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <myhead.h> #define SER_PORT 8888 #define SER_IP "192.168.122.68" //服务端//TCP客户端 int main(int argc, const char *argv[]) {//创建套接字…

20240115寻找两数之和

代码 class Solution:def getSumIndex(self, nums: List[int], target: int) -> List[int]:records dict()for index, value in enumerate(nums): if target - value in records: # 遍历当前元素&#xff0c;并在map中寻找是否有匹配的keyreturn [records[target- valu…

8个 Python 开发者必备的 PyCharm 插件

这8个顶级插件保证了更快、更轻松、更愉悦的开发过程。 在 PyCharm 插件列表中&#xff0c;我们发现了几个瑰宝插件&#xff0c;它们各自以独特的方式帮助开发者快速、简便、愉悦地开发。 今天我就给大家逐个介绍它们。 1. Key Promoter X 【下载链接】&#xff1a;https://…

transbigdata笔记:可视化

1 可视化轨迹 transbigdata.visualization_trip(trajdata, col[Lng, Lat, ID, Time], zoomauto, height500) 例子见transbigdata 笔记&#xff1a;官方文档案例1&#xff08;出租车GPS数据处理&#xff09;-CSDN博客 2 可视化od transbigdata.visualization_od(oddata, col…