无约束一维极值——进退法

2023-12-08 23:50
文章标签 一维 无约束 极值 进退

本文主要是介绍无约束一维极值——进退法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

在求解目标函数的极小值的过程中,若对设计变量的取值范围不加限制,称这种最优化问题为无约束优化问题。尽管对于机械的优化设计问题,多数是有约束的,但无约束最优化方法仍然是最优化设计的基本组成部分。因为约束最优化问题可以通过对约束条件的处理,转化为无约束最优化问题来求解。

无约束一维极值问题求解时一般采用一维搜索法,其中方法包括多种。线性搜索包括黄金分割、斐波那契法、牛顿法等,非线性搜索包括抛物线法和三次插值法。

1.无约束算法基础

无约束最优化算法求解无约束最优化问题的方法,有解析法和直接法两类:

  1. 解析法就是利用无约束最优化问题中目标函数f(x)的解析表达式和它的解析性质(如函数的一阶导数和二阶导数),给出一种求它的最优解的方法,或一种求近似解的迭代方法。解析法主要有最速 下降法、共轭方向法、共轭梯度法、非二次函数的共轭梯度法、牛顿法、拟牛顿法、变尺度法等。
  2. 直接法就是在求最优解的过程中,只用到函数的函数值,而不必利用函数的解析性质。直接法也是一种迭代法,迭代步骤简单。当目标函数的表达式十分复杂,或写不出具体表达式时,它就成为了重要的方法。直接法适应面很广,适用于计算机运算。

2.进退法

进退法是一种缩小极值区间的算法,算出的结果是一个包含极值的区间,适用于未知极值范围的情况下使用。

其理论依据是f(x)为单谷函数(只有一个极值点),且[a,b]为其极小值点的一个搜索区间,对于任意x1,x2∈[a,b],如果f(x1)<f(x2),则[a,x2]为极小值的搜索区间,如果f(x1)> f(x2),则[x1,b]为极小值的搜索区间。

因此,在给定初始点x0及初始搜索步长h的情况下,首先以初始步长向前搜索一
步,计算f(x0+h)。

如果f(x0) > f(x0 +h),则可知搜索区间为[x0,x],其中x待求,为确定x,前进一步计算 f(x0+λh),λ为放大系数,且 λ>1,直到找到合适的λ" ,使得f(x0 +h) < f(x0+λ" h),从而确定搜索区间为[x0,x0+λ"h]。

如果f(x0) < f(x0 +h),则可知搜索区间为[x,x0+h],其中x待求,为确定x,后退一步计算 f(x0-λh),λ为缩小系数,且0<λ<1,直到找到合适的λ”,使得 f(x0-λ" h) > f(x0),从而确定搜索区间为[x0 -λ”h,x0+h]。

进退法的基本算法步骤如下:

  1. 给定初始点x(0) ,初始步长h0,令h=h0,x(1)=x(1) ,k=0;
  2. 令x(4)=x(1)+h,k=k+1;
  3. 若f(x(4)) < f(x(1)),则转到步骤(4),否则转到步骤(5);
  4. 令x(2)=x(1),x(1) =x(4) ,f(x(2))=f(x(1)) , f(x(1))=f(x(4)),令h = 2h ,转到步骤(2);
  5. 若 k=1,则转到步骤(6),否则转到步骤(7);
  6. 令h = -h , x(2) = x(4), f(x(2))= f(x(4)),转到步骤(2);
  7. 令x(3) =x(2),x(2)=x(1), x(1) = x(4)停止计算, 极小值点包含于区间[x(1), x(3)]或[x(3) , x(1)]。

根据以上分析,编写用进退法求解一维函数的极值区间的MATLAB函数fun_ JT
如下:

function [minx, maxx]= fun_JT(f, x0, h0, eps)
% 目标函数:f
% 初始点:x0
% 初始步长:h0
% 精度:eps
% 目标函数取包含极值的区间左端点:minx
% 目标函数取包含极值的区间又端点:maxxformat long;if nargin == 3;eps = 1.0e-6;endx1 = x0;k=0;h= h0;while 1x4 = x1 + h;k = k+ 1;f4 = subs(f, findsym(f),x4);f1 = subs(f, findsym(f),x1);if f4 < f1x2 = x1;x1 = x4;f2 = f1;f1 = f4;h = 2* h;elseif k == 1h = -h;x2 = x4;f2 = f4;elsex3 = x2;x2 = x1;x1 = x4;break;endendendminx = min (x1,x3);maxx = x1 +x3 -minx;format short;
end

例 取初始点为 0,步长为0.05,用进退法求函数f(t)=t4-2t2-t+1的极值区间。

解:

clear all
clc
syms t;
f=t^4-2*t^2-t+ 1;
[x1,x2] = fun_JT(f,0,0.05)

在这里插入图片描述
由上面的结果可知f(t)的极值点在区间[0.35,1.55]内。

这篇关于无约束一维极值——进退法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/471745

相关文章

简单的Q-learning|小明的一维世界(3)

简单的Q-learning|小明的一维世界(1) 简单的Q-learning|小明的一维世界(2) 一维的加速度世界 这个世界,小明只能控制自己的加速度,并且只能对加速度进行如下三种操作:增加1、减少1、或者不变。所以行动空间为: { u 1 = − 1 , u 2 = 0 , u 3 = 1 } \{u_1=-1, u_2=0, u_3=1\} {u1​=−1,u2​=0,u3​=1}

简单的Q-learning|小明的一维世界(2)

上篇介绍了小明的一维世界模型 、Q-learning的状态空间、行动空间、奖励函数、Q-table、Q table更新公式、以及从Q值导出策略的公式等。最后给出最简单的一维位置世界的Q-learning例子,从给出其状态空间、行动空间、以及稠密与稀疏两种奖励函数的设置方式。下面将继续深入,GO! 一维的速度世界 这个世界,小明只能控制自己的速度,并且只能对速度进行如下三种操作:增加1、减

c语言——用一维数组输出杨辉三角形

一.代码 #include <stdio.h>int Num[100];int Hang;int Lie;int a;int Flag;int main() {Lie = 1;Hang = 1;a = 0;while (1) {//列1为1if (Lie == 1) {Num[1] = 1;Lie++;}//数据存到数组里面while (Hang >= Lie && Hang !=

Hessian矩阵判定极值之MATLAB实现符号解

By WC 1.9 .2015 1.Hessian矩阵 其定义如下: 如果函数f在D区域内二阶连续可导,那么黑塞矩阵H(f) 在 D 内为对称矩阵。原因是:如果函数f连续,则二阶偏导数的求

“弹性盒子”一维布局系统(补充)——WEB开发系列31

弹性盒子是一种一维布局方法,用于根据行或列排列元素。元素可以扩展以填补多余的空间,或者缩小以适应较小的空间,为容器中的子元素提供灵活的且一致的布局方式。 一、什么是弹性盒子? CSS 弹性盒子(Flexible Box Layout,简称 Flexbox)是 CSS3 中引入的一种布局模式,提供一种有效的方式来布局、对齐和分配容器内空间,特别是在动态和复杂的应用界面中。 1、

C#基础(3)一维数组

前言 我们先前已经进行了枚举的学习,但其实枚举相对来说,设计到的计算逻辑比较少,大多数时候都是和switch一起进行分支判断,而且屏幕前的你应该也发现了,这玩意儿其实更多就是一个编码规范的学习。 但今天我们要开始学习的数组:一维数组,多维数组,交错数组,这些在你日后的算法学习中也会经常出现。 所以希望大家跟紧我的脚步,把这个知识点理解透彻。 数组有很多作用,以下是其中一些常见的作用:

代码随想录算法训练营第35天|背包问题基础、46. 携带研究材料(01背包二维解法)(01背包一维解法)(acm)、416. 分割等和子集

目录 0、背包问题基础01背包 46. 携带研究材料(01背包)1、题目描述2、思路3、code(二维解法)3-1、code(一维解法)4、复杂度分析 416. 分割等和子集1、题目描述2、思路3、code4、复杂度分析 0、背包问题基础 01背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能

java中一维数组、二维数组、查找某元素、数组查表法、逆序

一维数组 //定义:数据类型[] 数组名;int[] arr;//静态初始化int[] arr= {11,22,33};//动态初始化int[] arr= new int[3];//默认初始值会为0System.out.println(arr);//一个地址值System.out.println(arr[0]);//0 System.out.println(arr[1]);//0

【文献精读】基于驱动力表的无人车终端无约束预测纵向控制(TVT)

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作,荣幸在CSDN首发🐒 若您觉得内容有价值,还请评论告知一声,以便更多人受益。 转载请注明出处,尊重原创,从我做起。 👍 点赞、评论、收藏,三连走一波,让我们一起养成好习惯😜 在这里,您将

并查集题目(路径压缩、扩展域并查集、带权并查集、二维转一维并查集、逆向思维并查集)

目录 P2814 家谱 P1955 [NOI2015] 程序自动分析 P2256 一中校运会之百米跑    (并查集结合map) P3144 [USACO16OPEN]Closing the Farm S P6121 [USACO16OPEN]Closing the Farm G P1197 [JSOI2008] 星球大战 P5092 [USACO04OPEN]Cube Stacki