How to implement the proportional fairness constraints?

as it shows in the title
\begin{array}{l}
\min ;\sum\limits_{i = 1…N} {{u_i}} = \sum\limits_{i = 1…N} {\frac{1}{{{x_i}}}} \\
s.t.;;{u_i}:{u_j} = 3,;\forall i,j \in N,i > j > 0
\end{array}
I tried the transformation u_i - 3u_j == 0, however, cvx says Illegal operation: {convex} - {convex}

so any one can help me? Thanks very much!

Is this problem convex? It does not seem so.

the target function is a convex function and the constraints are linear if the constraints is transformed to u_i-3u_j == 0

I don’t understand what the actual optimization problem you’re trying to formulate is. Perhaps you can show us your attempted CVX code. Presuming u>=0, how about minimize(sum(inv_pos(u))) , subject to linear constraints in u, if you really have only linear constraints in u?

The problem is with the statements u_i=inv_pos(x_i). If you use assignment, then CVX is correct in disallowing {convex}-{convex}. If you use equality constraints u_i==inv_pos(x_i), then CVX is correct to disallow it {affine}=={convex}. Either way, this problem is not convex.

Here is my cvx code and the lamda is a vector have the same dimension with r and it should be less than r component wise.

cvx_begin quiet
variable r(n)
expression u(n)
for i = 1:n
u(i) = inv_pos(r(i), -1) + inv_pos(r(i)-lamda(i), -1);
end
minimize sum(u)
subject to
sum® <= 1;
r >= 0;
for j = 1:n
for k = 1:n
u(j) - 3*u(k) == 0;
end
end
cvx_end