Dear all,
I’m trying to solve a nested/multi-level convex optimization problem as below.
The decision variable includes z_v, alpha_1, …, alpha_r. (S = {1,2,…r}) The function g_il and eta_jv_{j} are concave functions with respect to corresponding alphas.
I defined incomplete specifications for the function g_il and eta_jv_{j} as following.
function cvx_optval = g_il(alpha_i,alpha_l,h_i,h_l,sigma_i_inv,sigma_l_inv)
[s,~] = size(h_i);
cvx_begin
variables x_i(s) x_l(s);
minimize(0.5alpha_iquad_form(x_i-h_i,sigma_i_inv) + 0.5alpha_lquad_form(x_l-h_l,sigma_l_inv));
subject to
x_l <= x_i;
cvx_end
function cvx_optval = min_g_il(alpha,i,h,sigma_inv)
[r,s]=size(h);
cvx_optval = 100000;
for l = 1:r
if l~=i
cvx_optval = min(cvx_optval,g_il(alpha(i),alpha(l),h(i,:)’,h(l,:)’,sigma_inv{i},sigma_inv{l}));
end
end
function cvx_optval = eta_jl(alpha_j,alpha_l,h_j,h_l,sigma_j,sigma_l)
[s,~]=size(h_j);
cvx_optval = 100000;
for k = 1:s
cvx_begin
variables x_j x_l;
minimize(0.5alpha_j(x_j-h_j(k))^2/sigma_j(k)^2 + 0.5alpha_l(x_l-h_l(k))^2/sigma_l(k)^2);
subject to
x_l >= x_j;
cvx_end
cvx_optval = min(cvx_optval, 0.5alpha_j(x_j-h_j(k))^2/sigma_j(k)^2 + 0.5alpha_l(x_l-h_l(k))^2/sigma_l(k)^2);
end
In addition, the outer optimization problem (problem P_v) is as below
function cvx_optval = sub_cvx_prob(h,sigma,sigma_inv,v,nonPareto)
[r,s] = size(h);
cvx_begin
variable z;
variable p® nonnegative;
maximize(z);
subject to
for i = 1:r
if not(ismember(i,nonPareto))
z <= min_g_il(p,i,h,sigma_inv);
else
l = v(find(i==nonPareto));
z <= eta_jl(p(i),p(l),h(i,:)’,h(l,:)’,sigma(i,:)’,sigma(l,:)’);
end
end
sum§ <= 1;
cvx_end
The problem is when I substitute numerical alpha into the g_il function, it works well. But when the problem is nested, then it raises the error
" Cannot perform the operation: {real affine} .* {convex}"
I found rare posts related to nested/embeded/multi-level convex optimization and the DCP rule sets seem a little tricky for me currently. Could anyone can help me figure out this problems? Please let me know if you want any further information. Thanks in advance.
Best,
Weizhi