Hello

I am trying to solve the attached model using the Baron solver. However, I get the following error:

optfile=baron_option_file.txt

maxtime=-1

mipcall=0

exit value 18446744072635809797

BREAK

Note 1: I used the option mipcall=0 because of this post.

Note 2: My actual problem has a 827x827 distance matrix, but I reduced it to a 200x200 so I could post it to this forum.

Any help is much appreciated.

Felipe

new_gradual.mod (904 Bytes)

new_gradual_reduced.dat (668 KB)

Please try running this again, without mipcall=0 (which is not supposed to be needed anymore) but with outlev=1. Then copy *all* of the output that results, and paste it into your reply.

Hi Robert

Here is the output after several hours running the model.

ampl: solve;

BARON 21.1.13 (2021.01.13): optfile=baron_options.txt

maxtime=-1

outlev=1

BARON option outlev not recognized. Option will be ignored.

malloc of 40968 failed for recycle.c, data

Error executing “solve” command:

can’t open C:\Users\admin\AppData\Local\Temp\at5976.sol

The “malloc” program is called when more memory is needed. So the error message “malloc of 40968 failed” indicates that BARON has run out of memory: there is not enough memory on your computer for BARON to keep running. To get a better idea of what is happening, try solving a small version of your problem – say, 50x50 – and try setting a reasonable time limit, like this:

option baron_options ‘maxtime=7200 outlev=1’;

(You don’t need the optfile option is this case.) Then copy all of the BARON output that you see, and paste it into your reply.

Yes, it does work for a smaller 50x50 instance (results below).

I tried running again the original instance through the NEOS Server and I get this

Error: Your job was terminated because it exceeded the maximum allotted memory for a job.

Is there a way I could run this original instance without any hassles?

**Results**

Objective 19.86810477

ampl: display x;

x [*] :=

1 0 6 0 11 0 16 0 21 0 26 0 31 0 36 0 41 0 46 0

2 0 7 0 12 0 17 0 22 0 27 0 32 0 37 0 42 0 47 0

3 0 8 0 13 0 18 0 23 0 28 0 33 0 38 0 43 0 48 0

4 0 9 0 14 0 19 1 24 1 29 0 34 0 39 0 44 0 49 0

5 0 10 0 15 0 20 0 25 0 30 0 35 0 40 0 45 0 50 0

;

It appears you won’t be able to use NEOS, because your original instance requires more memory than NEOS allows. You could instead request a 30-day free trial of AMPL and solvers, and install it on your own computer (or some local computer that is available to you).

Dear Robert

Thank you for your support. I have the free trial. I tried solving it on my PC but I quit after running for more than 24h.

But it feels awkward to me that I can solve the Gradual model attached in NEOS (very fast), but the Test model I cannot, and the only difference between these models is the distance function I am using in one of the parameters, and both have exponential expressions

Gradual:

else 1 / (1+10__**__((distance[i,j] - dmin) / (rho[r] - dmin)-1/b) );

Teste:

else 1 / (1.11 + (5.118 * ((1.5*distance[i,j]/24434) - (0.5*((distance[i,j]/24434)^3)))));

I even tried to remove the exponential expression and I still can’t solve it.

I also tried presolving the matrix and removing this parameter and still no solution.

teste.mod (1.49 KB)

GradualCoverage.mod (1.49 KB)

BARON is trying to find a globally optimal solution to your nonlinear problem, and to prove that it is optimal. This is in general a very hard problem, so it is not surprising that sometimes BARON will not be able to prove optimality in a reasonable amount of time. It may be that BARON finds an optimal solution – or at least, a very good solution – after a short time, however; in that case, if you set a time limit, you may get a good result.

It is not unusual, when doing global optimization, that the problem will be easy to solve with one form of nonlinear function, but very hard to solve with another form – even if the two forms appear to be similar. To learn more about what is happening, however, you need to tell BARON to generate a progress log, by specifying for example

`option baron_options 'maxtime=7200 outlev=1';`

Then if you need help interpreting the log, you can post it here. (If the log is very long, you can copy it into a file, and attach the file.)