When solving a mathematical optimization problem, the most difficult task is to convert the mathematical problem into a matrix in the format required by Solver.
The conversion process is complex and prone to human error, which is not something that humans are supposed to do but should be left to a program to do automatically.
In Julia, many Solver developers will use MathOptInterface to address the above issues while saving a lot of development time. This sharing will explain how the MOI tool works.
MathOptInterface can translate Julia language easily understood by human into the matrix form of mathematical problems, the most important of which is the “Bridge” method.
The analogy is like a program compiler, where the front end is the mathematical problem written in Julia language, and the back end is Solver in various matrix formats, while the Bridge is like an Intermediate Representation (IR), constantly rewriting the front end mathematical problem into the back end.
But usually a mathematical optimization problem can be transformed in many ways, so MOI models these Bridges through Hypergraph and searches for the best transformation path on it.
This sharing will show you how MOI can translate Julia’s mathematical problem into the matrix format required by a custom Solver by using a simple example of a custom Bridge to search the transformation path on Hypergraph.
About Jiawei
Machine learning and mathematical optimization enthusiasts, his interest is in mathematical optimization and application to robot control.