Thanks! Your answer is very detailed. Here I have another question, can’t CVX handle generalized posynomials inequality constraints? Here is a generalized geometric program (GGP) given by Stephen Boyd:

Of course, it can be easily solved by converting GGP to GP, but in Boyd’s paper, he says,
In my opinions, I think it means that the Solver can convert GGP to GP automatically, both objective and constraints. However, Matlab gave me the error information:
clc
clear
cvx_begin gp
variable x
variable y
variable z
minimize max(x + z, 1 + (y + z)^0.5)
subject to
max(y, z^2) + max(y * z, 0.3) - 1 <= 0;
3 * x * y * z^-1 == 1;
cvx_end
错误使用 cvxprob/newcnstr (line 99)
Constraints may not involve internal, read-only variables.
出错 <= (line 21)
b = newcnstr( evalin( ‘caller’, ‘cvx_problem’, ‘[]’ ), x, y, ‘<=’ );
出错 Example3 (line 9)
max(y, z^2) + max(y * z, 0.3) - 1 <= 0;
The inequality constraint can’t be passed.
Later I tried another inequality constraints, such as:
Matlab shows:
x + y + z - min(x^0.5 * y^0.5, (1 + x * y)^(-0.3) ) <= 0 ;
错误使用 + (line 83)
Disciplined convex programming error:
Illegal operation: {log-convex} - {log-concave}
出错 - (line 21)
z = plus( x, y, true, cheat );
出错 Example3 (line 10)
x + y + z - min(x^0.5 * y^0.5, (1 + x * y)^(-0.3) ) <= 0 ;
The inequality constraints still can’t pass. So, must I have to write constraints in the form of GP? Thanks.