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

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

SDPA のパラメータ設定

2010年11月07日 02時57分27秒 | Weblog
もし SDPA(SDPA-GMP, SDPA-QD, SDPA-DD)の実行において以下のような現象に遭ったらどのようにパラメータを変えれば良いのだろうか?
基本的に単調減少である mu が 0 から 1 反復において増加している。しかも 2, 3, 4 反復と mu, objP, objD の値がほとんど変化していない。

SDPA-QD start at Thu Nov 4 02:58:33 2010
data is /home/fujisawa/data/Coding_SDPA_AY2_50_10_4_40.dat-s : sparse
parameter is ./param.sdpa
out is out

DENSE computations
mu thetaP thetaD objP objD alphaP alphaD beta
0 1.0e+04 1.0e+00 1.0e+00 -0.00e+00 -0.00e+00 1.0e-04 3.2e-02 1.65e+03
1 5.4e+05 1.0e+00 9.7e-01 +9.86e+06 -1.18e+04 4.1e-01 8.7e-03 2.00e-01
2 3.2e+05 5.9e-01 9.6e-01 +2.14e+07 -1.18e+04 9.3e-04 6.6e-05 2.00e-01
3 3.2e+05 5.9e-01 9.6e-01 +2.15e+07 -1.18e+04 3.0e-07 9.9e-08 2.00e-01
Step length is too small. :: line 182 in sdpa_dataset.cpp
cannot move :: line 400 in sdpa_main.cpp
3 3.2e+05 5.9e-01 9.6e-01 +2.15e+07 -1.18e+04 3.0e-07 9.9e-08 2.00e-01

phase.value = noINFO

このときのパラメータファイル
200 unsigned int maxIteration;
1.0E-24 double 0.0 < epsilonStar;
1.0E2 double 0.0 < lambdaStar;
2.0 double 1.0 < omegaStar;
-1.0E5 double lowerBound;
1.0E5 double upperBound;
0.1 double 0.0 <= betaStar < 1.0;
0.2 double 0.0 <= betaBar < 1.0, betaStar <= betaBar;
0.9 double 0.0 < gammaStar < 1.0;
1.0E-14 double 0.0 < epsilonDash;
200 precision

こういったときは、初期点を決定するパラメータである lambdaStar の値を大きくする(1.0E2 から 1.0E6)。さらにステップサイズが小さいので gammaStar の値を小さくしてみる(0.9 から 0.8)。そうすると今度は高い精度で同じ問題を解くことができた。

SDPA-QD start at Wed Nov 3 16:19:49 2010
data is /home/fujisawa/data/Coding_SDPA_AY2_50_10_4_40.dat-s
parameter is ./param.sdpa
out is out.Coding.3
DENSE computation
mu thetaP thetaD objP objD alphaP alphaD beta
0 1.0e+12 1.0e+00 1.0e+00 -0.00e+00 -0.00e+00 6.2e-01 8.2e-01 2.00e-01
1 5.1e+11 3.8e-01 1.8e-01 +1.05e+10 -2.45e+06 7.1e-01 1.0e+00 2.00e-01
2 2.0e+11 1.1e-01 1.8e-62 +4.30e+09 -4.00e+06 7.4e-01 7.4e-01 2.00e-01
3 6.9e+10 2.9e-02 4.5e-62 +1.38e+09 -5.19e+06 7.6e-01 7.6e-01 2.00e-01
4 2.2e+10 6.9e-03 2.0e-61 +3.67e+08 -6.77e+06 7.8e-01 7.8e-01 2.00e-01
5 6.3e+09 1.5e-03 1.7e-61 +8.53e+07 -8.89e+06 7.9e-01 7.9e-01 2.00e-01
6 1.7e+09 3.2e-04 1.2e-61 +1.82e+07 -1.17e+07 8.0e-01 8.0e-01 2.00e-01
7 4.7e+08 6.6e-05 1.8e-61 +3.74e+06 -1.53e+07 8.0e-01 8.0e-01 2.00e-01
8 1.2e+08 1.3e-05 6.4e-61 +7.54e+05 -1.94e+07 8.0e-01 8.0e-01 2.00e-01
9 3.3e+07 2.7e-06 3.5e-61 +1.53e+05 -2.16e+07 8.0e-01 1.8e+00 2.00e-01
10 1.2e+07 5.4e-07 1.7e-60 +3.13e+04 -8.54e+06 8.0e-01 8.0e-01 2.00e-01
中略
45 5.2e-08 5.2e-21 3.7e-51 +1.09e-05 -4.54e-05 8.8e-01 8.4e-01 1.00e-01
46 1.2e-08 5.2e-21 7.1e-52 +1.62e-06 -1.06e-05 7.9e-01 8.5e-01 1.00e-01
47 2.9e-09 5.2e-21 2.3e-52 -4.56e-07 -2.39e-06 5.9e-01 6.6e-01 1.00e-01
48 1.2e-09 5.2e-21 7.2e-53 -9.67e-07 -9.67e-07 5.9e-01 6.6e-01 1.00e-01

phase.value = pdOPT
Iteration = 48
mu = 1.2041579799230716e-09
relative gap = 1.7178584449018582e-57
gap = 3.2464099138726009e-06
digits = 5.0750425494207953e+01
objValPrimal = -9.6696970608962522e-07
objValDual = -9.6696970608962522e-07
p.feas.error = 5.1510344214925189e-15
d.feas.error = 1.6371336333798217e-41
relative eps = 1.2154326714572501e-63
total time = 1455.350
コメント (4)
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする