2
$\begingroup$

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.

$\endgroup$
1
  • $\begingroup$ What type of variables are $x_i$? $\endgroup$
    – RobPratt
    Commented Mar 10, 2021 at 16:59

2 Answers 2

1
$\begingroup$

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.

$\endgroup$
2
  • $\begingroup$ Does YALMIP support multiobjective optimization (possibly only linear)? $\endgroup$
    – joro
    Commented Sep 17, 2012 at 6:25
  • $\begingroup$ 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. $\endgroup$ Commented Sep 17, 2012 at 10:02
1
$\begingroup$

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]
$\endgroup$
1
  • $\begingroup$ Hm, in your case you need "solve minimize ....;" $\endgroup$
    – joro
    Commented Sep 17, 2012 at 6:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .