Error happen when doing optimization by using "surrogateopt"
조회 수: 1 (최근 30일)
이전 댓글 표시
I am trying to do optimization by using "surrogateopt" function.
I got an error "Objective function must return a scalar value".
And I couldn't find the problem.
clear
close all
clc
h = 0.01;
t = 0:h:10;
x = [0 0]';
for i = 1:1001
x1(i) = x(1);
x2(i) = x(2);
if x1(i) >0
a = pi/3;
elseif x1(i)<=0
a = -pi/3;
end
A = [cos(a) sin(a);
sin(a) cos(a)];
B = [0 1]';
intcon = 1;
lb = -1;
ub = 1;
obj =@(u) fun(A, x, B, u);
u = surrogateopt(obj, lb, ub, intcon);
x = fun(A, x, B, u);
end
figure
plot(x1, x2)
grid on
function f1 = fun(A, x, B, u)
f1 = 0.8*A*x+B*u;
end
댓글 수: 0
채택된 답변
Stephan
2021년 4월 22일
f1 is a 2x1 vector - the objective of an optimization has to be a scalar. Thats the error. You need a criterion that expresses the success of your optimization as a scalar.
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Surrogate Optimization에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!