主要内容

simulannealbnd

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

描述

例子

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

请注意

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

例子

x= simulannealbnd (有趣的x0乌兰巴托)中定义一组设计变量的下限和上界x,使解始终在范围内x乌兰巴托。如果x(我)下面是无界、集磅(i) =负无穷,如果x(我)上面是无界的,定的乌兰巴托(i) =正无穷

例子

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

x= simulannealbnd (问题)找到最小值问题的一种结构问题

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

例子

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

例子

全部折叠

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

图德容的第五个功能。

dejong5fcn

图包含一个坐标轴对象。坐标轴对象包含两个对象,分别是曲面、轮廓。

最小化德容第五函数的使用simulannealbnd从点出发(0,0)

有趣= @dejong5fcn;X0 = [0 0];x0, x = simulannealbnd(有趣)
优化终止:最佳函数值的变化小于options.FunctionTolerance。
x =1×2-32.0285 - -0.1280

simulannealbnd算法使用MATLAB®随机数流,所以你可能会得到不同的结果。

在有界区域内最小化德容第五函数。这个函数在运行这个例子时可用。

图德容的第五个功能。

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)

在哪里myfunMATLAB是一种®等功能

函数f = myfun(x) f =…%计算函数在x处的值

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

x = simulannealbnd (@ (x)规范(x) ^ 2, x0,磅,乌兰巴托);

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

数据类型:字符|function_handle|字符串

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

例子:x0 =(1、2、3、4)

数据类型:

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

{}默认值。参见选项详细信息模拟退火方法

选项 描述

AcceptanceFcn

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

函数处理|{' acceptancesa '}

AnnealingFcn

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

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

数据类型

决策变量类型

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

显示

水平显示

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

DisplayInterval

迭代显示的间隔

正整数|{10}

FunctionTolerance

函数值上的终止容忍

对于选项结构,使用TolFun

积极的标量|{1 e-6}

HybridFcn

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

看到何时使用混合函数

'fminsearch' | 'patternsearch' | '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

算法运行for后停止MaxTime

对于选项结构,使用期限

积极的标量|{Inf}

ObjectiveLimit

期望的最小目标函数值

标量|{无穷}

OutputFcn

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

对于选项结构,使用OutputFcns

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

PlotFcn

在迭代期间调用的Plot函数

对于选项结构,使用PlotFcns

函数句柄|内置plot函数名称| cell array of Function句柄| cell array of内置plot函数名称|“saplotbestf”|“saplotbestx”|“saplotf”|“saplotstopping”|“saplottemperature”|{[]}

PlotInterval

每隔一段时间调用Plot函数

正整数|{1}

ReannealInterval

再次退火时间间隔

正整数|{100}

TemperatureFcn

函数用于更新温度表

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

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

数据类型:结构体

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

  • 客观的——目标函数

  • x0——起点

  • -的下限x

  • 乌兰巴托-的上限x

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

  • 选项-选项创建与optimoptions或一个期权结构

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

请注意

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

数据类型:结构体

输出参数

全部折叠

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

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

原因simulannealbnd停止,返回为整数。

出口标志 意义
1

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

5

目标函数值小于选项。ObjectiveLimit

0

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

1

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

2

找不到可行点。

5

超过了时间限制。

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

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

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

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

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

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

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

  • rngstate- MATLAB随机数生成器的状态,算法刚开始之前。可以使用中的值rngstate再现的输出simulannealbnd。看到复制你的结果

选择功能

应用程序

优化的Live Editor任务提供了一个可视化的界面simulannealbnd

版本历史

介绍了R2007a

Baidu
map