Thank you so much for the replying. But I did have convex quadratic cost function. The binary variables only occur in the constraints.
I past my partial code here.
epsilon = sdpvar(1,1);
uk = sdpvar(2,N);
duk = sdpvar(2,N-1);
xk = sdpvar(6,N);
z1k = binvar(1,4);
z2k = binvar(1,4);
cost = (xk(:,N)-xDesire(:,N))'*Q*(xk(:,N)-xDesire(:,N))+q*epsilon;
constr = [xk(:,1)==x0, uk(:,N)==u0, epsilon >= 0, ...
uk(:,1)==uk(:,N)+duk(:,N-1), ...
duk(1,N-1) <= 1.5, duk(1,N-1) >= -1.5, duk(2,N-1) <= 0.8, duk(2,N-1) >= -0.8];
for i=1:N
if i < N
cost = cost + (xk(:,i)-xDesire(:,i))'*Q*(xk(:,i)-xDesire(:,i))+uk(:,i)'*R*uk(:,i)+duk(:,i)'*duk(:,i);
constr = constr+ [...
xk(1,i+1) == xk(1,i)+2*(a+b)*mu*Fzf*uk(2,i)*dt/(m*b)-xk(3,i)*v0*dt, ...
xk(2,i+1) == xk(2,i)+2*mu*Fzf*uk(1,i)*dt/m, ...
xk(3,i+1) == xk(3,i)+2*a*mu*Fzf*uk(2,i)*dt/I-2*b*Cr*xk(1,i)*dt/(I*v0)+2*b*Cr*(b+p)*xk(3,i)*dt/(I*v0), ...
xk(4,i+1) == xk(4,i)+xk(3,i)*dt,...
xk(5,i+1) == xk(5,i)+v0*xk(4,i)*dt+(xk(1,i)-p*xk(3,i))*dt, ...
xk(6,i+1) == xk(6,i)+xk(2,i)*dt, ...
Hu*uk(:,i) <= Ku ...
Hx*xk(5,i) <= Kx,...
];
end
if i < N-1
constr = constr+ [...
uk(1,i+1) == uk(1,i)+duk(1,i), ...
uk(2,i+1) == uk(2,i)+duk(2,i), ...
duk(1,i) <= 1.5, duk(1,i) >= -1.5, ...
duk(2,i) <= 0.8, duk(2,i) >= -0.8, ...
];
end
if (i >= k(1)) && (i <= k(1)+1)
constr = constr+ [xk(6,i) < aheadPoint(1)+32*z1k(i-k(1)+1), ...
-xk(5,i)+leftWidth<=32*z2k(i-k(1)+1)+32*(1-z1k(i-k(1)+1))+epsilon, ...
xk(5,i)+rightWidth<=32*(1-z2k(i-k(1)+1))+32*(1-z1k(i-k(1)+1))+epsilon];
elseif (i > k(1)+1) && (i < k(2))
constr = constr+ [-xk(5,i)+leftWidth<=30*z2k(2)+epsilon, ...
xk(5,i)+rightWidth<=30*(1-z2k(2))+epsilon];
elseif (i >= k(2)) && (i <= k(2)+1)
constr = constr+ [-xk(6,i)<-aheadPoint(2)+32*z1k(i-k(2)+3), ...
-xk(5,i)+leftWidth<=32*z2k(2)+32*(1-z1k(i-k(2)+3))+epsilon, ...
xk(5,i)+rightWidth<=32*(1-z2k(2))+32*(1-z1k(i-k(2)+3))+epsilon];
end
end