model_6dof_12_opt_sqp_vert_up_cu_ruliu_x16()
Iter Func-count Fval Feasibility Step Length Norm of First-order
step optimality
0 19 1.000000e+06 0.000e+00 1.000e+00 0.000e+00 0.000e+00
Optimization completed: The final point is the initial point.
The first-order optimality measure, 0.000000e+00, is less than options.OptimalityTolerance =
1.000000e-06, and the maximum constraint violation, 0.000000e+00, is less than
options.ConstraintTolerance = 1.000000e-06.
=== Optimized Gains ===
k4 = 0.0000
k5 = 0.0000
k7 = 0.0000
k8 = 0.0000
k9 = 0.0000
k1 = 0.0000
k2 = 0.0000
k6 = 0.0000
k3 = 0.0000
function model_6dof_12_opt_sqp_vert_up_cu_ruliu_x16()
x0 = [0, 0, 0, 0, 0, 0, 0, 0, 0];
lb = [0, 0, 0, 0, 0, 0, 0, 0, 0];
ub = [4, 4, 4, 4, 4, 4, 4, 4, 4];
options = optimoptions('fmincon', ...
'Display', 'iter-detailed', ...
'MaxFunctionEvaluations', 1e5, ...
'MaxIterations', 1000, ...
'OptimalityTolerance', 1e-6, ...
'StepTolerance', 1e-10, ...
'FunctionTolerance', 1e-6, ...
'UseParallel', false, ...
'FiniteDifferenceType', 'central', ...
'FiniteDifferenceStepSize', 1e-6);
[opt_gains, ~] = fmincon(@cost_function, x0, [], [], [], [], lb, ub, [], options);
fprintf('\n=== Optimized Gains ===\n');
fprintf('k4 = %.4f\n k5 = %.4f\n k7 = %.4f\n k8 = %.4f\n k9 = %.4f\n k1 = %.4f\n k2 = %.4f\n k6 = %.4f\n k3 = %.4f\n', opt_gains);
global k4 k5 k7 k8 k9 k1 k2 k6 k3
k4 = opt_gains(1); k5 = opt_gains(2);
k7 = opt_gains(3); k8 = opt_gains(4); k9 = opt_gains(5);
k1 = opt_gains(6); k2 = opt_gains(7);
k6 = opt_gains(8); k3 = opt_gains(9);
global x1d x2d x3d x6d x9d x10d x12d x4d x5d x7d x8d
[t, X] = simulate_rocket();
function J = cost_function(gains)
global k4 k5 k7 k8 k9 k1 k2 k6 k3 x1d x2d x3d x6d x9d x10d x12d x4d x5d x7d x8d
k4 = gains(1); k5 = gains(2); k7 = gains(3); k8 = gains(4); k9 = gains(5);
k1 = gains(6); k2 = gains(7);
k6 = gains(8); k3 = gains(9);
[~, X] = simulate_rocket();
function [t, X] = simulate_rocket()
global md xcmd ic jxd jyd jzd df
global k4 k5 k7 k8 k9 k1 k2 k6 k3 x1d x2d x3d x6d x9d x10d x12d x4d x5d x7d x8d yI
[t, X] = ode45(@(t,X) model6dof(X,t), tspan, X0);
function [dx]=model6dof(X,t)
global k4 k5 k7 k8 k9 k1 k2 k6 k3 x1d x2d x3d x6d x9d x10d x12d x4d x5d x7d x8d
A(2,1) = -CFI*STE+SFI*SPS*CTE;
A(2,2) = CFI*CTE+SFI*SPS*STE;
A(3,1) = SFI*STE+CFI*SPS*CTE;
A(3,2) = -SFI*CTE+CFI*SPS*STE;
AI=[A(1,1) A(1,2) A(1,3);...
Va=sqrt(x1b^2+x2b^2+x3b^2);
p=0.699*exp(-0.00009*x11);
rho=p/(0.1921*(T+273.1));
uv = k7*desc*(x1*AI(1,1)+x2*AI(1,2)+x3*AI(1,3));
ux = k8*desc*hx+k9*desc*Vxt;
uy = k8*desc*hy+k9*desc*Vyt;
uz = k8*desc*hz+k9*desc*Vzt;
u3 = 1.*ut0-1*uv-ux*AI(1,1)-uy*AI(1,2)-uz*AI(1,3);
upi = un0-ux*AI(2,1)-uy*AI(2,2)-uz*AI(2,3)-1*k4*(x9-x9d)-k3*(x6-x6d);
u4 = -1.*k2*(x7-x7d)-k1*(x4-x4d);
[yI,d1,d2,d3,d4]= bloc2(x1e,x1f,xxa,xxb);
dlt=(del(2)+del(4)-del(1)-del(3))/2;
uya = -1.*k6*(x8-x8d)-k5*(x5-x5d)+ux*AI(3,1)+uy*AI(3,2)+uz*AI(3,3);
C1=[cos(x17) 0 -sin(x17);
x4to6dot=[pdot;qdot;rdot];
x7dd=p+q*sin(fi)*tan(ps)+r*cos(fi)*tan(ps);
x8dd=q*cos(fi)-r*sin(fi);
x9dd=q*sin(fi)*sec(ps)+r*cos(fi)*sec(ps);
x7to9dot=[x7dd;x8dd;x9dd];
function CD = dragcoefvar(Re)
f1=(24.*Re^(-1))^(10)+(21.*Re^(-0.67))^(10)+(4.*Re^(-0.33))^(10)+0.4^(10);
f2=1./((0.148*Re^(0.11))^(-10)+0.5^(-10));
f3= (1.57d8*Re^(-1.625))^(10);
f4=1./((6.d-17*Re^(2.63))^(-10)+0.2^(-10));
CD=(1./((f1+f2)^(-1)+f3^(-1))+f4)^(0.1);
function [xcm,jx,jy,jz] = meca(m)
global md xcmd jxd jyd jzd
xcm=interp1(mid,xcmd,ami,'pchip');
jx= interp1(mid,jxd,ami,'pchip');
jy= interp1(mid,jyd,ami,'pchip');
jz= interp1(mid,jzd,ami,'pchip');
function [y,d1,d2,d3,d4] = bloc2(x,xd,xa,xb)
function y = ymod(x, xd, a, b, ymax)