Implement mixed-integer optimization class and example
cmower opened this issue · 1 comments
cmower commented
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.