For the case when there are infeasible NLP subproblems, in the default version of DICOPT no linearizations are added but simply an integer cut, which is very weak. In order to add linearizations for infeasible NLPs, which may increase the chances of finding feasible subproblems, you may want to try adding the option: infeasder 1 in an options file for DICOPT. Also, rather than relaxing the integer variables with slacks, you might try relaxing a “critical” constraint for feasibility by adding a slack variable, and introducing it in the objective with a fairly large weight.

If you have access to the SBB solver you may try this. It uses branch and bound directly on the nonlinear model where DICOPT branches on a linear approximation. If the linear approximation is not a very good approximation to the overall model, DICOPT will not predict the binary variables very well and you may get the infeasible NLPs you experience. DICOPT just cuts away this one binary point and tries again which is not very effective when NLPs are infeasible. If SBB experiences an infeasible subproblem then it can prune a whole branch of the B&B tree, so it loves infeasible NLPs.

Alternatively, you can

- Try to solve it with a different NLP subsolver, e.g. CONOPT instead of MINOS

- Try to solve it with a different MINLP solver, e.g. SBB, BONMIN or one of the global codes.