# Doing an example find the optimal state and optimal control based on minimizing the performance index, Fmincon error of scalar value

3 views (last 30 days)

Show older comments

Example to find the optimal state and optimal control based on minimizing the performance index. I have written the code but the error shown in fmincon is "Supplied objective function must return a scalar value." I have checked the matrices but still the error is there. I have attached te codes, kindly tell how to resolve the problem.

EXAMPLE:

Find the optimal state and optimal control based on minimizing the performance index 𝐽=∫ (𝑥(𝑡) − 1/2 𝑢(𝑡)^2 ) 𝑑𝑡 , 0 ≤ 𝑡 ≤ 1 subject to 𝑢(𝑡) = 𝑥̇(𝑡) + 𝑥(𝑡) with the condition 𝑥(0) = 0, 𝑥(1) = 1 2 (1 − 1/𝑒 )^ 2 where 𝐽𝑒𝑥𝑎𝑐𝑡 = 0.08404562020 In this example the initial approximation is 𝑥1 (𝑡) = 1 2 (1 − 1/𝑒 ) ^2

CODES:

File1;

function F = cost_function(x)

global def;

global m;

% global P_alpha_1;

s=def.k ;

C3=x(1,(s+1):2*s);

;

u=(C3*m.H) ;

F=(x-(1/2)*(u*u'));

File 2:

function F = system_of_equations(x)

global def;

global m;

global init;function F = system_of_equations(x)

global def;

global m;

global init;

global P_alpha_1;

s=def.k ;

C1=x(1,1:1);

C3=x(1,(s+1):s);

x1=('C1*P_alpha_1*m.H') + init(1);

u=('C3*m.H') ;

D_alpha1_x1= 'C1*m.H';

M=Haar_matrix(s);

HC=M(:,s);

%%control law1

% F = horzcat( D_alpha1_x1 - u , ...

F = horzcat( D_alpha1_x1 - u , ...

('C1*P_alpha_1*HC') + init(1) - (1/2*((1-exp(-1))^2)) ) ;

end

File 3:

alpha_1=1;

k=8; %no. of Haar wavelets

b=1; %Total number of days to plot

initialize(alpha_1,k,b )

global m;

global init;

global def;

global P_alpha_1;

P_alpha_1=fractional_operation_matrix(k,alpha_1,b,m.H);

s=def.k;

% C3=x(1,((2*s)+1):3*s);

% u=(C3*m.H) ;

% cost function=(1/2)*u.^2;

x0=zeros(2,2*s);

% system_of_equations(x)

A = [];

bb = [];

Aeq = [];

beq = [];

lb = [];

ub = [];

fun = @cost_function;

nonlcon=@system_of_equations;

x = fmincon(fun,x0,A,bb,Aeq,beq,lb,ub,nonlcon)

##### 2 Comments

Matt J
on 17 Feb 2022

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!