cmower/optas

Implement mixed-integer optimization class and example

cmower opened this issue · 1 comments

Whilst we support discrete variables and (in theory) you can use optas for mixed-integer optimization, there does not exist a dedicated Optimization sub-class for handling this specific use-case. It would be good to create an optimization type in optimization.py.

Provisionally

class MixedIntegerNonlinearCostNonlinearConstrained(NonlinearCostNonlinearConstrained):
    """
        min f(x, z; p)
         x,z

            subject to

                k(x, z; p) = M(p).x + L(p).z + c(p) >= 0
                a(x, z; p) = A(p).x + G(p).z + b(p) == 0
                g(x, z; p) >= 0, and
                h(x, z; p) == 0
    """

It may also be worth implementing the QP cost and linear constrained versions (as in the other optimization types). However, my feeling is that there will only 1 or 2 solvers that we will interface with so probably they will handle the general case (above).

@joaomoura24, do you know what mixed-integer solvers CasADi interfaces with? Also, if there are any mixed-integer solvers that we can create solver interfaces. Some ideas here.