product of variables in objective function - MathOverflow most recent 30 from http://mathoverflow.net2013-05-24T15:51:46Zhttp://mathoverflow.net/feeds/question/107355http://www.creativecommons.org/licenses/by-nc/2.5/rdfhttp://mathoverflow.net/questions/107355/product-of-variables-in-objective-functionproduct of variables in objective functionGuillermo2012-09-17T02:39:47Z2012-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#107358Answer by Dima Pasechnik for product of variables in objective functionDima Pasechnik2012-09-17T05:34:00Z2012-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#107360Answer by joro for product of variables in objective functionjoro2012-09-17T06:20:53Z2012-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 <= 10;
constraint a>0;
constraint b>0;
solve maximize a*b;
output [ show([a,b]) ];
=======
[5, 5]
</code></pre>