Re: [Help-glpk] glpk 4.65 release information

2018-03-13 Thread Chris Matrakidis
Hi Andrew,

A few weeks ago you wrote:

I'd like to note that sometimes '--cuts' is not a best choice.
>

I did an experiment regarding this. In particular, I tried 84 out of the 87
problems in the miplib 2010 benchmark set (the other 3 needed more than an
hour to solve the root relaxation). I provided the optimal solution in
every (feasible) case to make sure no unnecessary nodes were searched (and
disabled the rounding heuristic to save some time). Then did three runs
with a time limit of 1 hour per problem and pcost branching: with cuts,
without cuts and with cuts added every fourth backtracking step. The
problems solved for the three cases were 25, 21 and 23 respectively.

The results are summarised in the following table (which I hope is
readable). The numbers in parentheses are the average execution time or gap
compared to the other case, so in the 3 cases where A is faster with an
average of 56% means they executed in 56% of the time B took (i.e. lower is
better).

+---+---++++++-+-+
|   A   |   B   |  both  | only A | only B |A   |B   |  gap A
|  gap B  |
|   |   | solved | solved | solved | faster | faster | smaller
| smaller |
+---+---++++++-+-+
| with  |  w/o  |   19   |6   |2   |3   |   12   |24
|19   |
|  cuts |  cuts ||||  (56%) |  (52%) |  (61%)
|  (76%)  |
+---+---++++++-+-+
|  w/o  | every |   20   |1   |3   |   11   |5   |15
|27   |
|  cuts |   4   ||||  (65%) |  (71%) |  (75%)
|  (59%)  |
+---+---++++++-+-+
| every |  with |   22   |1   |3   |   13   |4   |23
|17   |
|   4   |  cuts ||||  (72%) |  (87%) |  (85%)
|  (84%)  |
+---+---++++++-+-+

The situation was very different using the modifications I published
earlier. The problems solved were now 38, 40 and 43 for the same three
cases respectively. Now without cuts more problems are solved within the
time limit than with cuts, which I wasn't expecting. However even more
problems are solved by adding cuts every fourth backtracking step. Again
the following table has more details.

+---+---++++++-+-+


|   A   |   B   |  both  | only A | only B |A   |B   |  gap A
|  gap B  |
|   |   | solved | solved | solved | faster | faster | smaller
| smaller |
+---+---++++++-+-+
| with  |  w/o  |   32   |6   |8   |3   |   25   |16
|12   |
|  cuts |  cuts ||||  (40%) |  (51%) |  (42%)
|  (61%)  |
+---+---++++++-+-+
|  w/o  | every |   36   |4   |7   |   23   |9   |7
|19   |
|  cuts |   4   ||||  (59%) |  (61%) |  (71%)
|  (46%)  |
+---+---++++++-+-+
| every |  with |   37   |6   |1   |   27   |4   |17
|12   |
|   4   |  cuts ||||  (63%) |  (63%) |  (68%)
|  (74%)  |
+---+---++++++-+-+

I think this change in behaviour with my modifications is due to restoring
the root node less during the search, and consequently requiring fewer
 factorisations.

I'm attaching csv files with the results of the runs if you want to see
more details.


Best Regards,

Chris Matrakidis
GLPK 4.65 --cuts --pcost,,,
Name,   Dual Bound,  Primal Bound, Gap%,  Nodes,  Time, Status, Solution
30n20b8,151,302,100,2607,3601, stopped,   ok
acc-tight5,0,0,0,1,1,  ok,   ok
aflow40b,1122,1168,4.1,13795,3600, stopped,   ok
air04,56137,56137,0,43945,2934,  ok,   ok
app1-2,-230,-41,461,13206,3603, stopped,   ok
ash608gpia-3col,1.00E+20,1.00E+20,--,57,185,  ok,   --
bab5,-111665.934,-106411.84,4.9,357,3603, stopped,   ok
beasleyC3,560,754,34.6,7484,3600, stopped,   ok
biella1,3062607.68,3065005.78,0.1,1206,3606, stopped,   ok
bienst2,54.6,54.6,0,216243,1454,  ok,   ok
binkar10_1,6742.20002,6742.20002,0,87877,891,  ok,   ok
bnatt350,0,0,0,1,1,  ok,   ok
core2536-691,688.779403,689,0,2364,3604, stopped,   ok
cov1075,18,20,11.1,18985,3601, stopped,   ok
csched010,369.901019,408,10.3,3849,3600, stopped,   ok
danoint,63.9111228,65.667,2.7,55887,3600, stopped,   ok
dfn-gwin-UUM,37900,38752,2.2,60429,3601, stopped,   ok
eil33-2,934.007916,934.007916,0,4769,131,  ok,   ok
eilB101,1216.92017,1216.92017,0,71847,895,  ok,   ok
enlight13,28,71,153.6,42008,3600, 

Re: [Help-glpk] glpk 4.65 release information

2018-02-26 Thread Chris Matrakidis
Hi Andrew,

I'd like to note that sometimes '--cuts' is not a best choice. For
> example, air04 and air05 (hard set partitioning problems) from miplib
> 3.0 are solved quickly (about 10 mins on my machine) with '--pcost',
> but with cutting planes the solution takes more 6 hours. Probably this
> is because cutting planes increase fractionality of node subproblems.
>

I know, but on average they seem to help (at least for miplib).

There is another reason for this slowdown: MIR cut generation still takes a
lot of time for some problems (even after the changes from two years ago).
Some testing suggests that reducing the maximal number of rows that can be
aggregated is not affecting the quality of generated cuts, but I haven't
tested this as much as I would like.

Moreover, the second paper referenced in ios_process_cuts() [1] states
"...we found that better overall results are typically obtained if
separation is only invoked at each k-th backtracking (we choose k = 4 in
our implementation)." Indeed, generating cuts after every fourth
backtracking step seems to improve overall solver performance but again I
haven't tested this as much as I would like.

Best Regards,

Chris Matrakidis

[1] Andreello, A.Caprara, and M.Fischetti, "Embedding Cuts in a Branch
Framework: a Computational Study with {0,1/2}-Cuts",
http://www.dei.unipd.it/~fisch/papers/012_branch_and_cut.pdf
___
Help-glpk mailing list
Help-glpk@gnu.org
https://lists.gnu.org/mailman/listinfo/help-glpk


Re: [Help-glpk] glpk 4.65 release information

2018-02-26 Thread Andrew Makhorin
Hi Chris,


> In order to test the release, I tried the 2010 MIPLIB benchmark set,
> calling glpsol with "--pcost --cuts" and a two hour time limit. The
> final result is in the attached file, but the quick summary is that 20
> problems from this set were solved, while there were three aborts.

Thank you very much for your efforts. I think your results are very
useful.

I'd like to note that sometimes '--cuts' is not a best choice. For
example, air04 and air05 (hard set partitioning problems) from miplib
3.0 are solved quickly (about 10 mins on my machine) with '--pcost',
but with cutting planes the solution takes more 6 hours. Probably this
is because cutting planes increase fractionality of node subproblems.


Best regards,

Andrew Makhorin

> 
> 
> Of the three aborts, problem mspp16 just run out of memory, while
> problems msc98-ip and ns1688347 failed in the primal simplex.
> 
> 
> Specifically, msc98-ip failed with:
> 
> Warning: numerical instability (dual simplex, phase II)
> Warning: dual simplex failed due to excessive numerical instability
> Assertion failed: teta_lim >= 0.0
> Error detected in file simplex/spxprim.c at line 665
> 
> while ns1688347 failed with:
> Error: basis matrix is singular to working precision (cond = 3.07e+18)
> Assertion failed: teta_lim >= 0.0
> Error detected in file simplex/spxprim.c at line 665
> 
> 
> 
> 
> Best Regards,
> 
> 
> Chris Matrakidis
> 




___
Help-glpk mailing list
Help-glpk@gnu.org
https://lists.gnu.org/mailman/listinfo/help-glpk