对于目标函数中的每个变量,使用优化变量
。每个变量都有一个唯一的名称和一系列值。创建变量的最低语法为
变量=optimizableVariable(名称、范围)
此函数用于创建一个范围为下限的实变量范围(1)
上界射程(2)
.
可以在中指定三种类型的变量类型
名称-值对:
“真的”
-有限边界之间的连续实值。给范围
作为二元向量[上下]
,表示下限和上限。
“整数”
-有限边界之间的整数值,类似于“真的”
.
“绝对的”
-可能值的名称的单元格数组,例如{‘红’、‘绿’、‘蓝’}
,您在范围
论点
对于“真的”
或“整数”
变量,您可以指定贝耶斯波特
通过设置使改变
名称-值对到“日志”
。对于此转换,请确保范围
这是绝对肯定的。
包括的变量贝耶斯波特
作为第二个参数中的向量。
结果=bayesopt(fun,[xvar,ivar,rvar])
要从优化中排除变量,请设置优化
到错误的
,在优化变量
,或通过点符号:
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、 空间变量,…'KernelScale',x.tvar);目标=kfoldLoss(crossval(SVMModel));
从0到1的实变量:
var1=优化变量(“xvar”,[0 1])
var1=具有以下属性的optimizableVariable:Name:'xvar'范围:[0 1]键入:'real'转换:'none'优化:1
对数刻度上从1到1000的整数变量:
var2=优化变量(“伊瓦尔”,[1 1000],“类型”,“整数”,“转变”,“日志”)
var2=具有以下属性的optimizableVariable:名称:'ivar'范围:[1 1000]键入:'integer'转换:'log'优化:1
彩虹颜色的分类变量:
var3=优化变量(“rvar”,{“r”“哦”“是的”“g”“b”“我很高兴“v”},“类型”,“绝对的”)
var3=具有以下属性的optimizableVariable:名称:'rvar'范围:{'r''o''y''g''b''i''v'}类型:'Category'转换:'none'优化:1