Hi all,
I am a newbie to CVX tool and trying to implement a problem (Snapshot Attached). I have tried many ways but unable to find the solution. I want to solve it as a Linear Program.
lpi_hat =[5 0;0 5];
lpv_hat=[-1 0 -1 0 -1 0 -1 0 -1 0;0 -1 0 -1 0 -1 0 -1 0 -1];
x_v= [1;4;3;4;5;2;3;1;1;1];
x_j=[2;5];
d=[4;4];
cvx_begin
variable x_p(2)
minimize (-lpi_hat.*x_p-lpv_hat.*x_v)
subject to
(x_p)-(x_j)<=d
cvx_end
I am continuously facing a problem like
"Error using .* (line 46)
Matrix dimensions must agree.
Error in CVX_Examplr (line 11)
minimize (-lpi_hat.*x_p-lpv_hat.*x_v)"
I will be quite thankful if someone can help me in this regard.

You should not be using .*
Perhaps you want
minimize (norm(-lpi_hat*x_p-lpv_hat*x_v,1))
or
minimize (norm(-lpi_hat*x_p-lpv_hat*x_v,inf))
Using either of these, your program will run without error message. However, You have not correctly implemented the constraint in the image. I believe you want
x_p.^2 - x_j.^2 < = d^2
However, that is a convex quadratic constraint, not a linear constraint. It can be solved as is in CVX. . However, it can instead be transformed into two linear (affine) constraints, which when using the one norm or infinity norm in the objective function, will result in a Linear Program.
x_p <= sqrt(x_j.^2 + d^2)
- x_p <= sqrt(x_j.^2 + d^2)
And you forgot to include the constraint
maxa <= x_p <= maxb
So the complete program is
cvx_begin
variable x_p(2)
minimize (norm(-lpi_hat*x_p-lpv_hat*x_v,1))
x_p <= sqrt(x_j.^2 + d^2)
- x_p <= sqrt(x_j.^2 + d^2)
maxa <= x_p <= maxb
cvx_end
Or perhaps you want
minimize (norm(-lpi_hat*x_p-lpv_hat*x_v,inf))
for the objective.
Edit: I changed d
to d^2
, so as to match your Snapshot.
1 Like
I am highly thankful for the response. The code perfectly worked for me.