>> sdpvar in out>> P = optimizer([-1 <= out <= 1],(out-in)^2,[],in,out);
function out = myfunction(in);
sdpvar x
solvesdp([-1 <= x <= 1],(x-in));
out = double(x);
function U = getCorPosU(index,modell)
%#eml
index = makeVec(index);
%x = makeVec(x);
numPosX = modell.numPosX;
numPosU = modell.numPosU;
n = length(numPosX);
m = length(numPosU);
k = n+m;
%v_l = getHQ(x,modell);
v_border = makeVec([numPosX numPosU]);
v_lp1 = min(index+1,v_border);
s_v = ind2pos(index,modell);
s_vp1 = ind2pos(v_lp1,modell);
dS_vl = getCorPosDerOnHQ(index,modell);
Delta = getDelta_NonRecursive(k);
Omega = getOmega_NonRecursive(k,s_v,s_vp1);
omega = getMultilinearMonomials_NonRecursive(k,s_v);
Gamma = dS_vl*Delta*Omega;
T_a = getTa(k);
T_b = getTb(k);
T_c = getTc(k);
ax = Gamma*T_a*omega;
bx = Gamma*T_b*T_c*omega;
U = sdpvar(m,1);
for i = 1:m
F = [U <= max(modell.S(n+i,:)) , U >= min(modell.S(n+i,:)) , s_v(1:n)'*ax + s_v(1:n)'*bx*U <= 0 , ax'*s_v(1:n) + U'*bx'*s_v(1:n) <= 0];
solvesdp(F);
U(:,i)=U;
end
end
U = sdpvar(m,1);for i = 1:m
F = [U <= max(modell.S(n+i,:)) , U >= min(modell.S(n+m,:)) , s_v(1:n)'*ax + s_v(1:n)'*bx*U <= 0 , ax'*s_v(1:n) + U'*bx'*s_v(1:n) <= 0]; solvesdp(F); U(:,i)=U;end
U = sdpvar(m,1);
Uresult = [];
for i = 1:m
F = [U <= max(modell.S(n+i,:)) , U >= min(modell.S(n+m,:)) , s_v(1:n)'*ax + s_v(1:n)'*bx*U <= 0 , ax'*s_v(1:n) + U'*bx'*s_v(1:n) <= 0]; solvesdp(F); Uresult = [Uresult double(U)];end
U = Uresult ;
rx = getRX(x,modell)
>> setup>> tic;sim('MPCSimulation');tocElapsed time is 0.620399 seconds.
>> tic;sim('MPCSimulation');tocElapsed time is 1.528139 seconds.