对于您的客观函数中的每个变量,使用变量描述对象使用优化变量
。每个变量都有一个唯一的名称和一系列值。创建变量的最低语法为
变量=optimizableVariable(名称、范围)
此函数用于创建一个范围为下限的实变量范围(1)
上界射程(2)
.
可以在中指定三种类型的变量类型
名称值参数:
“真的”
-有限边界之间的连续实值。给范围
作为二元向量[上下]
,代表下限和上限。
“整数”
-有限边界之间的整数值,类似于“真的”
.
“绝对的”
-可能值的名称的单元格数组,例如{‘红’、‘绿’、‘蓝’}
,您在范围
争论。
对于“真的”
或者“整数”
变量,您可以指定贝耶斯波特
通过设置来搜索日志缩放的空间使改变
名称 - 值参数“日志”
。对于此转换,请确保范围
绝对是肯定的“真的”
对于“整数”
.
包括的变量贝耶斯波特
作为第二个论点的矢量。
结果=bayesopt(fun,[xvar,ivar,rvar])
要从优化中排除变量,请设置优化
到错误的
,在的name-value参数中优化变量
,或通过点符号:
xvar.Optimize=false;
提示
有两个名称与一个优化变量
:
MATLAB®工作区变量名
优化中变量的名称
例如,
XVAR =优化不变('spacevar',[1,100]);
xvar
是MATLAB工作空间变量,并且'spacevar'
是优化中的变量。
使用以下名称:
使用xvar
作为您传递的变量矢量中的元素贝耶斯波特
例如
结果=bayesopt(有趣[xvar,tvar])
使用'spacevar'
作为优化中变量的名称。例如,在目标函数中,
函数目标=mysvmfun(x,cdata,grp)SVMModel=fitcsvm(cdata,grp,'KernelFunction','rbf',…'BoxConstraint',X.Spacevar.,…'KernelScale',x.tvar);目标=kfoldLoss(crossval(SVMModel));
从0到1的实变量:
var1=优化变量('xvar',[0 1])
VAR1 =具有属性的优化变性:名称:'XVAR'范围:[0 1]类型:“真实”变换:'无'优化:1
对数刻度上从0到1000的整数变量:
var2 =优化不变(“伊瓦尔”,[0 1000],“类型”,“整数”,“转变”,“日志”)
var2=具有以下属性的optimizableVariable:名称:'ivar'范围:[0 1000]类型:'integer'转换:'log'优化:1
彩虹颜色的分类变量:
var3=优化变量(“rvar”,{“r”'o'“是的”“g”“b”“我很高兴“v”},“类型”,“绝对的”)
var3=具有以下属性的optimizableVariable:名称:'rvar'范围:{'r''o''y''g''b''i''v'}类型:'Category'转换:'none'优化:1