simulannealbnd
利用模拟退火算法求函数的最小值
语法
描述
例子
最小化具有多个局部极小值的函数
最小化德容第五函数,一个具有许多局部极小值的二维函数。运行此示例时,此函数可用。
Plot De Jong的第五个功能。
dejong5fcn
最小化德容第五函数的使用simulannealbnd
从这一点开始(0,0)
.
Fun = @dejong5fcn;X0 = [0 0];X = simulannealbnd(fun,x0)
优化终止:最佳函数值的更改小于options.FunctionTolerance。
x =1×2-32.0285 - -0.1280
的simulannealbnd
算法使用MATLAB®随机数流,所以你可能会得到不同的结果。
最小化受约束
在有界区域内最小化德容第五函数。运行此示例时,此函数可用。
Plot De Jong的第五个功能。
dejong5fcn
开始simulannealbnd
从这一点开始(0,0)
,并设置每个组件的下界为-64,上界为64。
Fun = @dejong5fcn;X0 = [0 0];Lb = [-64 -64];Ub = [64 64];X = simulannealbnd(fun,x0,lb,ub)
优化终止:最佳函数值的更改小于options.FunctionTolerance。
x =1×2-15.9790 - -31.9593
的simulannealbnd
算法使用MATLAB®随机数流,所以你可能会得到不同的结果。
尽量减少使用非默认选项
观察进度simulannealbnd
通过设置选项来使用一些绘图功能。
设置模拟退火选项以使用多个图函数。
选项= optimoptions(“simulannealbnd”,“PlotFcns”,...{@saplotbestx, @saplotbestf、@saplotx @saplotf});
开始simulannealbnd
从这一点开始(0,0)
,并设置每个组件的下界为-64,上界为64。最小化dejong5fcn
,在运行此示例时可用。
rng默认的%用于再现性Fun = @dejong5fcn;X0 = [0,0];Lb = [-64,-64];Ub = [64,64];X = simulannealbnd(fun,x0,lb,ub,options)
优化终止:最佳函数值的更改小于options.FunctionTolerance。
x =1×2-15.9790 - -31.9593
获取所有输出
得到模拟退火的所有输出的最小值。
Plot De Jong的第五个函数,在运行本示例时可用。
dejong5fcn
开始simulannealbnd
从这一点开始(0,0)
,并设置每个组件的下界为-64,上界为64。
Fun = @dejong5fcn;X0 = [0,0];Lb = [-64,-64];Ub = [64,64];[x,fval,exitflag,output] = simulannealbnd(fun,x0,lb,ub)
优化终止:最佳函数值的更改小于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: 0.9582
的simulannealbnd
算法使用MATLAB®随机数流,所以你可能会得到不同的结果。
输入参数
有趣的
- - - - - -最小化功能
函数处理|函数名
要最小化的函数,指定为函数句柄或函数名。有趣的
一个函数接受一个向量吗x
并返回一个实标量f
的目标函数x
.
有趣的
可以指定为文件的函数句柄:
X = simulannealbnd(@myfun,x0)
在哪里myfun
是一个MATLAB®函数如
函数f = myfun(x) f =…计算x处的函数值
有趣的
也可以是匿名函数的函数句柄:
X = simulannealbnd(@(X)norm(X)^2,x0,lb,ub);
例子:趣味= @(x)sin(x(1))*cos(x(2))
数据类型:字符
|function_handle
|字符串
x0
- - - - - -初始点
真正的向量
磅
- - - - - -下界
真正的向量|真正的数组
下界,指定为实向量或实数组。如果元素的个数x0
等于磅
,然后磅
指定
X (i) >= lb(i)
对所有我
.
如果数值(lb) <数值(x0)
,然后磅
指定
X (i) >= lb(i)
为1 <= I <= number (lb)
.
在这种情况下,求解器发出警告。
例子:要指定所有控制变量都是正的,Lb = 0 (size(x0))
数据类型:双
乌兰巴托
- - - - - -上界
真正的向量|真正的数组
上界,指定为实向量或实数组。如果元素的个数x0
等于乌兰巴托
,然后乌兰巴托
指定
X (i) <= ub(i)
对所有我
.
如果Numel (ub) < Numel (x0)
,然后乌兰巴托
指定
X (i) <= ub(i)
为1 <= I <= numel(ub)
.
在这种情况下,求解器发出警告。
例子:要指定所有控制变量都小于1,Ub = ones(size(x0))
数据类型:双
选项
- - - - - -优化选项
返回的对象optimoptions
|结构
优化选项,指定为返回的对象optimoptions
或者一个结构。详细信息请参见模拟退火选项.
optimoptions
中列出的选项斜体;看到optimoptions隐藏的选项.
{}
表示默认值。参见模拟退火选项.
选项 | 描述 | 值 |
---|---|---|
|
函数,该算法用来确定是否接受一个新的点。指定为 |
函数句柄| |
|
算法用来生成新点的函数。指定为内置退火函数或函数句柄的名称。 |
函数句柄|函数名| |
|
决策变量类型 |
|
|
显示水平 |
|
DisplayInterval |
迭代显示间隔 |
正整数| |
FunctionTolerance |
函数值的终止公差 对于选项结构,使用 |
正标量| |
|
自动运行 看到何时使用混合函数. |
或 1 × 2单元格数组| |
HybridInterval |
间隔(如果没有) |
正整数| |
|
温度初值 |
正标量|正向量| |
|
允许的目标函数计算的最大数量 对于选项结构,使用 |
正整数| |
|
允许的最大迭代次数 对于选项结构,使用 |
正整数| |
|
适应度函数值在当前点的平均变化小于的迭代次数 对于选项结构,使用 |
正整数| |
|
算法运行后停止 对于选项结构,使用 |
正标量| |
|
期望的最小目标函数值 |
标量| |
|
函数获取迭代数据,并可以在运行时更改选项 对于选项结构,使用 |
函数句柄|单元格数组的函数句柄| |
|
绘制迭代期间调用的函数 对于选项结构,使用 |
函数句柄|内置绘图函数名称|单元格数组的函数句柄|单元格数组的内置绘图函数名称| |
PlotInterval |
每隔一段时间都会调用Plot函数 |
正整数| |
|
再次退火时间间隔 |
正整数| |
|
用于更新温度时间表的函数 |
函数句柄|内置温度函数名| |
例子:options = optimoptions(@simulannealbnd,'MaxIterations',150)
数据类型:结构体
问题
- - - - - -问题的结构
结构
问题结构,指定为具有以下字段的结构:
客观的
-目标函数x0
-起点磅
的下界x
乌兰巴托
-的上限x
解算器
- - - - - -“simulannealbnd”
选项
-使用optimoptions
或者是期权结构rngstate
—可选字段,重置随机数发生器状态
请注意
问题
必须具有上面指定的所有字段。
数据类型:结构体
输出参数
fval
-解处的目标函数值
实数
目标函数在解处的值,作为实数返回。一般来说,fval
=有趣的(x)
.
exitflag
- - -原因simulannealbnd
停止
整数
原因simulannealbnd
停止,以整数形式返回。
出口标志 | 意义 |
---|---|
1 |
目标函数值的平均变化 |
5 |
目标函数值小于 |
0 |
函数计算或迭代达到的最大数量。 |
-1 |
由输出函数或绘图函数终止的优化。 |
-2 |
找不到可行点。 |
5 |
超过时间限制。 |
输出
—优化过程信息
结构
关于优化过程的信息,作为一个带字段的结构返回:
problemtype
-问题类型:无约束或有约束。迭代
-计算的迭代次数。funccount
-目标函数的评价次数。消息
—算法终止的原因。温度
-解算器终止时的温度。totaltime
-求解器运行的总时间。rngstate
MATLAB随机数生成器的状态,在算法开始之前。中的值可以使用rngstate
再现…的输出simulannealbnd
.看到重现你的结果.
选择功能
应用程序
的优化活动编辑器任务提供了一个可视化界面simulannealbnd
.
版本历史
在R2007a中引入
Matlabコマンド
次のmatlabコマンドに対応するリンクがクリックされました。
コマンドをmatlabコマンドウィンドウに入力して実行してください。Webブラウザ,はMATLABコマンドをサポ,トしていません。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。