Borrar filtros
Borrar filtros

I keep getting "Error using / Arguments must be numeric, char, or logical. " in bayesopt.

6 visualizaciones (últimos 30 días)
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);

Respuestas (2)

Walter Roberson
Walter Roberson el 7 de Feb. de 2023
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).

Jan
Jan el 7 de Feb. de 2023
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 comentarios
Jan
Jan el 8 de Feb. de 2023
@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.

Iniciar sesión para comentar.

Categorías

Más información sobre Graphics Performance en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by