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
    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
    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$ 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
    Sep 17, 2012 at 6:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.