cmower / optas

OpTaS: An optimization-based task specification library for trajectory optimization and model predictive control.
https://cmower.github.io/optas/
Other
105 stars 14 forks source link

Implement mixed-integer optimization class and example #85

Closed cmower closed 1 year ago

cmower commented 1 year ago

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.

cmower commented 1 year ago

Resource