You are now following this question
- You will see updates in your followed content feed.
- You may receive emails, depending on your communication preferences.
Error flag for infeasibility in nonlinear mpc.
3 views (last 30 days)
Show older comments
I am getting the error flag -2 for my nonlinear mpc design despite their being no constraints. If there is no constraints, how is there infeasibility? The only way I can get it to be feasible is to make the intial condition the exact same as the reference. If there is deviation the problem is infeasible
clear all
nx = 4;
ny = 2;
nu = 3;
nlobj = nlmpc(nx,ny,nu);
nlobj.Ts = 0.1;
nlobj.PredictionHorizon = 10;
nlobj.ControlHorizon = 10;
nlobj.Model.StateFcn = @mystateFunctionREDUCED;
nlobj.Model.IsContinuousTime = true;
nlobj.Model.NumberOfParameters = 5;
rho = 0.1;
l = 1/2*1*rho^2;
%T = params(3);
g = 9.81;
J = 0.015;
m = 2;
nlobj.Model.OutputFcn = @OutputFcn
nlobj =
nlmpc with properties:
Ts: 0.1000
PredictionHorizon: 10
ControlHorizon: 10
Dimensions: [1x1 struct]
Model: [1x1 struct]
States: [1x4 struct]
OutputVariables: [1x2 struct]
ManipulatedVariables: [1x3 struct]
MeasuredDisturbances: []
Weights: [1x1 struct]
Optimization: [1x1 struct]
Jacobian: [1x1 struct]
Passivity: [1x1 struct]
;
x0 = [1;0;pi/8;0];
mv = [m*g+1; 0; 0];
lastMV = mv;
%validateFcns(nlobj, x0, u0, [], {rho,l,g,J,m});
nloptions = nlmpcmoveopt;
nloptions.Parameters = {rho,l,g,J,m};
Duration = 1;
Ts = 0.01;
xHistory = x0';
yref = [1;pi/9];
%nlobj.Weights.OutputVariables = [3 3];
%nlobj.Weights.ManipulatedVariablesRate = 0.1;
% nlobj.States(1).Min = 0;
% nlobj.States(1).Max = 20;
% nlobj.States(3).Min = 0;
% nlobj.States(3).Max = pi;
%nlobj.Optimization.CustomIneqConFcn = "myIneqConFunctionreduced";
nlobj.Weights.ManipulatedVariablesRate = [0 0 0];
nlobj.Weights.OutputVariables = [1 1];
%nlobj.Weights.ECR = 0;
Tarray = [];
Uarray = [];
for k = 1:(Duration/Ts)
xk = xHistory(k,:);
% Compute optimal control moves
[mv,nloptions,info] = nlmpcmove(nlobj,xk,lastMV,yref',[],nloptions);
info
%disp(mv)
% Implement first optimal control move
ODEFUN = @(t,xk) statefcn(xk,mv);
[TOUT,XOUT] = ode45(ODEFUN,[0 Ts], xHistory(k,:)');
x0 = mystateFunctionREDUCED(x0,mv,rho,l,g,J,m)*Ts+x0;
uHistory(k+1,:) = mv';
lastMV = mv;
%[t,y] = ode15s(@mystateFunction,[0 Ts],[2 0]);
%T = (m*x0(1)*x0(4)^2-m*g*sin(x0(3))+mv(1)*sin(x0(3)+x0(5))-m*rho/l*mv(3))/(1+m*rho^2/l);
%Tarray = [Tarray T];
Uarray = [Uarray mv];
xHistory(k+1,:) = XOUT(end,:);
%opt.Slack0
%T
%par = m*x0(1).*x0(4).^2-m*g*sin(x0(3))
% Save plant states
%xHistory = [xHistory x0];
end
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 4.5082e-04
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0022
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0011
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0016
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0011
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0026
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 9.0921e-04
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0043
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0015
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0016
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0012
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0043
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 376
Cost: 0.0038
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0039
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0038
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0044
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0033
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0058
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 368
Cost: 0.0070
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0078
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0080
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0135
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0106
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0131
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0106
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0147
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0164
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0207
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0126
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0370
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0264
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0391
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0292
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0378
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0405
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0364
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0793
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0909
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0338
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.1120
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0730
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.1066
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 396
Cost: 0.2542
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0513
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 49
Cost: 2.7287
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0394
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 371
Cost: 1.3647
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.0235
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 1.0635
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 3.3331e-15
ExitFlag: -2
Iterations: 127
Cost: 0.3550
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 3.1137e-05
ExitFlag: -2
Iterations: 400
Cost: 0.2180
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 6.4044e-07
ExitFlag: -2
Iterations: 400
Cost: 0.1319
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 1.4371e-06
ExitFlag: -2
Iterations: 400
Cost: 0.2906
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 1.9936e-05
ExitFlag: -2
Iterations: 400
Cost: 0.2929
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.4622
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.4848
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.5704
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 3.0889e-15
ExitFlag: -2
Iterations: 41
Cost: 7.1638
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 1.1860e-04
ExitFlag: -2
Iterations: 400
Cost: 1.3670
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 1.3120e-05
ExitFlag: -2
Iterations: 400
Cost: 1.0134
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 1.0949
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 0.6708
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 365
Cost: 1.6059
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 7.2360
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 24
Cost: 9.9478
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 149
Cost: 22.8306
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 197
Cost: 5.6771
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 33
Cost: 34.2812
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 2.9394
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 5.7473e-21
ExitFlag: -2
Iterations: 172
Cost: 84.2870
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 3.8706e-05
ExitFlag: -2
Iterations: 165
Cost: 10.4991
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 3.8645e-05
ExitFlag: -2
Iterations: 4
Cost: 12.4464
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 1.9083e-05
ExitFlag: -2
Iterations: 48
Cost: 10.5646
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 4.5863e-04
ExitFlag: -2
Iterations: 400
Cost: 24.6209
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 1.2483e-05
ExitFlag: -2
Iterations: 83
Cost: 6.9594
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 3.0035e-05
ExitFlag: -2
Iterations: 400
Cost: 4.8111
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 5.2929e-05
ExitFlag: -2
Iterations: 400
Cost: 11.6251
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 2.4589e-04
ExitFlag: -2
Iterations: 400
Cost: 5.1267
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 1.6663e-04
ExitFlag: -2
Iterations: 367
Cost: 18.6652
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 2.0743
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 16.6244
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 20.4956
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 157
Cost: 9.0522
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 8.0570
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 313
Cost: 7.4180
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 4.9903
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 16.4311
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 3.9882
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 75.0001
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 3.7069
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 135
Cost: 22.3938
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 4.2439
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 3.4832
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 5.3102
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 6.0702
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0
ExitFlag: -2
Iterations: 400
Cost: 8.5846
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 8.2603e-18
ExitFlag: -2
Iterations: 170
Cost: 1.8330
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 3.8335e-04
ExitFlag: -2
Iterations: 400
Cost: 5.1176
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 4.1342e-05
ExitFlag: -2
Iterations: 400
Cost: 27.6394
info = struct with fields:
MVopt: [11x3 double]
Xopt: [11x4 double]
Yopt: [11x2 double]
Topt: [11x1 double]
Slack: 0.0223
ExitFlag: -2
Iterations: 252
Cost: 110.2286
function z = mystateFunctionREDUCED(x,u,rho,l,g,J,m)
z = zeros(4,1);
% rho = params(1);
% l = params(2);
% %T = params(3);
% g = params(3);
% J = params(4);
% m = params(5);
z(1) = x(2);
z(2) = (rho/l*u(3)+(rho^2/l)*(m*x(1)*x(4)^2-m*g*sin(x(3)+u(1)*sin(x(3)+u(2)))))/(1+rho^2*m/l);
z(3) = x(4);
z(4) = (-1/x(1))*(2*x(2)*x(4)+g*cos(x(3)))+1/(m*x(1))*u(1)*cos(x(3)+u(2));
end
function y = OutputFcn(x,u,rho,l,g,J,m)
y = zeros(2,1);
y(1) = x(1);
y(2) = x(3);
end
function f = statefcn(in1,in2)
%QuadrotorStateFcn
% F = QuadrotorStateFcn(IN1,IN2)
% This function was generated by the Symbolic Math Toolbox version 24.1.
% 09-Jan-2025 19:28:44
rho = 0.1;
l = 1/2*1*rho^2;
%T = params(3);
g = 9.81;
J = 0.015;
m = 2;
x = in1;
u = in2;
z(1) = x(2);
z(2) = (rho/l*u(3)+(rho^2/l)*(m*x(1)*x(4)^2-m*g*sin(x(3)+u(1)*sin(x(3)+u(2)))))/(1+rho^2*m/l);
z(3) = x(4);
z(4) = (-1/x(1))*(2*x(2)*x(4)+g*cos(x(3)))+1/(m*x(1))*u(1)*cos(x(3)+u(2));
f = [z(1);z(2);z(3);z(4)];
end
Answers (0)
See Also
Categories
Find more on Model Predictive Control 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!An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom(English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)