# Minimizing product subject to linear constraints

I am looking for a solver that allows me to solve an optimization problem of the form

$$\begin{array}{ll} \text{minimize} & x_1 x_2 \cdots x_n\\ \text{subject to} & \color{gray}{\text{(some linear constraints)}}\end{array}$$

I've used Gurobi before. However, I couldn't find the way to include products in the objective function as well as in the constraints.

• What type of variables are $x_i$? – RobPratt Mar 10 at 16:59

This is a hard problem (maximizing the product is a bit better one, as sometimes one can take $\log$ of the objective function, and it becomes concave...). Your best shot might be to use the sum of squares approach for polynomial optimization, as implemented e.g. in YALMIP.

• Does YALMIP support multiobjective optimization (possibly only linear)? – joro Sep 17 '12 at 6:25
• not that I know for sure, but I doubt this. Multiobjective optimization is very hard, in general, as you'd be computing a multidimensional object. – Dima Pasechnik Sep 17 '12 at 10:02

Recently discovered minizinc

MiniZinc is a medium-level constraint modelling language. It is high-level enough to express most constraint problems easily, but low-level enough that it can be mapped onto existing solvers easily and consistently. It is a subset of the higher-level language Zinc. We hope it will be adopted as a standard by the Constraint Programming community. FlatZinc is a low-level solver input language that is the target language for MiniZinc. It is designed to be easy to translate into the form required by a solver.

There are several backends for the translated problem (MIP, SAT, etc).

Here is how something similar to your question will look like in minizinc:

var int: a;
var int: b;
constraint a + b <= 10;
constraint a>0;
constraint b>0;
solve maximize a*b;
output [ show([a,b]) ];
=======
[5, 5]

• Hm, in your case you need "solve minimize ....;" – joro Sep 17 '12 at 6:26