Optimization of a Specific Polynomial I have a polynomial:
$$f(x_1 \dots x_n) = \prod_{i=1}^n (c_ix_i + 1) - \frac{1}{2}c_0\sum_{i=1}^nx_i^2$$
Given some values for $c_0 \dots c_n$, I'd like to choose the maximizing values for $x_1 \dots x_n$.  I'm not concerned with the actual maximum value of $f(x_1 \dots x_n)$, only the values of the inputs $x_1 \dots x_n$, so if there is an equivalent function maximized at the same values I value the solution just as much.  The values for any $c$ and any $x$ can be any real value.
I'm not familiar with any easy ways to do this with a polynomial of this type.  My best guess is gradient ascent, but I'm not sure the function is convex. 
Can anyone tell me if the function is convex, or failing that, if there's another way to find an (approximate) global argmax?
 A: As noted by Pietro in the comments only a few combinations of $n$ and coefficients will even have a finite maximum, unless you bound your domain.  For example, consider $c_0=-2$ and all other $c_i=0$.  Even this is unbounded above.
Now, let's assume you either bound your domain, or have ensured that the polynomial is bounded above. The problem of finding the argmax is computationally "difficult" for large $n$ (as in: the cryptography guys worry about this stuff a lot at least in finite fields), so numerical optimization methods do probably make sense.  Assuming your coefficients are sufficiently generic, a sequential quadratic programming technique will definitely work much better than gradient-climbing.
Your main problem is going to be the perennial one of having lots of local argmaxes without necessarily finding the best of them.  You'll have to find them by combining your local optimization with something like a simulated annealer or differential evolution.  In principle, with a polynomial, you get to count roots and therefore know whether you have them all.
