Help with fmincon function

1 view (last 30 days)
Noemi Ambrosio
Noemi Ambrosio on 27 Mar 2019
Edited: Catalytic on 27 Mar 2019
Hello everyone!
I need help with my matlab code. I have this objective function: g = @(u) 30*u(1) + (20/2)*(u(2))^2 + (20/2)*(u(3))^2 + (10/2)*(u(4))^2 + (40/2)*(u(5))^2; and this conditions:
%initial guesses
u0 = [1 1 1 1 100000]; %
A = [];
b = [];
Aeq = [];
beq = [];
lb = 0.0 * ones(1,2,3,4);
ub = 1.0 * ones(1,2,3,4);
[x,fval,output,lambda] = fmincon(g, u0, A, b, Aeq, beq, lb, ub);
I need to find the values for different instant of times, because g is a function of time.
In this way I find only one value for each u. How can I do that and find the different values for each instant of time? I hope it is clear, thank you so much!!

Accepted Answer

Catalytic
Catalytic on 27 Mar 2019
Edited: Catalytic on 27 Mar 2019
First of all, let's fix your code.
g = @(u) 30*u(1) + (20/2)*(u(2))^2 + (20/2)*(u(3))^2 + (10/2)*(u(4))^2 + (40/2)*(u(5))^2;
u0 = [1 1 1 1 100000]; %
lb = zeros(1,5);
ub = ones(1,5);
[u,fval,output,lambda] = fmincon(g, u0, [],[],[],[], lb, ub);
In this way I find only one value for each u. How can I do that and find the different values for each instant of time?
By writing a loop over time.
for t=1:T
g = ----- something t-dependent --------
[u(t,:),fval,output,lambda] = fmincon(g, u0, [],[],[],[], lb, ub);
end

More Answers (0)

Categories

Find more on Get Started with Optimization Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!