文档帮助中心文档
用模拟退火算法求函数的最小值
x0, x = simulannealbnd(有趣)
x = simulannealbnd(有趣,x0,磅,乌兰巴托)
x = simulannealbnd(有趣,x0,磅,乌兰巴托,选项)
x = simulannealbnd(问题)
[x, fval] = simulannealbnd (___)
[x, fval exitflag,输出]= simulannealbnd (___)
例子
x= simulannealbnd (有趣的,x0)找到一个局部最小值,x,转换为函数句柄有趣的计算目标函数的值。x0是模拟退火算法的初始点,一个实向量。
x= simulannealbnd (有趣的,x0)
x
有趣的
x0
请注意
传递额外的参数说明如何在必要时向目标函数传递额外参数。
x= simulannealbnd (有趣的,x0,磅,乌兰巴托)中的设计变量定义一组上下限x,所以解总是在这个范围内磅≤x≤乌兰巴托.如果x(我)下面是无界的吗磅(i) =负无穷,如果x(我)上面是无界的,集合乌兰巴托(i) =正无穷.
x= simulannealbnd (有趣的,x0,磅,乌兰巴托)
磅
乌兰巴托
x(我)
磅(i) =负无穷
乌兰巴托(i) =正无穷
x= simulannealbnd (有趣的,x0,磅,乌兰巴托,选项)中指定的优化选项最小化选项.创建选项使用optimoptions.如果不存在边界,则设置磅= []和/或乌兰巴托= [].
x= simulannealbnd (有趣的,x0,磅,乌兰巴托,选项)
选项
optimoptions
磅= []
乌兰巴托= []
x= simulannealbnd (问题)求最小值问题中所描述的结构问题.
x= simulannealbnd (问题)
问题
[x,fval) = simulannealbnd (___),对于任何语法,返回目标函数的值有趣的在解决方案x.
[x,fval) = simulannealbnd (___)
fval
[x,fval,exitflag,输出) = simulannealbnd (___)另外返回一个值exitflag的退出条件simulannealbnd,结构输出关于优化过程的信息。
[x,fval,exitflag,输出) = simulannealbnd (___)
exitflag
输出
simulannealbnd
全部折叠
最小化德容第五函数,一个具有多个局部极小值的二维函数。
画出德容的第五项功能。
dejong5fcn
最小化德容的第五函数使用simulannealbnd从这点开始(0,0).
(0,0)
有趣= @dejong5fcn;X0 = [0 0];x0, x = simulannealbnd(有趣)
优化终止:更改的最佳功能值小于选项。功能公差。
x =1×2-32.0285 - -0.1280
的simulannealbnd算法使用MATLAB®随机数流,所以可能会得到不同的结果。
在有界区域内最小化德容第五函数。
开始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通过设置选项来使用一些情节功能。
设置模拟退火选项,以使用几个plot函数。
选择= optimoptions (“simulannealbnd”,“PlotFcns”,...{@saplotbestx, @saplotbestf、@saplotx @saplotf});
rng默认的%的再现性有趣= @dejong5fcn;x0 = (0,0);磅=(-64、-64);乌兰巴托=(64、64);x = simulannealbnd(有趣,x0,磅,乌兰巴托,选项)
获得模拟退火最小化的所有输出。
有趣= @dejong5fcn;x0 = (0,0);磅=(-64、-64);乌兰巴托=(64、64);[x, fval exitflag、输出]= simulannealbnd(有趣,x0,磅,乌兰巴托)
fval = 1.9920
exitflag = 1
输出=结构体字段:迭代:1762 funccount: 1779消息:'优化终止:改变最佳函数值小于选项。' rngstate: [1x1 struct] problemtype: 'boundconstraints' temperature: [2x1 double] totaltime: 0.9710
要最小化的函数,指定为函数句柄或函数名。有趣的是一个接受向量的函数吗x并返回一个实标量f,目标函数的取值为x.
f
有趣的可以指定为文件的函数句柄:
x = simulannealbnd (x0 @myfun)
在哪里myfunMATLAB是一种®等功能
myfun
函数f = myfun(x)%计算函数在x处的值
有趣的也可以是匿名函数的函数句柄:
x = simulannealbnd (@ (x)规范(x) ^ 2, x0,磅,乌兰巴托);
例子:有趣= @ (x) sin (x (1)) * cos (x (2))
有趣= @ (x) sin (x (1)) * cos (x (2))
数据类型:字符|function_handle|字符串
字符
function_handle
字符串
初始点,指定为实向量。simulannealbnd使用中的元素数x0来确定变量的数量有趣的接受。
例子:x0 =(1、2、3、4)
x0 =(1、2、3、4)
数据类型:双
双
下界,指定为实向量或实数组。如果元素的数量x0等于磅,然后磅指定
x(我)> =磅(我)对所有我.
x(我)> =磅(我)
我
如果元素个数(磅)<元素个数(x0),然后磅指定
元素个数(磅)<元素个数(x0)
x(我)> =磅(我)为1 <= I <= numel(lb).
1 <= I <= numel(lb)
在这种情况下,求解器发出警告。
例子:要指定所有的控制变量都是正的,磅= 0(大小(x0))
磅= 0(大小(x0))
上界,指定为实向量或实数组。如果元素的数量x0等于乌兰巴托,然后乌兰巴托指定
x (i) < =乌兰巴托(我)对所有我.
x (i) < =乌兰巴托(我)
如果元素个数(乌兰巴托)<元素个数(x0),然后乌兰巴托指定
元素个数(乌兰巴托)<元素个数(x0)
x (i) < =乌兰巴托(我)为1 <= I <= numel(ub).
1 <= I <= numel(ub)
例子:要指定所有控制变量都小于1,乌兰巴托= 1(大小(x0))
乌兰巴托= 1(大小(x0))
的返回对象指定为优化选项optimoptions或结构。有关详细信息,请参见模拟退火方法.
optimoptions中列出的选项斜体;看到Options隐藏的选项.
{}表示默认值。请参阅模拟退火方法.
{}
AcceptanceFcn
算法用来确定是否接受新点的函数。指定为“acceptancesa”或者函数句柄。
“acceptancesa”
函数处理|{' acceptancesa '}
{' acceptancesa '}
AnnealingFcn
算法用来生成新点的函数。指定为内置退火函数或函数句柄的名称。
函数名|“annealingboltz”|{' annealingfast '}
“annealingboltz”
{' annealingfast '}
数据类型
决策变量类型
“自定义”|{“双重”}
“自定义”
{“双重”}
显示
水平显示
“关闭”|“通路”|“诊断”|{'最后'}
“关闭”
“通路”
“诊断”
{'最后'}
DisplayInterval
迭代显示间隔
正整数|{10}
{10}
FunctionTolerance
函数值的终止公差
对于期权结构,请使用TolFun.
TolFun
积极的标量|{1 e-6}
{1 e-6}
HybridFcn
自动运行HybridFcn(另一个优化函数)在求解器迭代过程中或迭代结束时。指定为名称或函数句柄。
看到何时使用混合函数.
'fminsearch' | 'patternsearch' | 'fminunc' | 'fmincon' | {[]}
或
1 × 2单元阵列|{@solver, hybridoptions},在那里解算器= fminsearch,patternsearch,fminunc,或fmincon{[]}
{@solver, hybridoptions}
解算器= fminsearch
patternsearch
fminunc
fmincon
{[]}
HybridInterval
时间间隔(如果不是“结束”或“永远”),HybridFcn被称为
“结束”
“永远”
正整数|“永远”|{" end "}
{" end "}
InitialTemperature
温度初值
正标量|正向量|{100}
{100}
MaxFunctionEvaluations
允许的目标函数求值的最大数目
对于期权结构,请使用MaxFunEvals.
MaxFunEvals
正整数|{3000 * numberOfVariables}
{3000 * numberOfVariables}
MaxIterations
允许的最大迭代次数
对于期权结构,请使用麦克斯特.
麦克斯特
正整数|{Inf}
{Inf}
MaxStallIterations
适应度函数值在当前点的平均变化小于的迭代次数选项。FunctionTolerance
选项。FunctionTolerance
对于期权结构,请使用StallIterLimit.
StallIterLimit
正整数|{500 * numberOfVariables}
{500 * numberOfVariables}
MaxTime
算法在运行for后停止MaxTime秒
对于期权结构,请使用期限.
期限
积极的标量|{Inf}
ObjectiveLimit
期望的最小目标函数值
标量|{无穷}
{无穷}
OutputFcn
函数获取迭代数据,并可以在运行时更改选项
对于期权结构,请使用OutputFcns.
OutputFcns
函数句柄|的单元格数组{[]}
PlotFcn
绘制在迭代期间调用的函数
对于期权结构,请使用PlotFcns.
PlotFcns
函数句柄|内置plot函数名称| cell array的函数句柄| cell array的内置plot函数名称|“saplotbestf”|“saplotbestx”|“saplotf”|“saplotstopping”|“saplottemperature”|{[]}
“saplotbestf”
“saplotbestx”
“saplotf”
“saplotstopping”
“saplottemperature”
PlotInterval
每隔一段时间调用绘图函数
正整数|{1}
{1}
ReannealInterval
再次退火时间间隔
正整数|{100}
TemperatureFcn
命令功能:更新温度表
函数句柄|内置温度函数名称|“temperatureboltz”|“temperaturefast”|{' temperatureexp '}
“temperatureboltz”
“temperaturefast”
{' temperatureexp '}
例子:选择= optimoptions (@simulannealbnd MaxIterations, 150)
选择= optimoptions (@simulannealbnd MaxIterations, 150)
数据类型:结构体
结构体
问题结构,指定为具有以下字段的结构:
客观的——目标函数
客观的
x0——起点
磅的下界x
乌兰巴托-的上界x
解算器- - - - - -“simulannealbnd”
解算器
“simulannealbnd”
选项-使用optimoptions或者是期权结构
rngstate—可选字段,重置随机数生成器的状态
rngstate
问题必须具有上述指定的所有字段。
解,返回实向量。的大小x和尺寸一样吗x0.通常情况下,x什么时候能解决局部问题exitflag是正的。
目标函数在解处的值,以实数返回。一般来说,fval=有趣的(x).
有趣的(x)
原因simulannealbnd已停止,返回为整数。
1
目标函数值变化的平均值选项。MaxStallIterations迭代次数少于选项。FunctionTolerance.
选项。MaxStallIterations
5
目标函数值小于选项。ObjectiveLimit.
选项。ObjectiveLimit
0
达到的函数求值或迭代的最大次数。
-1
由输出函数或绘图函数终止的优化。
-2
没有找到可行点。
-5
超过了时间限制。
关于优化过程的信息,作为带有字段的结构返回:
problemtype-问题类型:无约束的或有约束的。
problemtype
迭代—计算的迭代次数。
迭代
funccount-目标函数的评价次数。
funccount
消息-算法终止的原因。
消息
温度-温度时,解决程序终止。
温度
totaltime-求解器运行的总时间。
totaltime
rngstate- MATLAB随机数生成器的状态,就在算法开始之前。中的值可以使用rngstate复制…的输出simulannealbnd.看到复制你的结果.
的优化活动编辑器任务为simulannealbnd.
遗传算法|optimoptions|patternsearch|优化
遗传算法
您有这个示例的修改版本。您想打开这个示例与您的编辑吗?
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
与当地办事处联系
得到审判现在