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.