I keep getting "Error using / Arguments must be numeric, char, or logical. " in bayesopt.
조회 수: 5 (최근 30일)
이전 댓글 표시
Hi, I'm trying to use "bayesopt", but I keep getting this error.
What did I do wrong?
%% BayesOpt
fxc = @(x) cos(2*pi*(x/4))+exp(x/5);
xvar = optimizableVariable('x',[0,10],'Type','real');
res = bayesopt(fxc,xvar,'MaxObjectiveEvaluations',10,'PlotFcn',[],'AcquisitionFunctionName','lower-confidence-bound','ExplorationRatio',.1);
figure;
plot(res, @plotAcquisitionFunction);
figure;
plot(res,@plotObjectiveModel);
res=resume(res,'MaxObjectiveEvaluation',1);
댓글 수: 0
답변 (2개)
Walter Roberson
2023년 2월 7일
doc bayesopt
fun accepts x, a 1-by-D table of variable values, and returns objective, a real scalar representing the objective function value fun(x).
댓글 수: 0
Jan
2023년 2월 7일
Anonymous functions are compact, but less useful for debugging. Use a normal function instead:
fxc = @yourFcn;
xvar = optimizableVariable('x',[0,10],'Type','real');
res = bayesopt(fxc, xvar, 'MaxObjectiveEvaluations', 10, ...
'PlotFcn', [], 'AcquisitionFunctionName', 'lower-confidence-bound', ...
'ExplorationRatio', 0.1);
...
function y = yourFcn(x)
y = cos(2 * pi * x / 4) + exp(x / 5);
end
Run the code again. Now I'd expect it to fail inside yourFcn. Use the debugger to check the details:
dbstop if error
This let Matlab stop, when an error occurs. Run the code again, and when it stops, examine the class of x in the command window:
class(x)
What do you see?
댓글 수: 2
Jan
2023년 2월 8일
@DODO, @Walter Roberson: Yes, if the failing code is included in a TRY/CATCH block, "caught error" is the correct trigger to find the line causing the error.
참고 항목
카테고리
Help Center 및 File Exchange에서 Model Building and Assessment에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!