Register now After registration you will be able to apply for this opportunity online.
This opportunity is not published. No applications will be accepted.
Fast C++ sum of squares optimization toolbox
This project is concerned with developing a fast C++ toolbox for sum of squares (SOS), or polynomial optimization problems, which are important mathematical problems that frequently appear in control and other research areas.
Keywords: sum of squares, optimization, polynomial, C++, programming, parser
SOS programming is a way of approximating the solution to problems of the form
min f(x) s.t. gi(x) >= 0, i = 1,...,m, hj(x) = 0, j = 1,...,p
where f, gi, and hj are all polynomial functions. This extremely broad class even includes mixed integer programs: just set x1(x1 - 1) = 0 to constrain a variable x1 to {0,1}. Such problems are used, for example, in control engineering, to search for Lyapunov functions to certify stability of nonlinear systems, or to design robust controllers for them.
Although many promising algorithms have been developed to handle problems of the above form, most implementations have been of poor quality and in slow scripting languages, primarily MATLAB. These tools typically spend longer converting the optimization problem into a form the solver can understand (parsing step) than the solver itself takes to solve the problem.
The project is a great opportunity to develop a substantial C++ project of value to the scientific community.
SOS programming is a way of approximating the solution to problems of the form
min f(x) s.t. gi(x) >= 0, i = 1,...,m, hj(x) = 0, j = 1,...,p
where f, gi, and hj are all polynomial functions. This extremely broad class even includes mixed integer programs: just set x1(x1 - 1) = 0 to constrain a variable x1 to {0,1}. Such problems are used, for example, in control engineering, to search for Lyapunov functions to certify stability of nonlinear systems, or to design robust controllers for them.
Although many promising algorithms have been developed to handle problems of the above form, most implementations have been of poor quality and in slow scripting languages, primarily MATLAB. These tools typically spend longer converting the optimization problem into a form the solver can understand (parsing step) than the solver itself takes to solve the problem.
The project is a great opportunity to develop a substantial C++ project of value to the scientific community.
This project will research and identify the most promising of these algorithms and implement a fast and reliable C++ based tool of use to the community. The tool will be callable from MATLAB and Python. This will help satisfy the demand for a high-quality tool whose users don't need to understand C++.
The tool will be tested using standard polynomial benchmarks.
This project will research and identify the most promising of these algorithms and implement a fast and reliable C++ based tool of use to the community. The tool will be callable from MATLAB and Python. This will help satisfy the demand for a high-quality tool whose users don't need to understand C++.
The tool will be tested using standard polynomial benchmarks.