diff --git a/input/paper2/extended/error/s_lbfgs_error.txt b/input/paper2/extended/error/s_lbfgs_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..82f361d1051889b23adf1f48a0a97874271722bf --- /dev/null +++ b/input/paper2/extended/error/s_lbfgs_error.txt @@ -0,0 +1,15 @@ +name = inversion_lbfgs_w_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/S_lBFGS/ +inverted_model_name = paper2_extended_inversion_lbfgs_w +inverted_model_prefix = g0s0 +inverted_model_number = 28 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/ssm_lbfgs_error.txt b/input/paper2/extended/error/ssm_lbfgs_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..568df071e442dc4480305405ed2e92f2360bf582 --- /dev/null +++ b/input/paper2/extended/error/ssm_lbfgs_error.txt @@ -0,0 +1,15 @@ +name = inversion_lbfgs_w_smooth_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SSM_lBFGS/ +inverted_model_name = paper2_extended_inversion_lbfgs_w_smooth +inverted_model_prefix = g0s0 +inverted_model_number = 31 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_lbfgs_error.txt b/input/paper2/extended/error/sst_lbfgs_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..7ed4303e7baa59ecb703feadf7b202aed375069b --- /dev/null +++ b/input/paper2/extended/error/sst_lbfgs_error.txt @@ -0,0 +1,15 @@ +name = inversion_lbfgs_w_stab_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_lBFGS/ +inverted_model_name = paper2_extended_inversion_lbfgs_w_stab +inverted_model_prefix = g0s0 +inverted_model_number = 27 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_ncg_error.txt b/input/paper2/extended/error/sst_ncg_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..95e8b7f05a8d6673b3923f8dcd6d655b3982be8e --- /dev/null +++ b/input/paper2/extended/error/sst_ncg_error.txt @@ -0,0 +1,15 @@ +name = sst_ncg_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_NCG/ +inverted_model_name = paper2_extended_sst_ncg +inverted_model_prefix = g0s0 +inverted_model_number = 17 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_ncggn_error.txt b/input/paper2/extended/error/sst_ncggn_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..62739731998af5f0ac4de8efc0356a08844f5b5e --- /dev/null +++ b/input/paper2/extended/error/sst_ncggn_error.txt @@ -0,0 +1,15 @@ +name = sst_ncggn_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_NCGGN/ +inverted_model_name = paper2_extended_sst_ncggn +inverted_model_prefix = g0s0 +inverted_model_number = 15 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_nscgA_error.txt b/input/paper2/extended/error/sst_nscgA_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..aad2856ca3cac61ecd79bc0f41a5e9a066037f60 --- /dev/null +++ b/input/paper2/extended/error/sst_nscgA_error.txt @@ -0,0 +1,15 @@ +name = sst_nscgA_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_NSCGA/ +inverted_model_name = paper2_extended_sst_nscgA +inverted_model_prefix = g0s0 +inverted_model_number = 17 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_nscgAgn_error.txt b/input/paper2/extended/error/sst_nscgAgn_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..56089fb9de59831380fae5ab9b13fbf26293d38e --- /dev/null +++ b/input/paper2/extended/error/sst_nscgAgn_error.txt @@ -0,0 +1,15 @@ +name = sst_nscgAgn_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_NSCGAGN/ +inverted_model_name = paper2_extended_sst_nscgAgn +inverted_model_prefix = g0s0 +inverted_model_number = 11 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_nscgAr_error.txt b/input/paper2/extended/error/sst_nscgAr_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..b1f89c8899e960b81cf0f9fcae5803b0447b4aab --- /dev/null +++ b/input/paper2/extended/error/sst_nscgAr_error.txt @@ -0,0 +1,15 @@ +name = sst_nscgAr_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_NSCGAR/ +inverted_model_name = paper2_extended_sst_nscgAr +inverted_model_prefix = g0s0 +inverted_model_number = 14 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_nscgArgn_error.txt b/input/paper2/extended/error/sst_nscgArgn_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..e3a84002c221d7a54104710d5ba25d304072091c --- /dev/null +++ b/input/paper2/extended/error/sst_nscgArgn_error.txt @@ -0,0 +1,15 @@ +name = sst_nscgArgn_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_NSCGARGN/ +inverted_model_name = paper2_extended_sst_nscgArgn +inverted_model_prefix = g0s0 +inverted_model_number = 11 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_nscgB_error.txt b/input/paper2/extended/error/sst_nscgB_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..57f4ce6e7b3bdb9f32d5fab3ac78f36c96ea70fd --- /dev/null +++ b/input/paper2/extended/error/sst_nscgB_error.txt @@ -0,0 +1,15 @@ +name = sst_nscgB_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_NSCGB/ +inverted_model_name = paper2_extended_sst_nscgB +inverted_model_prefix = g0s0 +inverted_model_number = 13 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_nscgBgn_error.txt b/input/paper2/extended/error/sst_nscgBgn_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..c9c877aef4c557dcd5c22b40948513b0cb790db9 --- /dev/null +++ b/input/paper2/extended/error/sst_nscgBgn_error.txt @@ -0,0 +1,15 @@ +name = sst_nscgBgn_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_NSCGBGN/ +inverted_model_name = paper2_extended_sst_nscgBgn +inverted_model_prefix = g0s0 +inverted_model_number = 10 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_nscgBr_error.txt b/input/paper2/extended/error/sst_nscgBr_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..f07d6695d1847cf6aee30bdbe8c52fea7ae60a64 --- /dev/null +++ b/input/paper2/extended/error/sst_nscgBr_error.txt @@ -0,0 +1,16 @@ +name = sst_nscgBr_error + +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_NSCGBR/ +inverted_model_name = paper2_extended_sst_nscgBr +inverted_model_prefix = g0s0 +inverted_model_number = 14 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_nscgBrgn_error.txt b/input/paper2/extended/error/sst_nscgBrgn_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..9079d0d6ac391ed33041930373ef09af1913c45f --- /dev/null +++ b/input/paper2/extended/error/sst_nscgBrgn_error.txt @@ -0,0 +1,15 @@ +name = sst_nscgBgn_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_NSCGBRGN/ +inverted_model_name = paper2_extended_sst_nscgBrgn +inverted_model_prefix = g0s0 +inverted_model_number = 14 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_nscgC_error.txt b/input/paper2/extended/error/sst_nscgC_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..336b023a8b0d009768691eef06e6d8a08adcdc4d --- /dev/null +++ b/input/paper2/extended/error/sst_nscgC_error.txt @@ -0,0 +1,15 @@ +name = sst_nscgC_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_NSCGC/ +inverted_model_name = paper2_extended_sst_nscgC +inverted_model_prefix = g0s0 +inverted_model_number = ?? +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_nscgCgn_error.txt b/input/paper2/extended/error/sst_nscgCgn_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..9d5c7b8dac3537c458d840785fec5fb620c74db8 --- /dev/null +++ b/input/paper2/extended/error/sst_nscgCgn_error.txt @@ -0,0 +1,15 @@ +name = sst_nscgCgn_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_NSCGCGN/ +inverted_model_name = paper2_extended_sst_nscgCgn +inverted_model_prefix = g0s0 +inverted_model_number = 10 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_nscgCr_error.txt b/input/paper2/extended/error/sst_nscgCr_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..7ea15539083be3be5ceca8ca2676f4ea1a235714 --- /dev/null +++ b/input/paper2/extended/error/sst_nscgCr_error.txt @@ -0,0 +1,16 @@ +name = sst_nscgCr_error + +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_NSCGCR/ +inverted_model_name = paper2_extended_sst_nscgC +inverted_model_prefix = g0s0 +inverted_model_number = 17 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/sst_nscgCrgn_error.txt b/input/paper2/extended/error/sst_nscgCrgn_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..a13cf8fdf7f1ca63f2a8f7e2c6f87bb5ff2d3e14 --- /dev/null +++ b/input/paper2/extended/error/sst_nscgCrgn_error.txt @@ -0,0 +1,15 @@ +name = sst_nscgCrgn_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/SST_NSCGCRGN/ +inverted_model_name = paper2_extended_sst_nscgCrgn +inverted_model_prefix = g0s0 +inverted_model_number = 24 +#Output +write_error_field = 0 diff --git a/input/paper2/extended/error/us_lbfgs_error.txt b/input/paper2/extended/error/us_lbfgs_error.txt new file mode 100644 index 0000000000000000000000000000000000000000..7dc0b3689b75604eb24fe9f4d5570631558ea83b --- /dev/null +++ b/input/paper2/extended/error/us_lbfgs_error.txt @@ -0,0 +1,15 @@ +name = inversion_lbfgs_error +#Configuration +unknown = subsurface +m0_typec0 = file +m0_pathc0 = ../input/paper2/marmousi_slowness2 +#Error +error_type = root_mean_squared +integration_degree = 8 +#Input +inverted_model_path = ../../Paper2/extended/US_lBFGS/ +inverted_model_name = paper2_extended_inversion_lbfgs +inverted_model_prefix = g0s0 +inverted_model_number = 37 +#Output +write_error_field = 0 diff --git a/inversion.cpp b/inversion.cpp index 8d3ce0ae5b7deeb9c56bee3190ef9b6d603d6006..ce77687df1ef8bec38e005e39ddff336027fb42d 100644 --- a/inversion.cpp +++ b/inversion.cpp @@ -32,8 +32,8 @@ int inversion(const GmshFem& gmshFem) for (unsigned int c = 0; c < parametrization->size(); c++) { - save(configuration->m0(0.)[c], configuration->model_unknown(Support::BLK), name+"_m_blkc"+std::to_string(c)+"f"+suffix, "pos", ""); - save(configuration->m0(0.)[c], configuration->model_unknown(Support::BND), name+"_m_bndc"+std::to_string(c)+"f"+suffix, "pos", ""); + save(configuration->m0(0.)[c], configuration->model_unknown(Support::BLK), name+"_m_blkc"+std::to_string(c), "pos", ""); + save(configuration->m0(0.)[c], configuration->model_unknown(Support::BND), name+"_m_bndc"+std::to_string(c), "pos", ""); } unsigned int n_freq_tot = 0; diff --git a/inversion_plot_comp_paper2.py b/inversion_plot_comp_paper2.py index 53dd0f21d952fa37f9f4ac0ed12713d23db80236..9443858192397584ac8e9955ee596a2fa579a5f2 100644 --- a/inversion_plot_comp_paper2.py +++ b/inversion_plot_comp_paper2.py @@ -12,12 +12,14 @@ rc('text.latex', preamble=r'\usepackage{amsmath} \usepackage{amssymb}') rc('font',**{'family':'serif','sans-serif':['Times New Roman'],'size':15}) rc('text', usetex=True) #Value for 1 width figure +lw = 2. H = 3.; L = 3.; """ +#Abstract n_comp = 5 path = ['YuanFanChoiceA/','YuanFanChoiceB/','YuanFanChoiceC/','EisenstatChoiceA/','Classic/'] filename = ['paper2_inversion_nscgA','paper2_inversion_nscgB','paper2_inversion_nscgC','paper2_inversion_ncg','paper2_inversion_gd'] @@ -32,24 +34,170 @@ freqf = np.array([4.,6.,9.]) n_freq = np.size(freqf) """ +""" +#CS1: IP +j0 = 35.6633 n_comp = 4 -path = ['lBFGS/','lBFGS_W/','lBFGS_ST/','lBFGS_SM/'] +path = ['extended/US_lBFGS/','extended/S_lBFGS/','extended/SST_lBFGS/','extended/SSM_lBFGS/'] filename = ['paper2_extended_inversion_lbfgs','paper2_extended_inversion_lbfgs_w','paper2_extended_inversion_lbfgs_w_stab','paper2_extended_inversion_lbfgs_w_smooth'] lab = ['unweight','weight','stab','smooth'] glob = ['linesearch','linesearch','linesearch','linesearch'] order = [1, 1, 1, 1] col = ['k','k', 'k', 'k'] -lin = ['-','--','-.',':'] +mrk = ['']*4 +lin = [':','-.','--','-'] max_forward = 80 n_freq = 1 +""" +""" +#CS1: GD +j0 = 35.6633 +n_comp = 7 +path = ['extended/SST_GD_LS/','extended/SST_GD_TRA/','extended/SST_GD_BTRB/','extended/SST_GD_BTRC/','extended/SST_GD_BTRAR/','extended/SST_GD_BTRBR/','extended/SST_GD_BTRCR/'] +filename = ['paper2_extended_sst_gd_ls','paper2_extended_sst_gd_trA','paper2_extended_sst_gd_trB','paper2_extended_sst_gd_trC','paper2_extended_sst_gd_trAR','paper2_extended_sst_gd_trBR','paper2_extended_sst_gd_trCR'] +lab = ['LS','TR-P(A)','TR-P(B)','TR-P(C)','TR-R(A)','TR-R(B)','TR-R(C)'] +glob = ['linesearch'] + ['trust-region'] * 3 + ['trust-region-retro'] * 3 +order = [1] * 7 +col = ['k'] + ['C0','C1','C2'] + ['C3','C4','C5'] +mrk = ['']*7 +#lin = ['-']*7 +lin = [(0, (4, 4)), (0, (4, 4)), (0, (4, 4)),(4, (4, 4)), (0, (4, 8)), (4, (4, 8)), (8, (4, 8))] +max_forward = 360 +n_freq = 1 """ -LOAD + """ +#CS1: l-BFGS j0 = 35.6633 +n_comp = 7 +path = ['extended/SST_lBFGS/','extended/SST_lBFGS_TRA/','extended/SST_lBFGS_TRB/','extended/SST_lBFGS_TRC/','extended/SST_lBFGS_TRAR/','extended/SST_lBFGS_TRBR/','extended/SST_lBFGS_TRCR/'] +filename = ['paper2_extended_sst_lbfgs_ls','paper2_extended_sst_lbfgs_trA','paper2_extended_sst_lbfgs_trB','paper2_extended_sst_lbfgs_trC','paper2_extended_sst_lbfgs_trAR','paper2_extended_sst_lbfgs_trBR','paper2_extended_sst_lbfgs_trCR'] +lab = ['LS','TR-P(A)','TR-P(B)','TR-P(C)','TR-R(A)','TR-R(B)','TR-R(C)'] +glob = ['linesearch'] + ['trust-region'] * 3 + ['trust-region-retro'] * 3 +order = [1.5] * 7 +col = ['k'] + ['C0','C1','C2'] + ['C3','C4','C5'] +mrk = ['']*7 +#lin = ['-'] * 7 +lin = [(0, (4, 4)), (0, (4, 4)), (0, (4, 8)),(0, (4, 4)), (4, (4, 4)), (4, (4, 8)), (8, (4, 8))] +max_forward = 80 + +n_freq = 1 +""" + +""" +#CS1: Newton +j0 = 35.6633 +n_comp = 14 +path = ['extended/SST_NCG/','extended/SST_NSCGA/','extended/SST_NSCGB/','extended/SST_NSCGC/','extended/SST_NSCGAR/','extended/SST_NSCGBR/','extended/SST_NSCGCR/','extended/SST_NCGGN/','extended/SST_NSCGAGN/','extended/SST_NSCGBGN/','extended/SST_NSCGCGN/','extended/SST_NSCGARGN/','extended/SST_NSCGBRGN/','extended/SST_NSCGCRGN/'] +filename = ['paper2_extended_sst_ncg','paper2_extended_sst_nscgA','paper2_extended_sst_nscgB','paper2_extended_sst_nscgC','paper2_extended_sst_nscgAr','paper2_extended_sst_nscgBr','paper2_extended_sst_nscgC','paper2_extended_sst_ncggn','paper2_extended_sst_nscgAgn','paper2_extended_sst_nscgBgn','paper2_extended_sst_nscgCgn','paper2_extended_sst_nscgArgn','paper2_extended_sst_nscgBrgn','paper2_extended_sst_nscgCrgn'] +lab = ['ncg','nscgA','nscgB','nscgC','nscgAr','nscgBr','nscgCr','ncggn','nscgAgn','nscgBgn','nscgCgn','nscgArgn','nscgBrgn','nscgCrgn'] +glob = (['linesearch'] + ['trust-region'] * 3 + ['trust-region-retro'] * 3) * 2 +order = [2] * 14 +col = ['k', 'C0','C1','C2', 'C3', 'C4', 'C5'] * 2 +mrk = ['']*14 +lin = [(0,(4,4))]*14 + +#lin[0] = (0,(1,1)) +#lin[1] = (0,(4,4)) +#lin[2] = (2,(4,4)) +#lin[3] = (4,(4,4)) + +lin[0] = (4,(4,4)) +lin[1] = (2,(4,4)) +lin[2] = (0,(4,4)) +lin[3] = (4,(4,4)) +lin[4] = (0,(4,4)) +lin[5] = (4,(4,4)) +lin[4+7] = (0,(4,4)) +lin[5+7] = (4,(4,4)) +lin[0+7] = (4,(4,4)) +lin[2+7] = (0,(4,4)) +lin[3+7] = (4,(4,4)) + +max_forward = 180 + +n_freq = 1 +""" + +""" +#CS1: IP +j0 = 209.852 +n_comp = 4 +path = ['extended/concrete3/US_LBFGS_LS/','extended/concrete3/S_LBFGS_LS/','extended/concrete3/SST_LBFGS_LS/','extended/concrete3/SSM_LBFGS_LS/'] +filename = ['paper2_concrete3_us_lbfgs_ls','paper2_concrete3_s_lbfgs_ls','paper2_concrete3_sst_lbfgs_ls','paper2_concrete3_ssm_lbfgs_ls'] +lab = ['unweight','weight','stab','smooth'] +glob = ['linesearch','linesearch','linesearch','linesearch'] +order = [1, 1, 1, 1] +col = ['k','k', 'k', 'k'] +mrk = ['']*4 +lin = [':','-.','--','-'] +lin[2] = (4,(4,4)) +max_forward = 200+5 + +n_freq = 1 +""" + +""" +#CS2: GD +j0 = 209.852 +n_comp = 3 +path = ['extended/concrete3/SSM_GD_LS/','extended/concrete3/SSM_GD_BTRB/','extended/concrete3/SSM_GD_BTRBR/'] +filename = ['paper2_concrete3_ssm_gd_ls','paper2_concrete3_ssm_gd_trB','paper2_concrete3_ssm_gd_trBR'] +lab = ['LS','TR-P(B)','TR-R(B)'] +glob = ['linesearch'] + ['trust-region'] * 1 + ['trust-region-retro'] * 1 +order = [1] * 3 +col = ['k'] + ['C1'] + ['C4'] +mrk = ['']*3 +lin = ['-']*3 +max_forward = 800 + +n_freq = 1 +""" + +""" +#CS2: l-BFGS +j0 = 209.852 +n_comp = 3 +path = ['extended/concrete3/SSM_LBFGS_LS/','extended/concrete3/SSM_LBFGS_TRB/','extended/concrete3/SSM_LBFGS_TRBR/'] +filename = ['paper2_concrete3_ssm_lbfgs_ls','paper2_concrete3_ssm_lbfgs_trB','paper2_concrete3_ssm_lbfgs_trBR'] +lab = ['LS','TR-P(B)','TR-R(B)'] +glob = ['linesearch'] + ['trust-region'] * 1 + ['trust-region-retro'] * 1 +order = [1.5] * 3 +col = ['k'] + ['C1'] + ['C4'] +mrk = ['']*3 +lin = ['-']*3 +max_forward = 200 + +n_freq = 1 +""" + +#CS2: Newton +j0 = 209.852 +n_comp = 6 +path = ['extended/concrete3/SSM_NCG/','extended/concrete3/SSM_NSCGB/','extended/concrete3/SSM_NSCGBR/','extended/concrete3/SSM_NCGGN/','extended/concrete3/SSM_NSCGBGN/','extended/concrete3/SSM_NSCGBRGN/'] +filename = ['paper2_concrete3_ssm_ncg','paper2_concrete3_ssm_nscgB','paper2_concrete3_ssm_nscgBR','paper2_concrete3_ssm_ncggn','paper2_concrete3_ssm_nscgBgn','paper2_concrete3_ssm_nscgBRgn'] +lab = ['FN-LS','FN-TR-P(B)','FN-TR-R(B)','GN-LS','GN-TR-P(B)','GN-TR-R(B)'] +glob = ['linesearch','trust-region','trust-region-retro'] * 2 +order = [2.] * 6 +col = ['k','C1','C4']*2 +mrk = ['o']*6 +lin = ['-']*6 +max_forward = 600 + +n_freq = 1 + +""" +LOAD +""" +#j0 = 35.6633 +#snr = 5. +#j0 = 160.6752980643731 / snr jcfs = [] +p_ratiocfs = [] +r_ratiocfs = [] n_itcf = [] n_scalecf = [] n_itcfs = [] @@ -57,6 +205,8 @@ n_itcfs = [] for i in range(0,n_comp): n_scalef = [[]]*n_freq; jfs = [[]]*n_freq; + p_ratiofs = [[]]*n_freq; + r_ratiofs = [[]]*n_freq; n_itfs = [[]]*n_freq; n_itf = [0]*n_freq scalefs = [[]]*n_freq; @@ -64,6 +214,8 @@ for i in range(0,n_comp): n_scalef[f] = np.loadtxt(path[i]+filename[i]+'_globalminimum_historyg'+str(f)+'.csv',delimiter=';',max_rows=1,skiprows=3,dtype=np.integer)[1]; scalefs[f] = np.loadtxt(path[i]+filename[i]+'_globalminimum_historyg'+str(f)+'.csv',delimiter=';',usecols=2,max_rows=np.int(n_scalef[f]),skiprows=6,dtype=np.float); jfs[f] = [[]]*n_scalef[f]; + p_ratiofs[f] = [[]]*n_scalef[f]; + r_ratiofs[f] = [[]]*n_scalef[f]; n_itfs[f] = np.zeros(n_scalef[f],np.integer); line = 3 for s in range(0,n_scalef[f]): @@ -71,8 +223,14 @@ for i in range(0,n_comp): n_itf[f] = n_itf[f]+n_itfs[f][s] line=line+2 jfs[f][s] = np.loadtxt(path[i]+filename[i]+'_localminimum_historyg'+str(f)+'.csv',delimiter=';',max_rows=np.int(n_itfs[f][s]+1),skiprows=line,dtype=np.float)[:,0] / j0; + if glob[i] == 'trust-region' or glob[i] == 'trust-region-retro': + p_ratiofs[f][s] = np.loadtxt(path[i]+filename[i]+'_localminimum_historyg'+str(f)+'.csv',delimiter=';',max_rows=np.int(n_itfs[f][s]+1),skiprows=line,dtype=np.float)[:,5]; + r_ratiofs[f][s] = np.loadtxt(path[i]+filename[i]+'_localminimum_historyg'+str(f)+'.csv',delimiter=';',max_rows=np.int(n_itfs[f][s]+1),skiprows=line,dtype=np.float)[:,6]; + r_ratiofs[f][s][p_ratiofs[f][s] < 0] = np.nan; line=line+n_itfs[f][s]+1+1 jcfs.append(jfs) + p_ratiocfs.append(p_ratiofs) + r_ratiocfs.append(r_ratiofs) n_itcf.append(n_itf) n_itcfs.append(n_itfs) n_scalecf.append(n_scalef) @@ -82,31 +240,50 @@ it_descentcf = [[]*n_freq]*n_comp; bnd_descentcf = [[]*n_freq]*n_comp; n_forwardcf = [[]*n_freq]*n_comp; successcf = [[]*n_freq]*n_comp; +negativecf = [[]*n_freq]*n_comp; +etacf = [[]*n_freq]*n_comp; for i in range(0,n_comp): it_linef = [[]]*n_freq it_descentf = [[]]*n_freq bnd_descentf = [[]]*n_freq n_forwardf = [[]]*n_freq successf = [[]]*n_freq + negativef = [[]]*n_freq + etaf = [[]]*n_freq for f in range(0,n_freq): n_forwardf[f] = np.zeros(n_itcf[i][f],np.integer) if glob[i] == 'linesearch': it_linef[f] = np.loadtxt(path[i]+filename[i]+'_linesearch_historyg'+str(f)+'.csv',delimiter=';',usecols = 5, skiprows=1,dtype=np.integer) n_forwardf[f] += it_linef[f] - + + if order[i] == 1.5 and (glob[i] == 'trust-region' or glob[i] == 'trust-region-retro') : + successf[f] = np.zeros(n_itcf[i][f],np.integer) + bnd_descentf[f] = np.zeros(n_itcf[i][f],np.integer) + line = 2 + for n in range(0,n_itcf[i][f]): + bnd_descentf[f][n] = np.loadtxt(path[i]+filename[i]+'_descent_historyg'+str(f)+'.csv',delimiter=';',usecols=4,max_rows=1,skiprows=line,dtype=np.integer); + successf[f][n] = np.loadtxt(path[i]+filename[i]+'_descent_historyg'+str(f)+'.csv',delimiter=';',usecols=0,max_rows=1,skiprows=line,dtype=np.integer); + line=line+2 if order[i] == 2: it_descentf[f] = np.zeros(n_itcf[i][f],np.integer) successf[f] = np.zeros(n_itcf[i][f],np.integer) + etaf[f] = np.zeros(n_itcf[i][f],np.float) + negativef[f] = np.zeros(n_itcf[i][f],np.integer) bnd_descentf[f] = np.zeros(n_itcf[i][f],np.integer) line = 3 for n in range(0,n_itcf[i][f]): it_descentf[f][n] = np.loadtxt(path[i]+filename[i]+'_descent_historyg'+str(f)+'.csv',delimiter=';',usecols=3,max_rows=1,skiprows=line,dtype=np.integer); - if glob[i] == 'trust-region': + if glob[i] == 'trust-region' or glob[i] == 'trust-region-retro': bnd_descentf[f][n] = np.loadtxt(path[i]+filename[i]+'_descent_historyg'+str(f)+'.csv',delimiter=';',usecols=6,max_rows=1,skiprows=line,dtype=np.integer); + etaf[f][n] = np.loadtxt(path[i]+filename[i]+'_descent_historyg'+str(f)+'.csv',delimiter=';',usecols=1,max_rows=1,skiprows=line,dtype=np.float); successf[f][n] = np.loadtxt(path[i]+filename[i]+'_descent_historyg'+str(f)+'.csv',delimiter=';',usecols=0,max_rows=1,skiprows=line,dtype=np.integer); - line=line+it_descentf[f][n]+3 + line=line+it_descentf[f][n]+1 + negativef[f][n] = (np.loadtxt(path[i]+filename[i]+'_descent_historyg'+str(f)+'.csv',delimiter=';',usecols=1,max_rows=1,skiprows=line,dtype=np.float)<0); + line=line+2 n_forwardf[f] += 2*it_descentf[f] + if glob[i] == 'trust-region-retro': + n_forwardf[f] += 2 #retrospective Hessian-vector product n_forwardf[f] += 2 n_forwardf[f] = np.cumsum(n_forwardf[f]) n_forwardf[f] = np.insert(n_forwardf[f],0,0) @@ -115,49 +292,131 @@ for i in range(0,n_comp): bnd_descentcf[i] = bnd_descentf it_linecf[i] = it_linef successcf[i] = successf + etacf[i] = etaf + negativecf[i] = negativef """ -CONVERGENCE PLOT +DATA CONVERGENCE PLOT """ fig = [[]]*n_freq for f in range(0,n_freq): fig[f]=plt.figure(figsize=(2*L,H),tight_layout=False); - plt.subplots_adjust(top=0.95,right=0.98,bottom=0.09,left=0.16) + plt.subplots_adjust(top=0.95,right=0.97,bottom=0.09,left=0.10) plt.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) plt.grid(zorder=0) plt.xlim([0,max_forward]) - plt.xticks(np.arange(0,max_forward+1,15)) - plt.ylim([5e-4,2]) + plt.xticks(np.arange(0,max_forward+1,20)) + plt.ylim([5e-3,2]) plt.yscale('log') for i in range(0,n_comp): n_it=0 lines = [[]]*n_scalecf[i][f] plt.plot(n_forwardcf[i][f][n_it],jcfs[i][f][0][0],color=col[i],marker='o',zorder=3,markersize=3.) for s in range(0,n_scalecf[i][f]): - lines[s] = plt.plot(n_forwardcf[i][f][range(n_it,n_it+n_itcfs[i][f][s]+1)],jcfs[i][f][s][0:n_itcfs[i][f][s]+1],color=col[i],linestyle=lin[i],zorder=2,label=lab[i]) + lines[s] = plt.plot(n_forwardcf[i][f][range(n_it,n_it+n_itcfs[i][f][s]+1)],jcfs[i][f][s][0:n_itcfs[i][f][s]+1],color=col[i],linestyle=lin[i],zorder=2,label=lab[i],marker=mrk[i],markersize=3.,linewidth=lw) plt.plot(n_forwardcf[i][f][n_it+n_itcfs[i][f][s]],jcfs[i][f][s][n_itcfs[i][f][s]],color=col[i],marker='x',zorder=3,markersize=3.) n_it=n_it+n_itcfs[i][f][s] n_it = 0 #plt.legend() - plt.savefig('convergence'+str(f)+'.eps') + plt.savefig('convergence_comp'+str(f)+'.eps') + +""" +HISTORY CONVERGENCE PLOT (Retrospective/prospective ratio) +""" +fig = [[]]*n_freq +for f in range(0,n_freq): + fig[f]=plt.figure(figsize=(2*L,H / 2.),tight_layout=False); + plt.subplots_adjust(top=0.95,right=0.98,bottom=0.17,left=0.08) + plt.ticklabel_format(style='sci', axis='y', scilimits=(0,0)) + plt.grid(zorder=0) + plt.xticks(np.arange(0,23,2)) + plt.yticks(np.linspace(0,1.5,4)) + plt.xlim([1,22.5]) + plt.ylim([0.0,1.75]) + for i in range(1,3,1): + if glob[i] == 'trust-region': + plt.plot(range(1,n_itcfs[i][f][0]+1),p_ratiocfs[i][f][0][1:],color=col[i],linestyle=lin[i],zorder=2,label=r'$\rho_{\text{p}}$') + if glob[i] == 'trust-region-retro': + plt.plot(range(1,n_itcfs[i][f][0]+1),r_ratiocfs[i][f][0][1:],color=col[i],linestyle=lin[i],zorder=2,label=r'$\rho_{\text{r}}$') + #plt.legend() + plt.savefig('ratio_nscgrgn.eps') + +""" +HISTORY CONVERGENCE PLOT (forcing sequence) +""" +fig = [[]]*n_freq +for f in range(0,n_freq): + fig[f]=plt.figure(figsize=(2*L,H / 2.),tight_layout=False); + plt.subplots_adjust(top=0.95,right=0.98,bottom=0.17,left=0.08) + plt.grid(zorder=0) + plt.xticks(np.arange(0,23,2)) + plt.xlim([0,22.5]) + plt.ylim([0.4,1.]) + plt.yticks(np.arange(0.4,1.01,0.2)) + for i in range(0,n_comp,1): + plt.plot(range(0,n_itcfs[i][f][0]),np.sqrt(etacf[i][f][:]),color=col[i],linestyle=lin[i],zorder=2,label=r'$\rho_{\text{p}}$') + #plt.legend() + plt.savefig('eta_comp.eps') + +""" +HISTORY CONVERGENCE PLOT (inner iteration per outer iteration) +""" +fig = [[]]*n_freq +for f in range(0,n_freq): + fig[f]=plt.figure(figsize=(2*L,H / 2.),tight_layout=False); + plt.subplots_adjust(top=0.95,right=0.98,bottom=0.17,left=0.08) + plt.ticklabel_format(style='plain', axis='y', scilimits=(0,0)) + plt.grid(zorder=0) + #plt.xticks(np.arange(0,23,2)) + #plt.yticks(np.arange(1,15,2)) + #plt.xlim([0,22.5]) + #plt.ylim([0,14.5]) + plt.xticks(np.arange(0,46,5)) + plt.yticks(np.arange(1,37,7)) + plt.xlim([0,45.5]) + plt.ylim([0,40.5]) + for i in range(3,6,1): + plt.plot(range(0,n_itcfs[i][f][0]),it_descentcf[i][f][:],color=col[i],linestyle=lin[i],zorder=2) + plt.savefig('it_comp.eps') + +""" +MODEL CONVERGENCE PLOT +""" +#To investigate !!!! +errorcfs = [] +for i in range(0,n_comp): + errorc = np.loadtxt(path[i]+filename[i]+'_error.csv',delimiter=';')[:,0]; + errorcfs.append(errorc) + #plt.plot(n_forwardcf[i][0],errorc,color=col[i],linestyle=lin[i],zorder=2,label=lab[i]) + plt.plot(jcfs[i][0][0],errorc,color=col[i],linestyle=lin[i],zorder=2,label=lab[i]) + plt.legend() +plt.xscale('log') +plt.gca().invert_xaxis() """ STATS """ -print(''.rjust(30), 'Wave (tot.)'.rjust(30), 'Outer it. (tot.)'.rjust(30), 'Inner it. (mean)'.rjust(30), 'Failure (tot.)'.rjust(30), 'Bnd reached (tot.)'.rjust(30)) +print(''.rjust(10), 'Wave (tot.)'.rjust(20), 'Outer it. (tot.)'.rjust(20), 'Inner it. (mean)'.rjust(20), 'Failure (tot.)'.rjust(20), 'Bnd reached (tot.)'.rjust(20), 'Success (tot.)'.rjust(20), 'Negative curv. (tot.)'.rjust(20)) for i in range(0,n_comp): outter = np.sum(n_itcf[i]) inner = 0 failure = 0 boundary = 0 + success = 0 + negative = 0 call = 0 for f in range(0,n_freq): call += n_forwardcf[i][f][-1] inner += np.sum(it_descentcf[i][f]) if glob[i] == 'linesearch': failure += np.count_nonzero(it_linecf[i][f]) - elif glob[i] == 'trust-region': + elif glob[i] == 'trust-region' or glob[i] == 'trust-region-retro': for s in range(0,n_scalecf[i][f]): failure += n_itcfs[i][f][s] - np.count_nonzero(np.diff(jcfs[i][f][s])) boundary += np.sum(bnd_descentcf[i][f]) - print(path[i].rjust(30), str(call).rjust(30), str(outter).rjust(30), str(inner/outter).rjust(30), str(failure/outter).rjust(30), str(boundary/outter).rjust(30)) \ No newline at end of file + if order[i] == 1.5 and (glob[i] == 'trust-region' or glob[i] == 'trust-region-retro') : + success += np.sum(successcf[i][f]) + if order[i] == 2: + success += np.sum(successcf[i][f]) + negative += np.sum(negativecf[i][f]) + print(lab[i].rjust(10), str(call).rjust(20), str(outter).rjust(20), str(inner/outter).rjust(20), str(failure/outter).rjust(20), str(boundary/outter).rjust(20), str(success/outter).rjust(20), str(negative/outter).rjust(20) ) \ No newline at end of file