error in matlab code
Mostrar comentarios más antiguos
I have been trying to solve an optimal problem in which a body of mass m have to [be] transfered to y(tf) = 0 from its initial position y(o) = 0 such that its final velocity is zero satisfying the performance index.
, where t = [to, tf]. But I am not getting the optimal trajectories using this code. Could anyone help me to find where the mistake [is]?
clear all
c0 = [0.1; 0.1; 0.1; 0.1; 5]; % Make a starting guess at the solution
[c, fval] = fsolve (@myfun1, c0) % Call optimizer
c1 = c(1); c2 = c(2); c3 = c(3); c4 = c(4); c5 = c(5);
t=0:0.01:c5;
x1op = -(c1*(t.^3))/6-(c2*(t.^2))/2+(c3.*t)+c4
x2op =-(c1*(t.^2))/2+-(c2.*t)+c3
uop = -(c1.*t)-c2
lam1= c1;
H = 1.5 * uop.^2 + x2op.* lam1;
figure (1)
plot(t, uop)
figure(2)
plot(t,x1op,t,x2op)
figure(3)
plot(t,H)
function F = myfun1(c)
x10 = 1;
x20 = 0;
x1f = 0;
x2f = 0;
u=-(c(1)*c(5))-c(2);
ud = c(1);
% the conditions x1(t = 0), x1(t = tf), x2(t = 0), x2(t = tf)
f1 = c(4)-x10;
f2 =-(c(1)*(c(5)^3))/6 -(c(2)*(c(5)^2))/2 +(c(3)*c(5)) + 1 -x1f;
f3 = c(3)-x20;
f4 = -(c(1)*(c(5)^2))/2 -(c(2)*c(5))-x2f;
f5 = 1.5 *u.^2 -f4.*ud ;% the condition H(tf) = 0
F = [f1;f2;f3;f4;f5]; % the five unknown system F(C) = 0
end
1 comentario
clear all
c0 = [0.1; 0.1; 0.1; 0.1; 5]; % Make a starting guess at the solution
opts = optimoptions('fsolve', 'MaxIterations', 1e6, 'MaxFunEval', 1e7);
[c, fval] = fsolve (@myfun1, c0, opts) % Call optimizer
c1 = c(1); c2 = c(2); c3 = c(3); c4 = c(4); c5 = c(5);
t=0:0.01:c5;
x1op = -(c1*(t.^3))/6-(c2*(t.^2))/2+(c3.*t)+c4
x2op =-(c1*(t.^2))/2+-(c2.*t)+c3
uop = -(c1.*t)-c2
lam1= c1;
H = 1.5 * uop.^2 + x2op.* lam1;
figure (1)
plot(t, uop)
figure(2)
plot(t,x1op,t,x2op)
figure(3)
plot(t,H)
function F = myfun1(c)
x10 = 1;
x20 = 0;
x1f = 0;
x2f = 0;
u=-(c(1)*c(5))-c(2);
ud = c(1);
% the conditions x1(t = 0), x1(t = tf), x2(t = 0), x2(t = tf)
f1 = c(4)-x10;
f2 =-(c(1)*(c(5)^3))/6 -(c(2)*(c(5)^2))/2 +(c(3)*c(5)) + 1 -x1f;
f3 = c(3)-x20;
f4 = -(c(1)*(c(5)^2))/2 -(c(2)*c(5))-x2f;
f5 = 1.5 *u.^2 -f4.*ud ;% the condition H(tf) = 0
F = [f1;f2;f3;f4;f5]; % the five unknown system F(C) = 0
end
Respuestas (1)
Divyanshu
el 13 de En. de 2025
0 votos
I think the reason for the incorrect trajectories can be the error 'Solver stopped prematurely'. This MATLAB answer thread addresses a similar issue, just try to follow this and re-run your script.
Hopefully, after modifying the 'MaxIterations' and 'MaxFunctionEvaluations' parameters you would get correct results from the script.
Categorías
Más información sobre Get Started with Optimization Toolbox en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





