## How can I find the global optimal solution for the following MINLP problem.

Solver related questions
User Posts: 16
Joined: 1 year ago

### How can I find the global optimal solution for the following MINLP problem.

Hi,

I have attached at MINLP problem. I am using license version of LINDO and LINDO GLOBAL to solve the problem. However, I got the local solutions every time. It also shows the following message "*** could not allocate enough memory". For better understanding I have also attached a screenshot of the output (attached figure 1).
How can I allocate enough memory?
How can I get the global optimum solution? Please suggest based on the LINDO and LINDO GLOBAL solver as I only have the license of these solvers.
Is there any way to minimize the computational time?
What is the lower bound and UPPER BOUND of the objective function (attached figure 2)?

Regards
Example.gms
program file

bussieck
Moderator Posts: 645
Joined: 5 years ago

### Re: How can I find the global optimal solution for the following MINLP problem.

It's a shame that you don't have other MINLP solvers available. For example, BARON solves this in no time:

Code: Select all

``````  Iteration    Open nodes         Time (s)    Lower bound      Upper bound
*         1             1             5.06     5093.56          5139.88
1             1             6.38     5093.56          5095.02
5             0            10.77     5093.56          5094.07

Calculating duals

*** Normal completion ***

Wall clock time:                    10.88
Total CPU time used:                10.77

Total no. of BaR iterations:       5
Best solution found at node:       1
Max. no. of nodes in memory:       2

All done
===========================================================================

Solution      = 5093.56180998214  found at node 1
Best possible = 5094.0712171
Absolute gap  = 0.509407117861883  optca = 1E-9
Relative gap  = 9.99999992445891E-5  optcr = 0.0001
``````
But you can easily linearize your model since the only non-linearity you have is exp(intvar). Your intvar has values between 0 and deadline (35), so a very limited range. Hence you can represent the intvar as a summation of binary variables (b is a set of 0..35) intvar = sum(b, binvar(b)*b.val); sum(b, binvar(b))=1. With that you can linearize exp(intvar) as sum(b, binvar(b)*exp(b.val)) and instead of a MINLP have a MIP which LINDO solves quickly to global optimality. I have attached the modified code.
Example.gms