主要内容

Simulannealbnd.

使用模拟退火算法查找最小功能

描述

例子

x= simulannealbnd(乐趣X0.找到当地的最低限度,x,转换为函数句柄乐趣计算目标函数的值。X0.是模拟退火算法的初始点,一个实向量。

请注意

通过额外的参数如有必要,解释了如何将额外参数传递给客观函数。

例子

x= simulannealbnd(乐趣X0.UB.中的设计变量定义一组上下限x,使解决方案总是在范围内≤.x≤.UB..如果x(我)下面是无界的吗磅(i) =负无穷,如果x(我)上面是无界的,集合乌兰巴托(i) =正无穷

例子

x= simulannealbnd(乐趣X0.UB.选项使用指定的优化选项最小化选项.创建选项使用optimoptions.如果没有界限,请设置磅= []和/或UB = []

x= simulannealbnd(问题求最小值问题,描述的结构问题

xfval) = simulannealbnd (___,对于任何语法,返回目标函数的值乐趣在解决方案x

例子

xfvalexitflag输出) = simulannealbnd (___另外返回一个值exitflag描述了退出条件Simulannealbnd.,结构输出关于优化过程的信息。

例子

全部折叠

最小化德容第五函数,一个具有多个局部极小值的二维函数。

剧集De Jong的第五个功能。

dejong5fcn

图中包含一个轴对象。轴对象包含曲面、轮廓两种类型的对象。

最小化De Jong的第五功能Simulannealbnd.从这点开始(0,0)

有趣= @dejong5fcn;X0 = [0 0];x0, x = simulannealbnd(有趣)
优化终止:更改的最佳功能值小于选项。功能公差。
X =1×2-32.0285 - -0.1280

Simulannealbnd.算法使用MATLAB®随机数流,因此您可能获得不同的结果。

在有界区域内最小化德容第五函数。

剧集De Jong的第五个功能。

dejong5fcn

图中包含一个轴对象。轴对象包含曲面、轮廓两种类型的对象。

开始Simulannealbnd.从此开始(0,0),并设置每个组件的下界为-64,上界为64。

有趣= @dejong5fcn;X0 = [0 0];Lb = [-64 -64];Ub = [64 64];x = simulannealbnd(有趣,x0,磅,乌兰巴托)
优化终止:更改的最佳功能值小于选项。功能公差。
X =1×2-15.9790 -31.9593

Simulannealbnd.算法使用MATLAB®随机数流,因此您可能获得不同的结果。

观察…的进展Simulannealbnd.通过设置选项来使用一些情节功能。

设置模拟退火选项,以使用几个plot函数。

选择= optimoptions ('simulannealbnd'“PlotFcns”......{@saplotbestx, @saplotbestf、@saplotx @saplotf});

开始Simulannealbnd.从此开始(0,0),并设置每个组件的下界为-64,上界为64。

rng.默认%的再现性有趣= @dejong5fcn;x0 = (0,0);磅=(-64、-64);乌兰巴托=(64、64);x = Simulannealbnd(有趣,x0,lb,Ub,选项)

图模拟退火包含4个轴对象。轴对象1具有标题最佳点包含类型栏的对象。轴对象2具有标题最佳功能值:1.99203包含类型线的对象。带标题电流点的轴对象3包含类型栏的对象。轴对象4具有标题电流函数值:1.99203包含类型线的对象。

优化终止:更改的最佳功能值小于选项。功能公差。
X =1×2-15.9790 -31.9593

获得模拟退火最小化的所有输出。

剧集De Jong的第五个功能。

dejong5fcn

图中包含一个轴对象。轴对象包含曲面、轮廓两种类型的对象。

开始Simulannealbnd.从此开始(0,0),并设置每个组件的下界为-64,上界为64。

有趣= @dejong5fcn;x0 = (0,0);磅=(-64、-64);乌兰巴托=(64、64);[x, fval exitflag、输出]= simulannealbnd(有趣,x0,磅,乌兰巴托)
优化终止:更改的最佳功能值小于选项。功能公差。
X =1×2-15.9790 -31.9593
fval = 1.9920.
exitflag = 1
输出=结构体字段:迭代:1762 funccount: 1779消息:'优化终止:改变最佳函数值小于选项。' rngstate: [1x1 struct] problemtype: 'boundconstraints' temperature: [2x1 double] totaltime: 0.9710

Simulannealbnd.算法使用MATLAB®随机数流,因此您可能获得不同的结果。

输入参数

全部折叠

要最小化的函数,指定为函数句柄或函数名。乐趣是一个接受向量的函数吗x并返回一个真正的标量f,目标函数的取值为x

乐趣可以指定为文件的函数句柄:

x = simulannealbnd (x0 @myfun)

在哪里myfun.MATLAB是一种®等功能

函数f = myfun(x)f = ...%compute函数值x

乐趣也可以是匿名函数的函数句柄:

x = simulannealbnd(@(x)rang(x)^ 2,x0,lb,Ub);

例子:fun = @(x)sin(x(1))* cos(x(2))

数据类型:字符|function_handle|细绳

初始点,指定为真正的矢量。Simulannealbnd.使用元素的数量X0.确定变量的数量乐趣接受。

例子:x0 = [1,2,3,4]

数据类型:

下限,指定为真实的矢量或真实数组。如果是元素的数量X0.等于,然后指定

x(我)> =磅(我)对所有人

如果元素个数(磅)<元素个数(x0),然后指定

x(我)> =磅(我)1 <= i <= numel(lb)

在这种情况下,索盘发出警告。

例子:要指定所有控制变量都为正,lb = zeros(size(x0))

数据类型:

上界,指定为实向量或实数组。如果是元素的数量X0.等于UB.,然后UB.指定

x(i)<= UB(i)对所有人

如果元素个数(乌兰巴托)<元素个数(x0),然后UB.指定

x(i)<= UB(i)1 <= I <= numel(ub)

在这种情况下,索盘发出警告。

例子:要指定所有控制变量小于1,乌兰巴托= 1(大小(x0))

数据类型:

的返回对象指定为优化选项optimoptions或结构。有关详细信息,请参见模拟退火方法

optimoptions中列出的选项斜体;看Options隐藏的选项

{}表示默认值。请参阅模拟退火方法

选项 描述

AcceptanceFcn

算法用来确定是否接受新点的函数。指定为“acceptancesa”或者函数句柄。

功能手柄|{' acceptancesa '}

AnnealingFcn

算法用来生成新点的函数。指定为内置退火函数或函数句柄的名称。

函数名|“annealingboltz”|{' annealingfast '}

数据类型

决策变量类型

'风俗'|{“双重”}

展示

显示水平

“关闭”|“通路”|“诊断”|{'最终的'}

DisplayInterval

迭代显示的间隔

正整数|{10}

FunctionTolerance

函数值的终止公差

对于选项结构,使用TolFun

正标量|{1 e-6}

Hybridfcn.

自动运行Hybridfcn.(另一个优化函数)在求解器迭代过程中或迭代结束时。指定为名称或函数句柄。

看到何时使用混合函数

'fminsearch' | 'patternsearch' | 'fminunc' | 'fmincon' | {[]}

或者

1-BY-2电池阵列|{@solver, hybridoptions},在那里解算器= fminsearchpatternsearchFminunc., 或者粉刺{[]}

HybridInterval

间隔(如果没有“结束”或者'绝不'),Hybridfcn.叫做

正整数|'绝不'|{" end "}

InitialTemperature

温度初值

正标量|正矢量|{100}

MaxFunctionEvaluations

允许的目标函数求值的最大数目

对于选项结构,使用MaxFunEvals

正整数|{3000 * numberOfVariables}

MaxIterations

允许的最大迭代次数

对于选项结构,使用麦克斯特

正整数|{Inf}

MaxStallIterations

当前点的平均函数值的平均变化的迭代次数小于选项。FunctionTolerance

对于选项结构,使用StallIterLimit

正整数|{500 * numberOfVariables}

MaxTime

算法在运行for后停止MaxTime

对于选项结构,使用期限

正标量|{Inf}

ObjectiveLimit

期望的最小目标函数值

标量|{-inf}

OutputFcn

函数获取迭代数据,并可以在运行时更改选项

对于选项结构,使用outputfcns.

函数句柄|的单元格数组{[]}

PlotFcn

绘制在迭代期间调用的函数

对于选项结构,使用PlotFcns

功能手柄|内置绘图功能名称|功能手柄的单元格阵列|内置绘图函数名称的单元格阵列|'saplotbestf'|“saplotbestx”|'saplotf'|“saplotstopping”|“saplottemperature”|{[]}

PlotInterval

每个间隔都调用绘图函数

正整数|{1}

ReannealInterval

再次退火时间间隔

正整数|{100}

温度浮出水

命令功能:更新温度表

函数句柄|内置温度函数名称|“temperatureboltz”|“temperaturefast”|{' temperatureexp '}

例子:选择= optimoptions (@simulannealbnd MaxIterations, 150)

数据类型:结构体

问题结构,指定为具有以下字段的结构:

  • 客观的——目标函数

  • X0.- 初始点

  • - 下限x

  • UB.- 上限x

  • 求解器- - - - - -'simulannealbnd'

  • 选项- 使用的选项optimoptions或者是期权结构

  • rngstate.—可选字段,重置随机数生成器的状态

请注意

问题必须具有上面指定的所有字段。

数据类型:结构体

输出参数

全部折叠

解,返回实向量。的大小x与大小相同X0..通常情况下,x是当地解决问题的地方exitflag是正的。

解决方案目标值,作为实数返回。一般来说,fval有趣(x)

原因Simulannealbnd.已停止,返回为整数。

出口标志 意义
1

目标函数值变化的平均值options.maxstall迷你迭代次数少于选项。FunctionTolerance

5

目标函数值小于选项。ObjectiveLimit

0

达到的最大函数评估数或迭代次数。

-1

优化由输出函数或绘图函数终止。

-2

没有找到可行点。

-5

超过了时间限制。

有关优化过程的信息,作为具有字段的结构返回:

  • problemtype-问题类型:无约束的或有约束的。

  • 迭代—计算的迭代次数。

  • Funccount.- 目标函数的评估数。

  • 消息-算法终止的原因。

  • 温度-温度时,解决程序终止。

  • 总时间-求解器运行的总时间。

  • rngstate.- MATLAB随机数生成器的状态,就在算法开始之前。中的值可以使用rngstate.重现产出Simulannealbnd..看到重现你的结果

替代功能

应用程序

优化活动编辑器任务为Simulannealbnd.

介绍了R2007a