I have designed a MINLP problem and using AOA as solver. The reason I have to use AOA is my problem has goniometric functions and therefore BARON cannot be used. Also, I am using educational license which restrict KNITRO to solve problem over a specific size. When I solve problem using AOA such that it has initial solution (from a small solved network by knitro or AOA), I get final optimal solution in few seconds by AOA. For example, I solve a 4 node network using KNITRO and use this solution to solve 5 node network by AOA and in this way I gradually increase network size and keep getting result by AOA using solution from previous smaller network. This works fine. But, if I want to solve a network with no initial solution, either I get “infeasible solution” (although it has feasible solution in real) or solution time becomes so high and non-stopping (in hours). I have tried setting a bigger value of relative MIP optimality tolerance and MultiStart and increasing the Maximum Iteration, but nothing works. Any suggestions or feedback is appreciated. Thanks and Regards.
Best answer by Marcel HuntingView original
Hi @Zeb , If you are using constraints like Y = g(Z) + f(Z) * cos(X), where X, Y and Z are variables and f and g some functions, then it could help to add (redundant) constraints Y >= g(Z) - f(Z) and Y <= g(Z) + f(Z) (using that -1 <= cos(X) <= 1).
If you are using a variable definition, and you use that variable only in the objective function, then it might help to substitute that variable by its definition in the objective. (This substitution would remove that variable from the model.) Or you can use the inline propery; see the Language Reference for more info.
You could also try the simple branch-and-bound algorithm from the Water Distribution example. The algorithm can be found inside the file BB.ams; this file should be included in the same way as in the example. I have attached a newer version of the file BB.ams, which can be combined with multi-start. (Note that Knitro also uses a branch-and-bound algorithm to solve MINLP problems, although that one will be more sophisticated as it uses cuts and heuristics.)