I would suggest that you check out Bonmin: https://www.coin-or.org/Bonmin/.
It's open-source, and Julia's JuMP has a nice interface for calling bonmin's solver. You can declare high-level constraints and objectives much more easily. You need Julia first, but after that it's a matter of translating your objectives and contraints. There is a good bit of support from the Julia community, and there are quite a few resources available, including documentation from the JuMP website: https://github.com/JuliaOpt/JuMP.jl
there is a great website devoted to benchmarks for software in optimization:
http://plato.asu.edu/bench.html
However, there is a more important question - does the problem you need to solve have any exploitable structure (convex, quadratic, ...)? If it does, then the answer to "which is the best solver" is "it depends". On the other hand, if it is without any structure, than the benchmarks suggest that BARON is the best:
For mixed-integer nonlinear programming you have the following solvers: NOMAD: https://www.gerad.ca/nomad/Project/Home.html DFL: http://www.dis.uniroma1.it/~lucidi/DFL/
Small-sized problems can be solved by Excel solver which has GRG and Evolutionary solving methods which both are appropriate for nonlinear problems (GRG for smooth and convex whereas Evolutionary for non-smooth and non-convex functions). By installing the open-solver add-in you will have also access to the mentioned by Richard Epenoy NOMAD solver.
You can also try Pyomo, which offers interfaces to several mixed-integer optimizers (both linear and non-linear). Take a look to this link (https://stackoverflow.com/questions/42391945/solving-minlp-with-pyomo-and-bonmin) and to Pyomo documentation.
As previously mentioned it depends. If the problem is convex, there are several good choices. You can check the following paper for more details Article A review and comparison of solvers for convex MINLP
The BARON solver cannot handle non-convex functions like sine and cosine functions. If you are using GAMS, the best options would be DICOPT and Couenne.
Artelys Knitro is an especially versatile nonlinear solver, using state-of-the-art algorithmic options to accommodate varied objective and constraint nonlinearities in continuous and integer variables. It is designed for large-scale problems with up to hundreds of thousands of variables.
I think there are many MINLP solvers like Gouropi, Knitro, AlphaECP, Antigone, AOA, BARON, BONMIN, Couenne, DICOPT, Juniper, KNITRO, LINDO, Minotaur, Muriqui, Pavito, SBB, SCIP, and SHOT.
Used GEKKO's APOPT solver in python to solve a MINLP. I had more than 1000 decision variables with bounds and both kind of constraints. The solver is so sensitive on initial conditions and convergence may not be obtained. I recommend it for simple and middle-scale problems as implementation is very straightforward however it's not reliable for large-scale optimization.
Try to use JuMP, available in the Julia Language (open source). For. MINLP I would suggest to use the package Juniper that uses Ipopt as NL solver and Clp for the binary or integer partes. Very powerful tool!!! If you need more information please contact me.
Try to use ODH-CPLEX; I have managed to solve problems with large dimensions and a large number of binary variables. However, you must convert the problem into MILP using linearization techniques. It uses the CPLEX optimizer as the main engine and heuristic techniques. The computational time decreases considerably and the solution in some cases is the global optimum.