Для каждой переменной в вашей целевой функции создайте объект описания переменной использование optimizableVariable
. Каждая переменная имеет уникальное имя и область значений значений. Минимальный синтаксис для переменного создания
variable = optimizableVariable(Name,Range)
Эта функция создает действительную переменную, которая лежит в диапазоне от нижней границы Range(1)
к верхней границе Range(2)
.
Можно задать три типа переменных в Type
пара "имя-значение":
'real'
— Непрерывные действительные значения между конечными границами. Дайте Range
как двухэлементный векторный [lower upper]
, которые представляют нижние и верхние границы.
'integer'
— Целочисленные значения между конечными границами, похожими на 'real'
.
'categorical'
— Массив ячеек имен возможных значений, таких как {'red','green','blue'}
, то, что вы задаете в Range
аргумент.
Для 'real'
или 'integer'
переменные, можно задать тот bayesopt
поисковые запросы на масштабируемом журналом пробеле путем установки Transform
пара "имя-значение" к 'log'
. Для этого преобразования гарантируйте что нижняя граница в Range
строго положительно.
Включайте переменные для bayesopt
как вектор во втором аргументе.
results = bayesopt(fun,[xvar,ivar,rvar])
Чтобы исключить переменную из оптимизации, установите Optimize
к false
, любой в паре "имя-значение" optimizableVariable
, или записью через точку:
xvar.Optimize = false;
Существует два имени, сопоставленные с optimizableVariable
:
Имя переменной рабочей области MATLAB®
Имя переменной в оптимизации
Например,
xvar = optimizableVariable('spacevar',[1,100]);
xvar
переменная рабочего пространства MATLAB и 'spacevar'
переменная в оптимизации.
Используйте эти имена можно следующим образом:
Используйте xvar
как элемент в векторе переменных вы передаете bayesopt
. Например,
results = bayesopt(fun,[xvar,tvar])
Используйте 'spacevar'
как имя переменной в оптимизации. Например, в целевой функции,
function objective = mysvmfun(x,cdata,grp) SVMModel = fitcsvm(cdata,grp,'KernelFunction','rbf',... 'BoxConstraint',x.spacevar,... 'KernelScale',x.tvar); objective = kfoldLoss(crossval(SVMModel));
Действительная переменная от 0 до 1:
var1 = optimizableVariable('xvar',[0 1])
var1 = optimizableVariable with properties: Name: 'xvar' Range: [0 1] Type: 'real' Transform: 'none' Optimize: 1
Целочисленная переменная от 1 до 1 000 на логарифмической шкале:
var2 = optimizableVariable('ivar',[1 1000],'Type','integer','Transform','log')
var2 = optimizableVariable with properties: Name: 'ivar' Range: [1 1000] Type: 'integer' Transform: 'log' Optimize: 1
Категориальная переменная цветов радуги:
var3 = optimizableVariable('rvar',{'r' 'o' 'y' 'g' 'b' 'i' 'v'},'Type','categorical')
var3 = optimizableVariable with properties: Name: 'rvar' Range: {'r' 'o' 'y' 'g' 'b' 'i' 'v'} Type: 'categorical' Transform: 'none' Optimize: 1