最適化問題に対する超高速&安定計算

大規模最適化問題、グラフ探索、機械学習やデジタルツインなどの研究のお話が中心

倍精度 × 4倍精度(Double-double) △ 任意精度 ◯

2013年03月13日 02時12分13秒 | Weblog
倍精度では全く解けなくて、4倍精度でも高精度に解くことができず、任意精度(256bit)演算でやっと高精度に解ける例が見つかった。以下はある SDP の例:通常は4倍精度で十分なことが多い。

◯倍精度:SDPA 7.4.0
mu thetaP thetaD objP objD alphaP alphaD beta
0 1.0e+04 1.0e+00 1.0e+00 -0.00e+00 -1.50e+05 7.5e-01 5.0e-01 2.00e-01
1 3.4e+03 2.5e-01 5.0e-01 -1.91e+00 -1.42e+05 5.4e-01 5.7e-01 2.00e-01
2 1.9e+03 1.2e-01 2.2e-01 -4.09e+00 -1.17e+05 3.7e-01 5.4e-01 2.00e-01
3 1.3e+03 7.3e-02 1.0e-01 -5.87e+00 -1.00e+05 5.2e-01 6.6e-01 2.00e-01
4 7.6e+02 3.5e-02 3.4e-02 -7.14e+00 -8.37e+04 5.8e-01 7.4e-01 2.00e-01
5 3.9e+02 1.4e-02 8.6e-03 -7.27e+00 -6.55e+04 7.4e-01 7.5e-01 2.00e-01
6 1.5e+02 3.8e-03 2.2e-03 -6.76e+00 -4.49e+04 7.0e-01 7.5e-01 2.00e-01
7 5.9e+01 1.1e-03 5.4e-04 -6.23e+00 -2.34e+04 6.8e-01 7.2e-01 2.00e-01
8 2.5e+01 3.7e-04 1.5e-04 -5.88e+00 -1.14e+04 6.1e-01 6.3e-01 2.00e-01
9 1.2e+01 1.4e-04 5.7e-05 -5.71e+00 -6.06e+03 6.9e-01 5.9e-01 2.00e-01
10 6.0e+00 4.4e-05 2.4e-05 -5.60e+00 -3.35e+03 6.8e-01 6.4e-01 2.00e-01
11 2.8e+00 1.4e-05 8.6e-06 -5.54e+00 -1.69e+03 6.9e-01 2.5e-01 2.00e-01
cholesky miss condition :: not positive definite :: info = 627 :: line 783 in sdpa_linear.cpp
There are some possibilities. :: line 784 in sdpa_linear.cpp
1. SDPA terminates due to inaccuracy of numerical error :: line 785 in sdpa_linear.cpp
2. The input problem may not have (any) interior-points :: line 786 in sdpa_linear.cpp
3. Input matrices are linearly dependent :: line 787 in sdpa_linear.cpp
12 2.1e+00 4.3e-06 6.4e-06 -5.52e+00 -1.35e+03 6.9e-01 2.5e-01 2.00e-01

phase.value = noINFO
Iteration = 12
mu = +2.0707554953433505e+00
relative gap = +1.9837536366201112e+00
gap = +1.3483476948223692e+03
digits = -2.9748773591292321e-01
objValPrimal = -5.5212870711713906e+00
objValDual = -1.3538689818935406e+03
p.feas.error = +4.3136488422590435e-04
d.feas.error = +2.4069636750887774e-02
total time = 12.092648

◯ 4倍精度 : SDPA-DD 7.1.2
mu thetaP thetaD objP objD alphaP alphaD beta
0 1.0e+04 1.0e+00 1.0e+00 -0.00e+00 -1.50e+05 7.5e-01 5.0e-01 2.00e-01
1 3.4e+03 2.5e-01 5.0e-01 -1.91e+00 -1.42e+05 5.4e-01 5.7e-01 2.00e-01
2 1.9e+03 1.2e-01 2.2e-01 -4.09e+00 -1.17e+05 3.7e-01 5.4e-01 2.00e-01
3 1.3e+03 7.3e-02 1.0e-01 -5.87e+00 -1.00e+05 5.2e-01 6.6e-01 2.00e-01
4 7.6e+02 3.5e-02 3.4e-02 -7.14e+00 -8.37e+04 5.8e-01 7.4e-01 2.00e-01
5 3.9e+02 1.4e-02 8.6e-03 -7.27e+00 -6.55e+04 7.4e-01 7.5e-01 2.00e-01
6 1.5e+02 3.8e-03 2.2e-03 -6.76e+00 -4.49e+04 7.0e-01 7.5e-01 2.00e-01
7 5.9e+01 1.1e-03 5.4e-04 -6.23e+00 -2.34e+04 6.8e-01 7.2e-01 2.00e-01
8 2.5e+01 3.7e-04 1.5e-04 -5.88e+00 -1.14e+04 6.1e-01 6.3e-01 2.00e-01
9 1.2e+01 1.4e-04 5.7e-05 -5.71e+00 -6.06e+03 6.9e-01 5.9e-01 2.00e-01
10 5.9e+00 4.4e-05 2.4e-05 -5.60e+00 -3.35e+03 6.8e-01 6.4e-01 2.00e-01
11 2.8e+00 1.4e-05 8.5e-06 -5.54e+00 -1.68e+03 7.1e-01 6.9e-01 2.00e-01
12 1.2e+00 4.1e-06 2.6e-06 -5.52e+00 -7.72e+02 7.3e-01 7.3e-01 2.00e-01
13 5.0e-01 1.1e-06 7.2e-07 -5.52e+00 -3.31e+02 7.3e-01 7.3e-01 2.00e-01
14 2.0e-01 3.0e-07 2.0e-07 -5.52e+00 -1.43e+02 7.2e-01 7.3e-01 2.00e-01
15 8.3e-02 8.3e-08 5.3e-08 -5.54e+00 -6.31e+01 7.3e-01 7.9e-01 2.00e-01
16 3.0e-02 2.3e-08 1.1e-08 -5.57e+00 -2.69e+01 8.1e-01 8.1e-01 2.00e-01
17 1.0e-02 4.4e-09 2.1e-09 -5.64e+00 -1.31e+01 7.9e-01 8.2e-01 2.00e-01
18 3.5e-03 9.0e-10 3.8e-10 -5.73e+00 -8.27e+00 6.1e-01 6.1e-01 2.00e-01
19 1.8e-03 3.6e-10 1.5e-10 -5.81e+00 -7.09e+00 6.1e-01 6.4e-01 2.00e-01
20 8.6e-04 1.4e-10 5.2e-11 -5.87e+00 -6.49e+00 6.2e-01 6.6e-01 2.00e-01
21 4.1e-04 5.2e-11 1.8e-11 -5.91e+00 -6.21e+00 7.1e-01 6.6e-01 2.00e-01
22 1.9e-04 5.2e-11 6.0e-12 -5.94e+00 -6.08e+00 8.2e-01 6.7e-01 2.00e-01
23 8.4e-05 5.2e-11 2.0e-12 -5.96e+00 -6.01e+00 7.8e-01 6.1e-01 1.00e-01
24 3.6e-05 5.2e-11 7.6e-13 -5.96e+00 -5.99e+00 8.2e-01 7.2e-01 1.00e-01
25 1.2e-05 5.2e-11 2.2e-13 -5.96e+00 -5.97e+00 9.1e-01 7.4e-01 1.00e-01
26 3.9e-06 5.2e-11 5.6e-14 -5.96e+00 -5.97e+00 9.6e-01 8.7e-01 1.00e-01
27 8.3e-07 5.2e-11 7.5e-15 -5.96e+00 -5.96e+00 9.7e-01 8.5e-01 1.00e-01
28 1.9e-07 5.2e-11 1.1e-15 -5.96e+00 -5.96e+00 8.8e-01 5.5e-01 1.00e-01
29 9.1e-08 5.2e-11 5.1e-16 -5.96e+00 -5.96e+00 8.8e-01 5.5e-01 0.00e+00

phase.value = pdFEAS
Iteration = 29
mu = 9.1470308661740907e-08
relative gap = 5.1314652211106639e-06
gap = 6.8145379952996981e-05
digits = 5.2897586102126146e+00
objValPrimal = -5.9631117177580188e+00
objValDual = -5.9631423173369189e+00
p.feas.error = 5.2236915537834309e-09
d.feas.error = 1.9124719921596923e-12
relative eps = 4.9303806576313200e-32
total time = 738.980

◯任意精度(256bit) : SDPA-GMP 7.1.2
mu thetaP thetaD objP objD alphaP alphaD beta
0 1.0e+04 1.0e+00 1.0e+00 +0.00e+00 -1.50e+05 7.5e-01 5.0e-01 2.00e-01
1 3.4e+03 2.5e-01 5.0e-01 -1.91e+00 -1.42e+05 5.4e-01 5.7e-01 2.00e-01
2 1.9e+03 1.2e-01 2.2e-01 -4.09e+00 -1.17e+05 3.7e-01 5.4e-01 2.00e-01
3 1.3e+03 7.3e-02 1.0e-01 -5.87e+00 -1.00e+05 5.2e-01 6.6e-01 2.00e-01
4 7.6e+02 3.5e-02 3.4e-02 -7.14e+00 -8.37e+04 5.8e-01 7.4e-01 2.00e-01
5 3.9e+02 1.4e-02 8.6e-03 -7.27e+00 -6.55e+04 7.4e-01 7.5e-01 2.00e-01
6 1.5e+02 3.8e-03 2.2e-03 -6.76e+00 -4.49e+04 7.0e-01 7.5e-01 2.00e-01
7 5.9e+01 1.1e-03 5.4e-04 -6.23e+00 -2.34e+04 6.8e-01 7.2e-01 2.00e-01
8 2.5e+01 3.7e-04 1.5e-04 -5.88e+00 -1.14e+04 6.1e-01 6.3e-01 2.00e-01
9 1.2e+01 1.4e-04 5.7e-05 -5.71e+00 -6.06e+03 6.9e-01 5.9e-01 2.00e-01
10 5.9e+00 4.4e-05 2.4e-05 -5.60e+00 -3.35e+03 6.8e-01 6.4e-01 2.00e-01
11 2.8e+00 1.4e-05 8.5e-06 -5.54e+00 -1.68e+03 7.1e-01 6.9e-01 2.00e-01
12 1.2e+00 4.1e-06 2.6e-06 -5.52e+00 -7.72e+02 7.3e-01 7.3e-01 2.00e-01
13 5.0e-01 1.1e-06 7.2e-07 -5.52e+00 -3.31e+02 7.3e-01 7.3e-01 2.00e-01
14 2.0e-01 3.0e-07 2.0e-07 -5.52e+00 -1.43e+02 7.2e-01 7.3e-01 2.00e-01
15 8.3e-02 8.3e-08 5.3e-08 -5.54e+00 -6.31e+01 7.3e-01 7.9e-01 2.00e-01
16 3.0e-02 2.3e-08 1.1e-08 -5.57e+00 -2.69e+01 8.1e-01 8.1e-01 2.00e-01
17 1.0e-02 4.4e-09 2.1e-09 -5.64e+00 -1.31e+01 7.9e-01 8.2e-01 2.00e-01
18 3.5e-03 9.0e-10 3.8e-10 -5.73e+00 -8.27e+00 6.1e-01 6.1e-01 2.00e-01
19 1.8e-03 3.6e-10 1.5e-10 -5.81e+00 -7.09e+00 6.1e-01 6.4e-01 2.00e-01
20 8.6e-04 1.4e-10 5.2e-11 -5.87e+00 -6.49e+00 6.2e-01 6.6e-01 2.00e-01
21 4.1e-04 5.2e-11 1.8e-11 -5.91e+00 -6.21e+00 7.1e-01 6.6e-01 2.00e-01
22 1.9e-04 5.2e-11 6.0e-12 -5.94e+00 -6.08e+00 8.2e-01 6.7e-01 2.00e-01
23 8.4e-05 5.2e-11 2.0e-12 -5.96e+00 -6.01e+00 7.8e-01 6.1e-01 1.00e-01
24 3.6e-05 5.2e-11 7.6e-13 -5.96e+00 -5.99e+00 8.2e-01 7.2e-01 1.00e-01
25 1.2e-05 5.2e-11 2.2e-13 -5.96e+00 -5.97e+00 9.1e-01 7.4e-01 1.00e-01
26 3.9e-06 5.2e-11 5.6e-14 -5.96e+00 -5.97e+00 9.6e-01 8.7e-01 1.00e-01
27 8.3e-07 5.2e-11 7.5e-15 -5.96e+00 -5.96e+00 9.7e-01 8.5e-01 1.00e-01
28 1.9e-07 5.2e-11 1.1e-15 -5.96e+00 -5.96e+00 8.8e-01 6.0e-01 1.00e-01
29 8.3e-08 5.2e-11 4.5e-16 -5.96e+00 -5.96e+00 6.8e-01 1.9e-01 1.00e-01
30 6.8e-08 5.2e-11 3.6e-16 -5.96e+00 -5.96e+00 1.9e-01 4.5e-02 1.00e-01
31 6.6e-08 5.2e-11 3.5e-16 -5.96e+00 -5.96e+00 1.0e-01 1.1e-01 1.00e-01
32 6.1e-08 5.2e-11 3.1e-16 -5.96e+00 -5.96e+00 4.4e-02 2.7e-02 1.00e-01
33 6.0e-08 5.2e-11 3.0e-16 -5.96e+00 -5.96e+00 4.4e-02 2.7e-02 1.00e-01

phase.value = pdOPT
Iteration = 33
mu = 6.0091957050090305e-08
relative gap = 7.3389529025869560e-78
gap = 4.4768508002317277e-05
digits = 7.7134365899357491e+01
objValPrimal = -5.9631207562267722e+00
objValDual = -5.9631207562267722e+00
p.feas.error = 5.2236915538017196e-09
d.feas.error = 1.1271715090988795e-12
relative eps = 8.6361685550944446e-78
total time = 6176.100
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする