Hi,

I am using the free time-limited evaluation license of CONOPT 4, CPLEX 12.10, DICOPT, MINOS and SNOPT solvers to solve a MINLP problems. Moreover, I am using the GAMS Release: 30.3.0 64 bit/MS Windows.

However, in solving the MINLP problem, the DICOPT stopped on NLP worsening. I have tried all the solvers mentioned above but every time the DICOPT stopped on NLP worsening.

I am wondering which solver will be able to solve the problem. Is there any problem in writing the code, although I think the code is OK!

Moreover, the program shows the best integer solution it finds. Manually, I have calculated the objective function using the decision variables of the best integer solution. But, the manually calculated objective function value doesn’t matches with the objective function value of the best integer solution shown by the GAMS. Why is this problem?

Furthermore, the objective function contains exponential function. In case of exponential function contained objectives, will we get the optimal solution?

I have attached the problem below. Is there anyone with license software who can help me to solve the problem!

Thanks in advance.

Example.gms (4.6 KB)

Hmmm, when I run the model DICOPT log says:

```
--- DICOPT: Log File:
Major Major Objective CPU time Itera- Evaluation Solver
Step Iter Function (Sec) tions Errors
NLP 1 3370.91124 0.01 10 0 conopt
MIP 1 3100.32513 0.33 4369 0 cplex
NLP 2 3106.29333< 0.00 4 0 conopt
MIP 2 3100.32513 0.33 6513 0 cplex
NLP 3 3106.29333 0.00 4 0 conopt
```

If I recalculate the objective function via

```
solve m using minlp maximizing NPV;
$ondotL
NPV.l = sum (i, (c(i)*(exp(-0.01*adjustFT(i))))) - sum((o,k,s,t),PC(k,s)*x(o,k,s)*exp(-0.01*OT(o,t)));
display NPV.l;
```

I get the same 3106.293:

```
---- 177 VARIABLE NPV.L = 3106.293 net present value
```

The model is small enough to solve with a global solver, like Antigone, BARON, Couenne, LindoGlobal, and SCIP. They prove that the 3106.293 is the global optimal solution. Don’t forget to set optcr=0 when you experiment with global solvers.

-Michael

Hi Michael,

Thank you. I got the solution.

I see that the best integer solution found before the DICOPT stopped on NLP worsening is the global optimal solution. But, why the solver doesn’t say that it finds the “global optimal solution found”?

As the solver found the best integer solution before the DICOPT stopped, is it meant that the DICOPT terminating is not a problem when it finds the best integer solution (which is also a global optimal solution)?

-Asadujjaman

DICOPT is a *local* solver it does not know if a solution is globally optimal. So it needs to terminate in some other ways. -Michael

Hi Michael,

As my first example problem was small enough to solve with a global solver, thus now I am trying to solve a larger size problem with the global solvers. I have attached my problem below. I have tried to solve the problem using the LindoGlobal. It shows that, both the solution and the best possible solution are 18226.563.

Is it meant that, this this the optimal solution?

If so, why the solver doesn’t say that it finds the “global optimal solution”?

What is meant by the “NLP local optimizer terminated”?

Is there any other solver who can solve the problem quickly than the LindoGlobal with the global optimal solution?

I would be grateful if you kindly have look on it.

Example2.gms (6.63 KB)

-Asadujjaman

Not sure what you mean. LindoGlobal reports (globally) optimal solution:

```
S O L V E S U M M A R Y
MODEL m OBJECTIVE NPV
TYPE MINLP DIRECTION MAXIMIZE
SOLVER LINDOGLOBAL FROM LINE 251
**** SOLVER STATUS 1 Normal Completion
**** MODEL STATUS 1 Optimal
**** OBJECTIVE VALUE 18226.5635
RESOURCE USAGE, LIMIT 5.531 2000.000
ITERATION COUNT, LIMIT 39779 100000
EVALUATION ERRORS NA 0
```

Lindo reformulates your problem into a linear MIP see message “The problem is a MILP” (you can probably do the same and use a MIP solver). For MIPs Lindo (and other GAMS solvers) solve the “fixed” problem, i.e. after finding the global optimum, Lindo fixes the discrete variables at their value and solve the continuous problem to get some kind of a dual solution. This is where the message “NLP local optimizer terminated” comes from. There are more messages about calculating the dual solution in the log.

-Michael

Dear Michael,

Now, I understand it. Thank you so much.

-Md. Asadujjaman