I have used the successive convex approximation to transform the problem into a convex optimization problem, but there is still something wrong when solving the problem by CVX with MOSEK. Message of CVX is as follows:
Calling Mosek 9.1.9: 3900 variables, 1802 equality constraints
MOSEK Version 9.1.9 (Build date: 2019-11-21 11:34:40)
Copyright © MOSEK ApS, Denmark. WWW: mosek.com
Platform: Windows/64-X86
Problem
Name :
Objective sense : min
Type : CONIC (conic optimization problem)
Constraints : 1802
Cones : 800
Scalar variables : 3900
Matrix variables : 0
Integer variables : 0
Optimizer started.
Presolve started.
Eliminator - tries : 0 time : 0.00
Lin. dep. - tries : 0 time : 0.00
Lin. dep. - number : 0
Presolve terminated. Time: 0.00
Optimizer terminated. Time: 0.05
Interior-point solution summary
Problem status : DUAL_INFEASIBLE
Solution status : DUAL_INFEASIBLE_CER
Primal. obj: -1.0873703084e-08 nrm: 1e+00 Viol. con: 0e+00 var: 0e+00 cones: 0e+00
Optimizer summary
Optimizer - time: 0.05
Interior-point - iterations : 0 time: 0.01
Basis identification - time: 0.00
Primal - iterations : 0 time: 0.00
Dual - iterations : 0 time: 0.00
Clean primal - iterations : 0 time: 0.00
Clean dual - iterations : 0 time: 0.00
Simplex - time: 0.00
Primal simplex - iterations : 0 time: 0.00
Dual simplex - iterations : 0 time: 0.00
Mixed integer - relaxations: 0 time: 0.00
Status: Unbounded
Optimal value (cvx_optval): +Inf
Is CVX unable to solve this problem? My code is as follows:
cvx_begin
cvx_solver mosek
variable traj(para.T+1, 2)
variable u(1, para.T)
variable v(1, para.T)
variable t(1, para.T)
expression lower_bound(1, para.T)
expression D(1, para.T)
for ii=1:para.T
lower_bound(ii) = coe3(ii)*u(ii) + coe4(ii)*v(ii);
D(ii)= coe5(ii)*t(ii) + coe6(ii)*v(ii);
end
maximize(1/para.T*(sum((lower_bound)-D)))
subject to
80 <= u;
40 <= v;
80 <= t;
for jj=1:para.T
pow_pos(norm(traj(jj, :)-para.place_u(1:2)),2)+6400+u0(jj)^2-2*u0(jj)u(jj)<=0;
pow_pos(norm(traj(jj, :)-para.place_R(1:2)),2)+1600+v0(jj)^2-2v0(jj)v(jj)<=0;
pow_pos(norm(traj(jj, :)-para.place_e(1:2)),2)+6400+t0(jj)^2-2t0(jj)*t(jj)<=0;
end
for ii=1:para.T
pow_pos(norm(traj(ii+1,:)-traj(ii, :)),2)<=para.Vmax^2;
end
cvx_end
Thanks for your help.