主要内容

simulannealbnd

利用模拟退火算法求函数的最小值

描述

例子

x= simulannealbnd (有趣的x0求一个局部极小值,x,到函数句柄有趣的计算目标函数的值。x0是模拟退火算法的一个初始点,一个实向量。

请注意

传递额外参数解释如何在必要时将额外参数传递给目标函数。

例子

x= simulannealbnd (有趣的x0乌兰巴托中定义设计变量的一组下界和上界x,使解总是在值域内x乌兰巴托.如果x(我)下面是无界的吗lb(i) = -无穷大,如果x(我)上面是无界的吗ub(i) =无穷大

例子

x= simulannealbnd (有趣的x0乌兰巴托选项中指定的优化选项使之最小化选项.创建选项使用optimoptions.如果不存在边界,请设置Lb = []和/或Ub = []

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

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

例子

xfvalexitflag输出] = simulannealbnd(___另外返回一个值exitflag的退出条件simulannealbnd,和结构输出有关优化过程的信息。

例子

全部折叠

最小化德容第五函数,一个具有许多局部极小值的二维函数。运行此示例时,此函数可用。

Plot De Jong的第五个功能。

dejong5fcn

图中包含一个轴对象。坐标轴对象包含曲面、轮廓等2个对象。

最小化德容第五函数的使用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

图中包含一个轴对象。坐标轴对象包含曲面、轮廓等2个对象。

开始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

图中包含一个轴对象。坐标轴对象包含曲面、轮廓等2个对象。

开始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|字符串

初始点,指定为实向量。simulannealbnd中使用元素的数量x0来确定变量的数量有趣的接受。

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

数据类型:

下界,指定为实向量或实数组。如果元素的个数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隐藏的选项

{}表示默认值。参见模拟退火选项

选项 描述

AcceptanceFcn

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

函数句柄|{' acceptancesa '}

AnnealingFcn

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

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

数据类型

决策变量类型

“自定义”|{“双重”}

显示

显示水平

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

DisplayInterval

迭代显示间隔

正整数|{10}

FunctionTolerance

函数值的终止公差

对于选项结构,使用TolFun

正标量|{1 e-6}

HybridFcn

自动运行HybridFcn(另一个优化函数)在求解器迭代期间或结束时。作为名称或函数句柄指定。

看到何时使用混合函数

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

1 × 2单元格数组|{@solver, hybridoptions},在那里求解器= fminsearchpatternsearchfminunc,或fmincon{[]}

HybridInterval

间隔(如果没有)“结束”“永远”)在HybridFcn被称为

正整数|“永远”|{" end "}

InitialTemperature

温度初值

正标量|正向量|{100}

MaxFunctionEvaluations

允许的目标函数计算的最大数量

对于选项结构,使用MaxFunEvals

正整数|{3000 * numberOfVariables}

MaxIterations

允许的最大迭代次数

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

正整数|{Inf}

MaxStallIterations

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

对于选项结构,使用StallIterLimit

正整数|{500 * numberOfVariables}

MaxTime

算法运行后停止MaxTime

对于选项结构,使用期限

正标量|{Inf}

ObjectiveLimit

期望的最小目标函数值

标量|{无穷}

OutputFcn

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

对于选项结构,使用OutputFcns

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

PlotFcn

绘制迭代期间调用的函数

对于选项结构,使用PlotFcns

函数句柄|内置绘图函数名称|单元格数组的函数句柄|单元格数组的内置绘图函数名称|“saplotbestf”|“saplotbestx”|“saplotf”|“saplotstopping”|“saplottemperature”|{[]}

PlotInterval

每隔一段时间都会调用Plot函数

正整数|{1}

ReannealInterval

再次退火时间间隔

正整数|{100}

TemperatureFcn

用于更新温度时间表的函数

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

例子:options = optimoptions(@simulannealbnd,'MaxIterations',150)

数据类型:结构体

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

  • 客观的-目标函数

  • x0-起点

  • 的下界x

  • 乌兰巴托-的上限x

  • 解算器- - - - - -“simulannealbnd”

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

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

请注意

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

数据类型:结构体

输出参数

全部折叠

解,作为实向量返回。的大小x和的尺寸一样吗x0.通常情况下,x什么时候局部解决问题exitflag是正的。

目标函数在解处的值,作为实数返回。一般来说,fval有趣的(x)

原因simulannealbnd停止,以整数形式返回。

出口标志 意义
1

目标函数值的平均变化选项。MaxStallIterations迭代次数小于选项。FunctionTolerance

5

目标函数值小于选项。ObjectiveLimit

0

函数计算或迭代达到的最大数量。

-1

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

-2

找不到可行点。

5

超过时间限制。

关于优化过程的信息,作为一个带字段的结构返回:

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

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

  • funccount-目标函数的评价次数。

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

  • 温度-解算器终止时的温度。

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

  • rngstateMATLAB随机数生成器的状态,在算法开始之前。中的值可以使用rngstate再现…的输出simulannealbnd.看到重现你的结果

选择功能

应用程序

优化活动编辑器任务提供了一个可视化界面simulannealbnd

版本历史

在R2007a中引入