product of variables in objective function - MathOverflow most recent 30 from http://mathoverflow.net 2013-05-24T15:51:46Z http://mathoverflow.net/feeds/question/107355 http://www.creativecommons.org/licenses/by-nc/2.5/rdf http://mathoverflow.net/questions/107355/product-of-variables-in-objective-function product of variables in objective function Guillermo 2012-09-17T02:39:47Z 2012-09-17T06:20:53Z <p>Hi there,</p> <p>I'm looking for a solver that allows me to solve an optimization problem of the form min x1*x2*x3,...,xn subject to some linear constraints. I've used gurobi before, however I couldn't find the way to include products in the objective function as well as in constraints.</p> <p>Cheers</p> <p>Guillermo</p> http://mathoverflow.net/questions/107355/product-of-variables-in-objective-function/107358#107358 Answer by Dima Pasechnik for product of variables in objective function Dima Pasechnik 2012-09-17T05:34:00Z 2012-09-17T05:34:00Z <p>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 <a href="http://users.isy.liu.se/johanl/yalmip/pmwiki.php?n=Main.WhatIsYALMIP" rel="nofollow">YALMIP</a>.</p> http://mathoverflow.net/questions/107355/product-of-variables-in-objective-function/107360#107360 Answer by joro for product of variables in objective function joro 2012-09-17T06:20:53Z 2012-09-17T06:20:53Z <p>Recently discovered <a href="http://www.g12.csse.unimelb.edu.au/minizinc/" rel="nofollow">minizinc</a></p> <blockquote> <p>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. </p> </blockquote> <p>There are several backends for the translated problem (MIP, SAT, etc).</p> <p>Here is how something similar to your question will look like in minizinc:</p> <pre><code>var int: a; var int: b; constraint a + b &lt;= 10; constraint a&gt;0; constraint b&gt;0; solve maximize a*b; output [ show([a,b]) ]; ======= [5, 5] </code></pre>