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
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.
Thank you for your reply.
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))
Thank you for your reply.
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.