The optimization problem that I am dealing with is very similar to this example. In brief, I have some decision variables that can take real values with lower/upper bounds, and some other variables that are constrained to be integers (which are then mapped to another value). The objective function and constraints are non-convex and non-linear. So far, the genetic algorithm is the one method that I have found, but I would like to know about other techniques (that are possibly better/faster) to approach this problem.
-
2$\begingroup$ Maybe you can tell us more about the reason you want to solve this problem: is it for science (so optimality gaps are very important) or is it an industry problem, where you need just any accaptable solution? Do you wnat to solve one instance once, or many different instances many times? $\endgroup$– PSLPDec 19, 2019 at 12:05
-
1$\begingroup$ It is hard to recommend other methods without knowing more about the problem structure. Are the integer variables binary or not? Is the problem separable? Are there other structural elements that might be exploitable? $\endgroup$– prubin ♦Dec 19, 2019 at 18:31
2 Answers
If you have the mathematical formulas for your problem (i.e., it's not black box), you can use a local MINLP solver, such as BONMIN, KNITRO, or MINOTAUR, or a deterministic global optimisation solver such as ANTIGONE, BARON, Couenne, or Octeract Engine.
If your problem is black box but you have access to derivatives, and function evaluations, I believe that KNITRO also supports callbacks and you can do the same in MINOTAUR but you'll probably need to edit the source code a bit.
The local optimisation solvers will be fast but might not find good/any solutions, whereas the deterministic global optimisation solvers are typically slower but much more likely to find a feasible point, and guarantee global optimality in a finite number of steps.
Try to take a look at these non-convex programming techniques:
DC Programming and DCA