simulannealbnd
用模拟退火算法求函数的最小值
语法
描述
例子
最小化具有多个局部极小值的函数
最小化德容第五函数,一个具有许多局部极小值的二维函数。这个函数在运行这个例子时可用。
图德容的第五个功能。
dejong5fcn
最小化德容第五函数的使用simulannealbnd
从点出发(0,0)
。
有趣= @dejong5fcn;X0 = [0 0];x0, x = simulannealbnd(有趣)
优化终止:最佳函数值的变化小于options.FunctionTolerance。
x =1×2-32.0285 - -0.1280
的simulannealbnd
算法使用MATLAB®随机数流,所以你可能会得到不同的结果。
最小化Subject to Bounds
在有界区域内最小化德容第五函数。这个函数在运行这个例子时可用。
图德容的第五个功能。
dejong5fcn
开始simulannealbnd
从这一点开始(0,0)
,并在每个组件上设置下界为-64,上界为64。
有趣= @dejong5fcn;X0 = [0 0];Lb = [-64 -64];Ub = [64 64];x = simulannealbnd(有趣,x0,磅,乌兰巴托)
优化终止:最佳函数值的变化小于options.FunctionTolerance。
x =1×2-15.9790 - -31.9593
的simulannealbnd
算法使用MATLAB®随机数流,所以你可能会得到不同的结果。
尽量减少使用非默认选项
,观察simulannealbnd
通过设置选项来使用一些plot函数。
设置模拟退火选项,使用几个plot函数。
选择= optimoptions (“simulannealbnd”,“PlotFcns”,…{@saplotbestx, @saplotbestf、@saplotx @saplotf});
开始simulannealbnd
从这一点开始(0,0)
,并在每个组件上设置下界为-64,上界为64。最小化dejong5fcn
,在运行此示例时可用。
rng默认的%的再现性有趣= @dejong5fcn;x0 = (0,0);磅=(-64、-64);乌兰巴托=(64、64);x = simulannealbnd(有趣,x0,磅,乌兰巴托,选项)
优化终止:最佳函数值的变化小于options.FunctionTolerance。
x =1×2-15.9790 - -31.9593
获得所有输出
获得模拟退火最小化的所有输出。
绘制德容的第五个函数,在运行本例时可用。
dejong5fcn
开始simulannealbnd
从这一点开始(0,0)
,并在每个组件上设置下界为-64,上界为64。
有趣= @dejong5fcn;x0 = (0,0);磅=(-64、-64);乌兰巴托=(64、64);[x, fval exitflag、输出]= simulannealbnd(有趣,x0,磅,乌兰巴托)
优化终止:最佳函数值的变化小于options.FunctionTolerance。
x =1×2-15.9790 - -31.9593
fval = 1.9920
exitflag = 1
输出=结构体字段:迭代:1762 funccount: 1779消息:“优化终止:最佳函数值的变化小于options.FunctionTolerance。”' rngstate: [1x1 struct] problemtype: 'boundconstraints' temperature: [2x1 double] totaltime: 1.3316
的simulannealbnd
算法使用MATLAB®随机数流,所以你可能会得到不同的结果。
输入参数
有趣的
- - - - - -功能被最小化
函数处理|函数名
要最小化的函数,指定为函数句柄或函数名。有趣的
是接受向量的函数吗x
并返回一个实标量f
,求值的目标函数x
。
有趣的
可以指定为文件的函数句柄:
x = simulannealbnd (x0 @myfun)
在哪里myfun
MATLAB是一种®等功能
函数f = myfun(x) f =…%计算函数在x处的值
有趣的
也可以是匿名函数的函数句柄:
x = simulannealbnd (@ (x)规范(x) ^ 2, x0,磅,乌兰巴托);
例子:有趣= @ (x) sin (x (1)) * cos (x (2))
数据类型:字符
|function_handle
|字符串
x0
- - - - - -初始点
真正的向量
磅
- - - - - -下界
真正的向量|真正的数组
下界,指定为实向量或实数组。如果元素的数量x0
等于的磅
,然后磅
指定
x(我)> =磅(我)
对所有我
。
如果元素个数(磅)<元素个数(x0)
,然后磅
指定
x(我)> =磅(我)
为1 <= I <= numel(lb)
。
在这种情况下,求解器会发出警告。
例子:要指定所有控制变量为正,磅= 0(大小(x0))
数据类型:双
乌兰巴托
- - - - - -上界
真正的向量|真正的数组
上界,指定为实向量或实数组。如果元素的数量x0
等于的乌兰巴托
,然后乌兰巴托
指定
x (i) < =乌兰巴托(我)
对所有我
。
如果元素个数(乌兰巴托)<元素个数(x0)
,然后乌兰巴托
指定
x (i) < =乌兰巴托(我)
为1 <= I <= numel(ub)
。
在这种情况下,求解器会发出警告。
例子:要指定所有控制变量都小于1,乌兰巴托= 1(大小(x0))
数据类型:双
选项
- - - - - -优化选项
返回的对象optimoptions
|结构
的优化选项,指定为返回的对象optimoptions
或结构。有关详细信息,请参见模拟退火方法。
optimoptions
中列出的选项斜体;看到optimoptions隐藏的选项。
{}
默认值。参见选项详细信息模拟退火方法。
选项 | 描述 | 值 |
---|---|---|
|
函数,算法用来确定新点是否被接受。指定为 |
函数处理| |
|
算法用来生成新点的函数。指定为内置退火函数或函数句柄的名称。 |
函数句柄|函数名| |
|
决策变量类型 |
|
|
水平显示 |
|
DisplayInterval |
迭代显示的间隔 |
正整数| |
FunctionTolerance |
函数值上的终止容忍 对于选项结构,使用 |
积极的标量| |
|
自动运行 看到何时使用混合函数。 |
或 1 × 2单元阵列| |
HybridInterval |
时间间隔(如果不是 |
正整数| |
|
温度的初始值 |
正标量|,正向量| |
|
允许的最大目标函数计算数 对于选项结构,使用 |
正整数| |
|
允许的最大迭代次数 对于选项结构,使用 |
正整数| |
|
当前点适应度函数值的平均变化小于的迭代次数 对于选项结构,使用 |
正整数| |
|
算法运行for后停止 对于选项结构,使用 |
积极的标量| |
|
期望的最小目标函数值 |
标量| |
|
函数获得迭代数据,并可以在运行时更改选项 对于选项结构,使用 |
函数句柄|单元格数组的函数句柄| |
|
在迭代期间调用的Plot函数 对于选项结构,使用 |
函数句柄|内置plot函数名称| cell array of Function句柄| cell array of内置plot函数名称| |
PlotInterval |
每隔一段时间调用Plot函数 |
正整数| |
|
再次退火时间间隔 |
正整数| |
|
函数用于更新温度表 |
函数句柄|内置温度函数名| |
例子:选择= optimoptions (@simulannealbnd MaxIterations, 150)
数据类型:结构体
问题
- - - - - -问题的结构
结构
问题结构,指定为具有以下字段的结构:
客观的
——目标函数x0
——起点磅
-的下限x
乌兰巴托
-的上限x
解算器
- - - - - -“simulannealbnd”
选项
-选项创建与optimoptions
或一个期权结构rngstate
-可选字段,重置随机数生成器的状态
请注意
问题
必须具有上面指定的所有字段。
数据类型:结构体
输出参数
fval
-目标函数值在解处
实数
目标函数值在解处,作为实数返回。一般来说,fval
=有趣的(x)
。
exitflag
- - -原因simulannealbnd
停止
整数
原因simulannealbnd
停止,返回为整数。
出口标志 | 意义 |
---|---|
1 |
目标函数值的平均变化 |
5 |
目标函数值小于 |
0 |
达到函数计算或迭代的最大数量。 |
1 |
由输出函数或plot函数终止的优化。 |
2 |
找不到可行点。 |
5 |
超过了时间限制。 |
输出
-关于优化过程的信息
结构
关于优化过程的信息,作为带字段的结构返回:
problemtype
-问题类型:无约束或有约束。迭代
-计算的迭代次数。funccount
-目标函数的评价次数。消息
-算法终止的原因。温度
-解算器终止时的温度。totaltime
-求解器运行的总时间。rngstate
- MATLAB随机数生成器的状态,算法刚开始之前。可以使用中的值rngstate
再现的输出simulannealbnd
。看到复制你的结果。
选择功能
应用程序
的优化的Live Editor任务提供了一个可视化的界面simulannealbnd
。
版本历史
介绍了R2007a
MATLAB命令
你点击了对应这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令即可运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)的最佳网站表现。其他MathWorks国家站点没有针对您所在位置的访问进行优化。