搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
Gausst松鼠会
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Android 打包aar包含第三方aar 解决方案_android aar中打包第三方aar
2
有梦想的小鸟
3
HTML常见元素_html元素
4
知识图谱简介(四)——建立本体库_本体知识库构建
5
AI毕业设计生成器(可生成java或python系统源码),使用Tensorflow训练的AI代码大模型_毕业源码生成器
6
Kafka批量消费_java kafka批量消费
7
Conv-TasNet: Surpassing Ideal Time–Frequency Magnitude Masking for Speech Separation_conv-tasnet: surpassing ideal time-frequencymagnit
8
视觉和GPT再碰火花!CVPR`24 | RegionGPT:面向复杂区域理解的VLM(港大&英伟达)_视觉区域级理解
9
MathType7.4mac最新版本数学公式编辑器安装教程_mathtype mac
10
ble蓝牙技术
当前位置:
article
> 正文
matlab使用教程(22)—非线性优化函数的设置_matlab优化教程
作者:Gausst松鼠会 | 2024-04-02 02:21:58
赞
踩
matlab优化教程
1.设置优化选项
可以使用由
optimset
函数创建的
options
结构体来指定优化参数。然后,可以将
options
作为输入传递给优化函数,例如,通过使用以下语法调用
fminbnd
x = fminbnd(fun,x1,x2,options)
或使用以下语法调用
fminsearch
x = fminsearch(fun,x0,options)
例如,要显示算法在每次迭代中的输出,请将
Display
选项设置为
'iter'
:
options = optimset(
'Display'
,
'iter'
);
1.1 容差和终止条件
优化中的迭代次数取决于求解器的终止条件。这些条件包括几个可以设置的容差。一般来说,容差是一个阈值,超过阈值时将终止求解器的迭代。
提示:
一般情况下,将
TolFun
和
TolX
容差设置为远高于
eps
并通常高于
1e-14
。设置小容差并不能保证得到精确的结果。相反,求解器在收敛时无法识别,并可能继续进行无用的迭代。容差值小于
eps
实际上是禁用了这种终止条件。此技巧不适用于
fzero
,它为
TolX
使用默认值
eps
。
•
TolX
是步长的下界,表示 (x
i
– x
i+1
) 的范数。如果求解器尝试小于
TolX
的步长,则终止迭代。求解器通常将
TolX
用作相对边界,表示在达到 |(x
i
– x
i+1
)| <
TolX
*(1 + |x
i |) 或类似的相对测度时终止迭代。
•
TolFun
是步长中目标函数值变化的下边界。如果 |f(x
i
) – f(x
i+1
)| <
TolFun
,则终止迭代。求解器通常将
TolFun
用作相对边界,表示在达到 |f(x
i
) – f(x
i+1
)| <
TolFun
(1 + |f(x
i )|) 或类似的相对测度时终止迭代。
•
MaxIter
是求解器迭代数量的边界。
MaxFunEvals
是函数求值数量的边界。
注意:
与其他求解器不同,
fminsearch
在同时满足
TolFun
和
TolX
时停止运行。
1.2 输出结构体
output
结构体包括函数计算次数、迭代次数和算法。当为
fminbnd
、
fminsearch
或
fzero
提供第四个输出参数时,将显示此结构体,如下所示
[x,fval,exitflag,output] = fminbnd(@humps,0.3,1);
函数参考页面上提供了每个求解器的
output
结构体的详细信息。
output
结构体选项不能选择用于
optimset
。它是
fminbnd
、
fminsearch
和
fzero
的可选输出。
2.优化求解器迭代输出
通过使用
optimset
将
Display
选项设置为
'iter'
,可以获取求解器采取的步骤的详细信息。显示的输出包含以下列表中的标题和项。
3. 优化求解器输出函数
输出函数是优化函数在算法的每次迭代过程中调用的函数。通常,使用输出函数生成图输出,记录算法生成的数据的历史信息,或者根据当前迭代的数据暂停算法。可以按函数文件、局部函数或嵌套函数的形式创建输出函数。
OutputFcn
选项可以与下列 MATLAB 优化函数配合使用:
•
fminbnd
•
fminsearch
•
fzero
3.1 创建和使用输出函数
下面给出了输出函数的一个简单示例,该输出函数绘制优化函数生成的点。
function
stop
=
outfun(x, optimValues, state)
stop
=
false
;
hold
on
;
plot(
x(1)
,
x(2)
,
'.'
);
drawnow
在解算以下优化问题时,可以使用此输出函数绘制
fminsearch
生成的点
为此,
1
创建一个包含前述代码的文件,并将其作为
outfun.m
保存在 MATLAB 路径的文件夹中。
2
将
options
结构体的
Outputfcn
字段的值设置为
outfun
的函数句柄。
options = optimset(
'OutputFcn'
, @outfun);
3
输入以下命令:
hold
on
objfun=@(x) exp(x(1))*(4*x(1)^2+2*x(2)^2+x(1)*x(2)+2*x(2));
[x fval] = fminsearch(objfun, [-1 1], options)
hold
off
这些命令返回解
x =
0.1290 -0.5323
fval =
-0.5689
并显示以下关于
fminsearch
生成的点的绘图:
3.2 输出函数的结构体
输出函数的函数定义行采用以下格式:
stop = outfun(x, optimValues, state)
其中
•
stop
是一个标志,根据优化例程是停止还是继续,该标志为
true
或
false
。。
•
x
是算法在当前迭代中计算的点。
•
optimValues
是包含当前迭代中的数据的结构体。
•
state
是算法的当前状态。。
优化函数在每次迭代中将输入参数的值传递给
outfun
。
3.3 嵌套输出函数的示例
示例不需要输出函数在每次迭代后保留数据。如果不需要保存各次迭代之间的数据,可以将输出函数编写为函数文件,并从命令行直接调用优化函数。但是,要使输出函数在每次迭代后记录数据,请编写一个用于实现以下目的的文件:
• 以嵌套函数的形式包括输出函数 - 有关详细信息,请参阅 MATLAB 编程基础中的“嵌套函数”。
• 调用优化函数。
在以下示例中,函数文件还包含目标函数作为局部函数。您也可以将目标函数编写为单独的文件或匿名函数。
嵌套函数可以访问其所在的文件中的变量。因此,此方法使输出函数能够在每次迭代后保留变量。
以下示例使用输出函数记录以下求解中的
fminsearch
迭代:
输出函数以矩阵(称为
history
)的形式返回点序列。要运行此示例,请执行下列步骤:
1
使用 MATLAB 编辑器打开一个新文件。
2
将以下代码复制并粘贴到此文件。
function
[x fval history] = myproblem(x0)
history = [];
options = optimset(
'OutputFcn'
, @myoutput);
[x fval] = fminsearch(@objfun, x0,options);
function
stop = myoutput(x,optimvalues,state);
stop = false;
if
isequal(state,
'iter'
)
history = [history; x];
end
end
function
z = objfun(x)
z = exp(x(1))*(4*x(1)^2+2*x(2)^2+x(1)*x(2)+2*x(2));
end
end
3
将文件作为
myproblem.m
保存到 MATLAB 路径上的某个文件夹中。
4
在 MATLAB 提示符下,输入
[x fval history] = myproblem([-1 1]);
函数
fminsearch
返回最佳点
x
及 x 处的目标函数值
fval
。
x,fval
x =
0.1290 -0.5323
fval =
-0.5689
此外,输出函数
myoutput
向 MATLAB 工作区返回矩阵
history
,该矩阵包含算法在每次迭代中生成的点。
history
的前四行为
history(1:4,:)
ans =
-1.0000 1.0000
-1.0000 1.0000
-1.0750 0.9000
-1.0125 0.8500
history
最后一行的点与最佳点
x
相同。
history(end,:)
ans =
0.1290 -0.5323
objfun(history(end,:))
ans =
-0.5689
3.4 optimValues 中的字段
下表列出了由优化函数
fminbnd
、
fminsearch
和
fzero
提供的
optimValues
结构体的字段。表的“命令行显示标题”列中列出了将
options
的
Display
参数设置为
'iter'
时显示的标题。
3.5 算法的状态
下表列出了
state
的可能值:
下面的代码演示输出函数如何使用
state
的值来确定要在当前迭代中执行的任务。
switch
state
case
'init'
% Setup for plots or dialog boxes
case
'iter'
% Make updates to plots or dialog boxes as needed
case
'interrupt'
% Check conditions to see whether optimization
% should quit
case
'done'
% Cleanup of plots, dialog boxes, or final plot
end
3.6 Stop 标签
输出参数
stop
是
true
或
false
的标签。此标志通知优化函数优化是停止 (
true
) 还是继续 (
false
)。下面的示例演示了使用
stop
标签的典型方法。
1)根据 optimValues 中的数据停止优化
输出函数可以根据
optimValues
中的当前数据在任何迭代中停止优化。例如,下面的代码在目标函数值小于
5
时将
stop
设置为
true
:
function
stop = myoutput(x, optimValues, state)
stop = false;
% Check if objective function is less than 5.
if
optimValues.fval < 5
stop = true;
end
2)基于对话框输入停止优化
在设计 UI 来执行优化时,可以采用控件(例如
停止
按钮)使输出函数停止优化。以下代码显示如何执行此回调。代码假定
停止
按钮回调将值
true
存储在名为
hObject
的
handles
结构体的
optimstop
字段中,而该结构体又存储在
appdata
中。
function
stop = myoutput(x, optimValues, state)
stop = false;
% Check if user has requested to stop the optimization.
stop = getappdata(hObject,
'optimstop'
);
4.优化求解器绘制函数
options
结构体的
PlotFcns
字段指定优化函数在每次迭代时调用的一个或多个函数,用于绘制各种进度测度。传递函数句柄或函数句柄的元胞数组。绘图函数的结构体与输出函数的结构体相同。
PlotFcns
选项可以与下列 MATLAB 优化函数配合使用:
•
fminbnd
•
fminsearch
•
fzero
这些优化函数的预定义绘图函数包括:
•
@optimplotx
绘制当前点
•
@optimplotfval
绘制函数值
•
@optimplotfunccount
绘制函数计数(不适用于
fzero
)
要查看或修改预定义的绘图函数,请使用 MATLAB 编辑器打开函数文件。例如,要查看函数文件以便绘制当前点,请输入:
edit optimplotx.m
例如,想要查看使用
fminsearch
与绘图函数
@optimplotfval
求最小值的进度:
1
为目标函数编写一个文件。在本示例中,使用:
function
f = onehump(x)
r = x(1)^2 + x(2)^2;
s = exp(-r);
f = x(1)*s+r/20;
2
设置 options 以便使用绘图函数:
options = optimset(
'PlotFcns'
,@optimplotfval);
3
从 [2,1] 起调用
fminsearch
:
[x ffinal] = fminsearch(@onehump,[2,1],options)
4
MATLAB 返回以下内容:
x =
-0.6691 0.0000
ffinal =
-0.4052
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/350647
推荐阅读
article
matlab
VMD
分解
详解_simulink怎么实现
vmd
分解
...
VMD
(变分模态
分解
)是一种全新的信号
分解
方法,可以将信号
分解
成多个模态分量,每个模态分量代表着信号中不同的振动模式。总...
赞
踩
article
matlab
多
变量
优化
,
matlab
-
Matlab
使用
fminsearch
优化
多
变量
- 堆栈内...
我正在
使用
Matlab
fminsearch
来最小化带有两个
变量
的方程sum((interval-5).^2, 2)*f...
赞
踩
article
MATLAB
矩阵
数据
可视化
imagesc
以及 如何多图共用一个
colorbar
_
matlab
...
当遇到需要查看一个二维
矩阵
数据中值的大小分布情况时可以使用
MATLAB
把
矩阵
以图像的形式展现出来,这样更直观。MAT...
赞
踩
article
工业机器人(10)-
Matlab
Robot
Toolbox机械臂
工作
空间
_
matlab
蒙特卡罗
法...
目录01 数值法双臂机器人
工作
空间
求取02 蒙特卡洛方法
Matlab
Robot
Toolbox使用教程请参考本系...
赞
踩
article
微网
双层
优化
综合能源
matlab
按照文献
方法
对冷热电
微网
系统
进行
双层
优化
,
以储能
和
微网
运行
成本...
在短
时间尺度
的
优化
问题中
,
本文考虑了
微网
系统
在不同时间段内的
运行
特点
,
使得
微网
系统
运行
时电力、热能
和
储能
系统
之间的协调是...
赞
踩
article
鲁棒
优化
入门(5)—
Matlab
+
Yalmip
求解
鲁棒
优化
编程实战_
matlab
中
yalmap
...
去年发布了使用
Yalmip
工具箱求解
鲁棒
优化
问题的博客之后,陆陆续续有朋友问我相关的问题,有人形容从学习这篇博客到求解论...
赞
踩
article
【研发日记】
Matlab
/
Simulink
技能
解锁
(
一
)——在
Simulink
编辑窗口
Debug
_s...
本人在研发项目中使用
Matlab
/
Simulink
时,
解锁
了
一
些
Simulink
Debug
的新技能。用
一
篇文章把它总结...
赞
踩
article
CasADi
-
最优控制
开源
Python
/
MATLAB
库_
casadi
matlab
...
CasADi
是一款开源软件工具,用于数值优化,特别是
最优控制
(即涉及微分方程的优化)。该项目由 Joel Anders...
赞
踩
article
2022
年
数模
国赛
C
题
(岭
回归
、区间预测、
矩阵
热力图、
Fisher
判别分类
模型
)——总结心得(附最后...
2022
年
数模
国赛
“高教杯”C
题
_
2022
国赛
c
题
第一
问
2022
国赛
c
题
第一
问 ...
赞
踩
article
Ubuntu
22.04/20.04安装
MATLAB
2022b
/
2021b
_
ubuntu
matl...
Introduction
MATLAB
是一款美国MathWorks公司出品的商业数学软件。
MATLAB
是矩阵实验室(Mat...
赞
踩
article
多维时序 |
MATLAB
实现
PSO
-
LSTM
-
Attention
粒子群优化
长短期
记忆
神经网络
融合注...
多维时序 |
MATLAB
实现
PSO
-
LSTM
-
Attention
粒子群优化
长短期
记忆
神经网络
融合
注意力
机制的多变量时间...
赞
踩
article
Matlab
中
Hyperspectral
Viewei
使用
步骤_
hypercube
matlab
扩...
展示如何
使用
hyperspectral Viewer应用程序来探索高光谱数据。
使用
该应用程序的功能,您可以以灰度图像的形...
赞
踩
article
mat
lab将
mat
格式高
光谱
图像
转为
tif
格式_高
光谱
数据
mat
转
tif
f
mat
lab...
高
光谱
图像
mat
格式转为
tif
格式以高
光谱
IndiaP数据为例,保存为200个波段的
tif
文件。ENVI软件只能读入ti...
赞
踩
article
matlab
bfs
函数
,
Matlab
脚本和
函数
...
脚本和
函数
脚本:特点:按照文件中所输入的指令执行,一段
matlab
指令集合。运行后,运算过程产生的所有变量保存在基本工作...
赞
踩
article
matlab
很有用
的
总结_
lattice
matlab
fir
...
滤波器设计与分析: 滤波器分析 abs幅度angle相位filternorm计算以2或inf为范数
的
数字滤波器freq...
赞
踩
article
【大作业】基于
MATLAB
的
PRM
算法
的
路径
规划
设计(随机地图+GUI+源码+报告)_
路径
规划
lat...
学会运用
MATLAB
解决实际优化问题,例如粒子群优化
算法
,模拟退火
算法
等。要求每个同学任意选择学习一种智能优化
算法
,并...
赞
踩
article
m>
m
atlab
m>
m>lattice
m>,
m>Lattice
m>.
m
·
octopus
/
robotics
-toolbo...
%
m>Lattice
m>
m>Lattice
m> planner navigation class%% A concrete subcl...
赞
踩
article
未定义
变量 “
Lattice
“ 或类 “
Lattice
.
lattice
Easy“(
Matlab
)
_
l...
lattice
函数
matlab
...
赞
踩
article
【自
适应
优化
】如何利用
麻雀
优化
算法
(
SSA
)实现卷积
神经网络
(
CNN
)应对不同分类
训练任务
的参数/结...
主要内容即介绍如何建立一种由
麻雀
优化
算法
(sparrow search algorithm,
SSA
)对简单的四层卷积神经...
赞
踩
article
【演化计算】
麻雀
优化
算法
相关原理及代码(
Matlab
+
Python
)...
麻雀
优化
算法
(sparrow search algorithm,SSA)是受
麻雀
觅食行为和反捕食行为启发而提出的一种新型...
赞
踩
相关标签
matlab
开发语言
算法
matlab多变量优化
信息可视化
矩阵
机械臂
工作空间
运动学正解
MDH
能源
yalmip
kkt条件
对偶变换
鲁棒优化
Matlab/Simulink
Debug
Breakpoint
Data Inspector
MIL
嵌入式软件
python
机器人
ROS
自动驾驶