@@ -524,15 +524,15 @@ Running this code (after an initial compilation run) generates the following out
524
524
---------------------------------------------------------------------------------------------------------------------------------
525
525
| Iteration # | Nodes | Lower Bound | Upper Bound | Gap | Ratio | Timer | Time Left |
526
526
---------------------------------------------------------------------------------------------------------------------------------
527
- | 10 | 47818 | -8.337E-01 | -7.048E-01 | 1.289E-01 | 1.546E-01 | 0.74 | 3599.26 |
528
- | 20 | 117316 | -7.703E-01 | -7.048E-01 | 6.549E-02 | 8.503E-02 | 1.47 | 3598.53 |
529
- | 30 | 162052 | -7.608E-01 | -7.048E-01 | 5.604E-02 | 7.365E-02 | 1.90 | 3598.10 |
530
- | 40 | 177018 | -7.473E-01 | -7.048E-01 | 4.254E-02 | 5.693E-02 | 2.38 | 3597.62 |
531
- | 50 | 161712 | -7.411E-01 | -7.048E-01 | 3.632E-02 | 4.901E-02 | 3.24 | 3596.76 |
532
- | 60 | 128062 | -7.293E-01 | -7.048E-01 | 2.453E-02 | 3.363E-02 | 4.10 | 3595.90 |
533
- | 70 | 73936 | -7.211E-01 | -7.048E-01 | 1.631E-02 | 2.262E-02 | 5.03 | 3594.97 |
534
- | 80 | 11916 | -7.180E-01 | -7.048E-01 | 1.321E-02 | 1.841E-02 | 5.59 | 3594.41 |
535
- | 83 | 4560 | -7.051E-01 | -7.048E-01 | 3.648E-04 | 5.173E-04 | 5.64 | 3594.36 |
527
+ | 10 | 47818 | -8.337E-01 | -7.048E-01 | 1.289E-01 | 1.546E-01 | 0.47 | 3599.53 |
528
+ | 20 | 117316 | -7.703E-01 | -7.048E-01 | 6.549E-02 | 8.503E-02 | 0.83 | 3599.17 |
529
+ | 30 | 162052 | -7.608E-01 | -7.048E-01 | 5.604E-02 | 7.365E-02 | 1.26 | 3598.74 |
530
+ | 40 | 177018 | -7.473E-01 | -7.048E-01 | 4.254E-02 | 5.693E-02 | 1.74 | 3598.26 |
531
+ | 50 | 161712 | -7.411E-01 | -7.048E-01 | 3.632E-02 | 4.901E-02 | 2.62 | 3597.38 |
532
+ | 60 | 128062 | -7.293E-01 | -7.048E-01 | 2.453E-02 | 3.363E-02 | 3.17 | 3596.83 |
533
+ | 70 | 73936 | -7.211E-01 | -7.048E-01 | 1.631E-02 | 2.262E-02 | 3.76 | 3596.24 |
534
+ | 80 | 11916 | -7.180E-01 | -7.048E-01 | 1.321E-02 | 1.841E-02 | 4.36 | 3595.64 |
535
+ | 82 | 4560 | -7.051E-01 | -7.048E-01 | 3.648E-04 | 5.173E-04 | 4.42 | 3595.58 |
536
536
---------------------------------------------------------------------------------------------------------------------------------
537
537
538
538
Relative Tolerance Achieved
@@ -550,13 +550,13 @@ Solution:
550
550
p[8] = 0.9999999998842802
551
551
```
552
552
553
- Using the subgradient-free method, and processing 8192 nodes per iteration, this problem converged in 83
554
- iterations (roughly 679,936 nodes explored), with a total time of 5.64 seconds. These times were obtained
553
+ Using the subgradient-free method, and processing 8192 nodes per iteration, this problem converged in 82
554
+ iterations (roughly 671,744 nodes explored), with a total time of 4.42 seconds. These times were obtained
555
555
on a workstation with an Intel i7-9850H processor and an NVIDIA Quadro T2000 GPU. Using a GPU with a
556
556
greater capacity for double-precision floating point calculations will, of course, improve the overall
557
557
performance of the algorithm, but even with a fairly "typical" GPU such as this, relatively competitive
558
558
speed can be obtained. As compared to the base version of EAGO (which makes use of subgradients), this
559
- example ran roughly 9x faster.
559
+ example ran roughly 11x faster.
560
560
561
561
It is also important to note that, because a subgradient-free method was used, the lower bounds for any
562
562
individual branch-and-bound node are not as tight as those that can be obtained using subgradient-based
@@ -662,16 +662,15 @@ Running this code (after an initial compilation run) generates the following out
662
662
---------------------------------------------------------------------------------------------------------------------------------
663
663
| Iteration # | Nodes | Lower Bound | Upper Bound | Gap | Ratio | Timer | Time Left |
664
664
---------------------------------------------------------------------------------------------------------------------------------
665
- | 10 | 16280 | -7.754E-01 | -7.048E-01 | 7.067E-02 | 9.113E-02 | 0.59 | 3599.41 |
666
- | 20 | 59342 | -7.353E-01 | -7.048E-01 | 3.055E-02 | 4.154E-02 | 1.16 | 3598.84 |
667
- | 30 | 46048 | -7.108E-01 | -7.048E-01 | 5.983E-03 | 8.418E-03 | 1.82 | 3598.18 |
668
- | 40 | 2240 | -7.058E-01 | -7.048E-01 | 9.852E-04 | 1.396E-03 | 2.30 | 3597.70 |
669
- | 41 | 2240 | -7.058E-01 | -7.048E-01 | 9.852E-04 | 1.396E-03 | 2.30 | 3597.70 |
665
+ | 10 | 16280 | -7.754E-01 | -7.048E-01 | 7.067E-02 | 9.113E-02 | 0.45 | 3599.55 |
666
+ | 20 | 59342 | -7.353E-01 | -7.048E-01 | 3.055E-02 | 4.154E-02 | 1.09 | 3598.91 |
667
+ | 30 | 46048 | -7.108E-01 | -7.048E-01 | 5.983E-03 | 8.418E-03 | 1.85 | 3598.15 |
668
+ | 40 | 2240 | -7.058E-01 | -7.048E-01 | 9.852E-04 | 1.396E-03 | 2.33 | 3597.67 |
670
669
---------------------------------------------------------------------------------------------------------------------------------
671
670
672
671
Absolute Tolerance Achieved
673
672
Optimal Solution Found at Node 1
674
- Lower Bound: -0.7057619894307734
673
+ Lower Bound: -0.7057619894307733
675
674
Upper Bound: -0.7047768067379733
676
675
Solution:
677
676
p[1] = -0.9999999998903418
@@ -688,7 +687,7 @@ As in the previous examples, these results were generated using an Intel i7-9850
688
687
Quadro T2000 GPU. Effectively, ParBB is running precisely the same lower-bounding routine as the base
689
688
version of the global solver EAGO, except that the routine is being performed in parallel on a GPU
690
689
rather than serially on the CPU. This example converges in 40 iterations of at most 8192 nodes per iteration,
691
- for a total of roughly 327,680 nodes explored, and reaches its solution in 2.30 seconds. As compared to the
690
+ for a total of roughly 327,680 nodes explored, and reaches its solution in 2.33 seconds. As compared to the
692
691
base version of EAGO, this implementation of ParBB solves the problem roughly 22x faster. As in the previous
693
692
subsection, it should be noted that a GPU with better double-precision floating-point calculation throughput
694
693
would yield even faster results.
0 commit comments