# How to express Product of many terms in Cvx

My objective function is :

`````` minimize  \prod (t_i ^ w_i)
``````

where

`````` t_i is optimization variable , i index from 1 to n
& w_i is a known integer
``````

i.e. t1^w1 * t2^w2 …tn^wn

As written, it is not convex, so CVX cannot solve it. It is mathematically equivalent to

``````minimize(geo_mean(t,w))
``````

however, this is not convex either, because the quantity is concave, not convex.

If you are certain that t is positive, you might consider solving this as a geometric program:

``````cvx_begin gp
variable t(n)
minimize(prod(t.^w))
``````

But note that the restrictions on the kinds of constraints you can now impose on `t` are quite different than they are with a standard convex program. Most of the functions CVX implements are not supported for geometric programs. Please read the CVX documentation on geometric programming mode, as well as other introductory texts on geometric programming.

Actually yes, i am 100% sure that all t elements are positive.

The formulation is taken from one of Stephen Boyd Papers: Kindly review the highlighted paragraph (in page 3 and 4) for the original formulation and try to advice me how to implement this geometric programming optimization problem in CVX .

``````http://www.mediafire.com/view/x7uzxf12eqehza8/Boyd%2520paper.pdf
``````

By the way, how the objective function is equivalent to the one u mentioned :

`` minimize(sum(t.^w))``

Actually yes, i am 100% sure that all t elements are positive.

The formulation is taken from one of Stephen Boyd Papers: Kindly review the highlighted paragraph (in page 3 and 4) for the original formulation and try to advice me how to implement this geometric programmi

By the way :
you suggested that the i could use:

``````cvx_begin gp
variable t(n)
minimize(sum(t.^w))
``````

instead of the product term. Is this by using the Arithmetic mean (AN)- Geometric mean(GM) approximation where :

``GM  smaller than or equal  AN``

I can’t review papers for you, sorry. But if it is indeed a geometric program, you should be able to implement it in CVX. I apologize for the typo, though, I should have written `prod(t.^w)` above. I will edit that.