[error] - Error "Your objective function must return a scalar value.''
显示 更早的评论
Hello everyone, I run my code and got this error " Failure in initial user-supplied objective function evaluation." I don't know how to solve it. Hope you can help me, Thank
function y=annealing(x,C,P,T,R)
y=log(x(1))+x(2)*log(C-0.15)+x(3)*log(P)-x(4)*log(T)-log(R/273);
>> a=xlsread('hydrogen.xlsx');
C=a(:,1);
P=a(:,2);
T=a(:,3);
R=a(:,4);
ObjectiveFunction = @(x) annealing(x,C,P,T,R);
x0 = [0.5 0.5 0.5 0.5]; % Starting point
[x,fval] = simulannealbnd(ObjectiveFunction,x0)
This is error: Error using samakedata (line 29) Your objective function must return a scalar value.
Error in simulannealcommon (line 118) solverData = samakedata(solverData,problem,options);
Error in simulanneal (line 44) simulannealcommon(FUN,x0,Aineq, bineq, Aeq, beq, lb, ub,options,defaultopt);
Error in simulannealbnd (line 137) [x, fval, exitflag, output] = simulanneal(FUN, x0, [], [], [], [], lb, ub, options);
9 个评论
KSSV
2016-10-21
You have showed errors...which function you want us to see?
viet le
2016-10-21
KSSV
2016-10-21
ObjectiveFunction = @(x) annealing(x,C,P,T,R); ?????
simply try:
ObjectiveFunction = annealing(x,C,P,T,R);
viet le
2016-10-21
KSSV
2016-10-21
Define the value of x.
a=xlsread('hydrogen.xlsx');
C=a(:,1);
P=a(:,2);
T=a(:,3);
R=a(:,4);
ObjectiveFunction = annealing(x,C,P,T,R);
Torsten
2016-10-21
Your function "annealing" must return a single (scalar) value. At the moment - since C,P,T and R are vectors - it returns a vector.
The other settings in your original post are ok. Don't change to
ObjectiveFunction = annealing(x,C,P,T,R);
Best wishes
Torsten.
viet le
2016-10-21
viet le
2016-10-21
回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Simulated Annealing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

