I would like to linearize a product, for example $a*b$. if I solve my solution in log space, I can formulate it as $a+b$ and when my final output is returned, remember to convert back to original space by finding $e^a, e^b$.
Now, further suppose that I have integer constraints for binary assignment, where $a,b$ fall in the set {0,1}. By using $log_2{x}$ I can use set{1,2} rather than set{0,1}. This is because $log_2{1}=0$ and $log_2{2}=1$. So now, if I revisit the original problem of $a*b$ and I want to find if both $a,b$ are true, I can solve this in log space as $z= a+b$ remembering to subtract one from each variable to convert back to binary variables in the original space, where $z$ would indicate if both $a,b$ were true else False.
Often times, in MILP problems there will be multiple objective terms, which I believe that the MILP solver anticipates adding together. Consider my objective terms, in original space as $a*b + x*y$. Taking the logarithm, $log_2{(a*b + x*y)}$. However, I do not believe that this can be simplified any further. Because the log cannot be removed from the equation, I cannot so eloquently expunge it from the solver's logic. And MILP solvers are not equipped to evaluate log expressions.
The first workaround that comes to mind is using a geometric mean rather than an arithmetic mean.
To give an example, say that I had two objective terms in my original space, $a*b$ and $x*y*$. The arithmetic mean of these objective terms is $(a*b + x*y)/2$.
However, using a geometric mean, there are two formulations:
First, $\sqrt[\leftroot{-2}\uproot{2}2]{a*b*x*y}$. And second, $(log_2{a} + log_2{b} + log_2{x} + log_2{y})/2$.
I believe that this second formulation would enable me to find the geometric mean of my objective terms by treating inputs as logarithms and remembering to convert back to the original space post solution using exponentiation.
Any thoughts or experience here?