diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2014-01-28 12:23:08 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2014-01-28 12:23:08 +0000 |
commit | 91ec406325df69dc89d44a604a0b67c052f57cfc (patch) | |
tree | cf3985f7db72d668102158f3fc65f42f3cfff42a /src | |
parent | ec310a9a392987e8ddcaf14266f104d73a678b03 (diff) | |
download | gnunet-91ec406325df69dc89d44a604a0b67c052f57cfc.tar.gz gnunet-91ec406325df69dc89d44a604a0b67c052f57cfc.zip |
clean up configuration parameters and implementation
Diffstat (limited to 'src')
-rw-r--r-- | src/ats/ats.conf.in | 25 | ||||
-rw-r--r-- | src/ats/plugin_ats_mlp.c | 154 | ||||
-rw-r--r-- | src/ats/plugin_ats_mlp.h | 18 |
3 files changed, 124 insertions, 73 deletions
diff --git a/src/ats/ats.conf.in b/src/ats/ats.conf.in index 589ee6802..57e82cefc 100644 --- a/src/ats/ats.conf.in +++ b/src/ats/ats.conf.in | |||
@@ -34,13 +34,12 @@ BLUETOOTH_QUOTA_OUT = 128 KiB | |||
34 | 34 | ||
35 | 35 | ||
36 | # MLP specific settings | 36 | # MLP specific settings |
37 | MLP_MIN_INTERVAL = 15000 | ||
38 | |||
39 | # check if required | ||
40 | #MLP_EXEC_INTERVAL = 30000 | ||
41 | |||
42 | # MLP defaults | 37 | # MLP defaults |
38 | |||
39 | # Maximum duration for a solution process | ||
43 | # MLP_MAX_DURATION = 3 s | 40 | # MLP_MAX_DURATION = 3 s |
41 | |||
42 | # Maximum number of iterations for a solution process | ||
44 | # MLP_MAX_ITERATIONS = 1024 | 43 | # MLP_MAX_ITERATIONS = 1024 |
45 | # MLP_COEFFICIENT_D = 1.0 | 44 | # MLP_COEFFICIENT_D = 1.0 |
46 | # MLP_COEFFICIENT_U = 1.0 | 45 | # MLP_COEFFICIENT_U = 1.0 |
@@ -48,11 +47,13 @@ MLP_MIN_INTERVAL = 15000 | |||
48 | # MLP_MIN_BANDWIDTH = 1024 | 47 | # MLP_MIN_BANDWIDTH = 1024 |
49 | # MLP_MIN_CONNECTIONS = 4 | 48 | # MLP_MIN_CONNECTIONS = 4 |
50 | 49 | ||
51 | # MLP Debugging settings | 50 | # MLP Log settings |
52 | DUMP_MLP = NO | 51 | # Dump all problems to disk |
53 | DUMP_SOLUTION = NO | 52 | # DUMP_PROBLEM_ALL = YES |
54 | DUMP_OVERWRITE = NO | 53 | # Dump all solution to disk |
55 | DUMP_MIN_PEERS = 0 | 54 | # DUMP_SOLUTION_ALL = YES |
56 | DUMP_MIN_ADDRS = 0 | ||
57 | DUMP_OVERWRITE = NO | ||
58 | 55 | ||
56 | # Dump all problems to disk | ||
57 | DUMP_PROBLEM_ON_FAIL = YES | ||
58 | # Dump all solution to disk | ||
59 | DUMP_SOLUTION_ON_FAIL = YES \ No newline at end of file | ||
diff --git a/src/ats/plugin_ats_mlp.c b/src/ats/plugin_ats_mlp.c index 7dd31edf5..3345be615 100644 --- a/src/ats/plugin_ats_mlp.c +++ b/src/ats/plugin_ats_mlp.c | |||
@@ -81,7 +81,7 @@ | |||
81 | * adapted using configuration settings and uses the following parameters: | 81 | * adapted using configuration settings and uses the following parameters: |
82 | * * MLP_MAX_DURATION: | 82 | * * MLP_MAX_DURATION: |
83 | * Maximum duration for a MLP solution procees (default: 3 sec.) | 83 | * Maximum duration for a MLP solution procees (default: 3 sec.) |
84 | * * MLP_MAX_DURATION: | 84 | * * MLP_MAX_ITERATIONS: |
85 | * Maximum number of iterations for a MLP solution process (default: | 85 | * Maximum number of iterations for a MLP solution process (default: |
86 | * 1024) | 86 | * 1024) |
87 | * * MLP_MIN_CONNECTIONS: | 87 | * * MLP_MIN_CONNECTIONS: |
@@ -1099,7 +1099,8 @@ GAS_mlp_solve_problem (void *solver) | |||
1099 | int res_lp = 0; | 1099 | int res_lp = 0; |
1100 | int res_mip = 0; | 1100 | int res_mip = 0; |
1101 | 1101 | ||
1102 | struct GNUNET_TIME_Absolute start; | 1102 | struct GNUNET_TIME_Absolute start_total; |
1103 | struct GNUNET_TIME_Absolute start_cur_op; | ||
1103 | struct GNUNET_TIME_Relative dur_total; | 1104 | struct GNUNET_TIME_Relative dur_total; |
1104 | struct GNUNET_TIME_Relative dur_setup; | 1105 | struct GNUNET_TIME_Relative dur_setup; |
1105 | struct GNUNET_TIME_Relative dur_lp; | 1106 | struct GNUNET_TIME_Relative dur_lp; |
@@ -1114,7 +1115,7 @@ GAS_mlp_solve_problem (void *solver) | |||
1114 | } | 1115 | } |
1115 | notify(mlp, GAS_OP_SOLVE_START, GAS_STAT_SUCCESS, | 1116 | notify(mlp, GAS_OP_SOLVE_START, GAS_STAT_SUCCESS, |
1116 | (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED); | 1117 | (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED); |
1117 | start = GNUNET_TIME_absolute_get(); | 1118 | start_total = GNUNET_TIME_absolute_get(); |
1118 | 1119 | ||
1119 | if (0 == GNUNET_CONTAINER_multipeermap_size(mlp->requested_peers)) | 1120 | if (0 == GNUNET_CONTAINER_multipeermap_size(mlp->requested_peers)) |
1120 | { | 1121 | { |
@@ -1153,40 +1154,61 @@ GAS_mlp_solve_problem (void *solver) | |||
1153 | LOG(GNUNET_ERROR_TYPE_DEBUG, "Problem was updated, resolving\n"); | 1154 | LOG(GNUNET_ERROR_TYPE_DEBUG, "Problem was updated, resolving\n"); |
1154 | } | 1155 | } |
1155 | 1156 | ||
1156 | dur_setup = GNUNET_TIME_absolute_get_duration (start); | 1157 | dur_setup = GNUNET_TIME_absolute_get_duration (start_total); |
1157 | mlp->control_param_lp.presolve = GLP_YES; | ||
1158 | /* Run LP solver */ | ||
1159 | 1158 | ||
1159 | /* Run LP solver */ | ||
1160 | mlp->control_param_lp.presolve = GLP_YES; | ||
1160 | notify(mlp, GAS_OP_SOLVE_MLP_LP_START, GAS_STAT_SUCCESS, | 1161 | notify(mlp, GAS_OP_SOLVE_MLP_LP_START, GAS_STAT_SUCCESS, |
1161 | (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED); | 1162 | (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED); |
1162 | LOG(GNUNET_ERROR_TYPE_DEBUG, | 1163 | LOG(GNUNET_ERROR_TYPE_DEBUG, |
1163 | "Running LP solver %s\n", | 1164 | "Running LP solver %s\n", |
1164 | (GLP_YES == mlp->control_param_lp.presolve)? "with presolver": "without presolver"); | 1165 | (GLP_YES == mlp->control_param_lp.presolve)? "with presolver": "without presolver"); |
1166 | start_cur_op = GNUNET_TIME_absolute_get(); | ||
1167 | |||
1168 | /* Solve LP */ | ||
1165 | res_lp = mlp_solve_lp_problem(mlp); | 1169 | res_lp = mlp_solve_lp_problem(mlp); |
1170 | |||
1171 | dur_lp = GNUNET_TIME_absolute_get_duration (start_cur_op); | ||
1166 | notify(mlp, GAS_OP_SOLVE_MLP_LP_STOP, | 1172 | notify(mlp, GAS_OP_SOLVE_MLP_LP_STOP, |
1167 | (GNUNET_OK == res_lp) ? GAS_STAT_SUCCESS : GAS_STAT_FAIL, | 1173 | (GNUNET_OK == res_lp) ? GAS_STAT_SUCCESS : GAS_STAT_FAIL, |
1168 | (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED); | 1174 | (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED); |
1169 | 1175 | ||
1170 | dur_lp = GNUNET_TIME_absolute_get_duration (start); | ||
1171 | dur_lp = GNUNET_TIME_relative_subtract(dur_lp, dur_setup); | ||
1172 | 1176 | ||
1173 | /* Run MLP solver */ | 1177 | /* Run MLP solver */ |
1174 | LOG(GNUNET_ERROR_TYPE_DEBUG, "Running MLP solver \n"); | 1178 | if (GNUNET_OK == res_lp) |
1175 | notify(mlp, GAS_OP_SOLVE_MLP_MLP_START, GAS_STAT_SUCCESS, | 1179 | { |
1176 | (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED); | 1180 | LOG(GNUNET_ERROR_TYPE_DEBUG, "Running MLP solver \n"); |
1177 | res_mip = mlp_solve_mlp_problem(mlp); | 1181 | notify(mlp, GAS_OP_SOLVE_MLP_MLP_START, GAS_STAT_SUCCESS, |
1178 | notify(mlp, GAS_OP_SOLVE_MLP_MLP_STOP, | 1182 | (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED); |
1179 | (GNUNET_OK == res_lp) ? GAS_STAT_SUCCESS : GAS_STAT_FAIL, | 1183 | start_cur_op = GNUNET_TIME_absolute_get(); |
1180 | (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED); | 1184 | |
1185 | /* Solve MIP */ | ||
1186 | res_mip = mlp_solve_mlp_problem(mlp); | ||
1187 | |||
1188 | dur_mlp = GNUNET_TIME_absolute_get_duration (start_cur_op); | ||
1189 | dur_total = GNUNET_TIME_absolute_get_duration (start_total); | ||
1190 | |||
1191 | notify(mlp, GAS_OP_SOLVE_MLP_MLP_STOP, | ||
1192 | (GNUNET_OK == res_mip) ? GAS_STAT_SUCCESS : GAS_STAT_FAIL, | ||
1193 | (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED); | ||
1194 | } | ||
1195 | else | ||
1196 | { | ||
1197 | /* Do not execute mip solver since lp solution is invalid */ | ||
1198 | dur_mlp = GNUNET_TIME_UNIT_ZERO; | ||
1199 | dur_total = GNUNET_TIME_absolute_get_duration (start_total); | ||
1200 | GNUNET_break (0); | ||
1201 | notify(mlp, GAS_OP_SOLVE_MLP_MLP_STOP, GAS_STAT_FAIL, | ||
1202 | (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED); | ||
1203 | res_mip = GNUNET_SYSERR; | ||
1204 | } | ||
1205 | |||
1206 | |||
1207 | /* Notify about end */ | ||
1181 | notify(mlp, GAS_OP_SOLVE_STOP, | 1208 | notify(mlp, GAS_OP_SOLVE_STOP, |
1182 | (GNUNET_OK == res_mip) ? GAS_STAT_SUCCESS : GAS_STAT_FAIL, | 1209 | ((GNUNET_OK == res_mip) && (GNUNET_OK == res_mip)) ? GAS_STAT_SUCCESS : GAS_STAT_FAIL, |
1183 | (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED); | 1210 | (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED); |
1184 | 1211 | ||
1185 | dur_mlp = GNUNET_TIME_absolute_get_duration (start); | ||
1186 | dur_mlp = GNUNET_TIME_relative_subtract(dur_mlp, dur_setup); | ||
1187 | dur_mlp = GNUNET_TIME_relative_subtract(dur_mlp, dur_lp); | ||
1188 | dur_total = GNUNET_TIME_absolute_get_duration (start); | ||
1189 | |||
1190 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 1212 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
1191 | "Execution time for %s solve: (total/setup/lp/mlp) : %llu %llu %llu %llu\n", | 1213 | "Execution time for %s solve: (total/setup/lp/mlp) : %llu %llu %llu %llu\n", |
1192 | (GNUNET_YES == mlp->mlp_prob_changed) ? "full" : "updated", | 1214 | (GNUNET_YES == mlp->mlp_prob_changed) ? "full" : "updated", |
@@ -1218,24 +1240,26 @@ GAS_mlp_solve_problem (void *solver) | |||
1218 | GAS_INFO_NONE); | 1240 | GAS_INFO_NONE); |
1219 | 1241 | ||
1220 | struct GNUNET_TIME_Absolute time = GNUNET_TIME_absolute_get(); | 1242 | struct GNUNET_TIME_Absolute time = GNUNET_TIME_absolute_get(); |
1221 | if (GNUNET_YES == mlp->write_mip_mps) | 1243 | if ( (GNUNET_YES == mlp->dump_solution_all) || |
1244 | (mlp->dump_solution_on_fail && ((GNUNET_OK != res_lp) || (GNUNET_OK != res_mip))) ) | ||
1222 | { | 1245 | { |
1223 | /* Write problem to disk */ | 1246 | /* Write problem to disk */ |
1224 | GNUNET_asprintf(&filename, "problem_p_%u_a%u_%llu.mps", mlp->p.num_peers, | 1247 | GNUNET_asprintf(&filename, "problem_p_%u_a%u_%llu.mps", mlp->p.num_peers, |
1225 | mlp->p.num_addresses, time.abs_value_us); | 1248 | mlp->p.num_addresses, time.abs_value_us); |
1226 | LOG(GNUNET_ERROR_TYPE_ERROR, "DUMP: %s \n", filename); | 1249 | LOG(GNUNET_ERROR_TYPE_ERROR, "Dumped problem to file: `%s' \n", filename); |
1227 | glp_write_lp(mlp->p.prob, NULL, filename); | 1250 | glp_write_mps (mlp->p.prob, GLP_MPS_FILE, NULL, filename); |
1228 | GNUNET_free(filename); | ||
1229 | } | ||
1230 | if (GNUNET_YES == mlp->write_mip_sol) | ||
1231 | { | ||
1232 | /* Write solution to disk */ | ||
1233 | GNUNET_asprintf(&filename, "problem_p_%u_a%u_%llu.sol", mlp->p.num_peers, | ||
1234 | mlp->p.num_addresses, time.abs_value_us); | ||
1235 | glp_print_mip(mlp->p.prob, filename); | ||
1236 | LOG(GNUNET_ERROR_TYPE_ERROR, "DUMP: %s \n", filename); | ||
1237 | GNUNET_free(filename); | 1251 | GNUNET_free(filename); |
1238 | } | 1252 | } |
1253 | if ( (mlp->dump_solution_all) || | ||
1254 | (mlp->dump_solution_on_fail && ((GNUNET_OK != res_lp) || (GNUNET_OK != res_mip))) ) | ||
1255 | { | ||
1256 | /* Write solution to disk */ | ||
1257 | GNUNET_asprintf(&filename, "problem_p_%u_a%u_%llu.sol", mlp->p.num_peers, | ||
1258 | mlp->p.num_addresses, time.abs_value_us); | ||
1259 | glp_print_mip(mlp->p.prob, filename); | ||
1260 | LOG(GNUNET_ERROR_TYPE_ERROR, "Dumped solution to file: `%s' \n", filename); | ||
1261 | GNUNET_free(filename); | ||
1262 | } | ||
1239 | 1263 | ||
1240 | /* Reset change and update marker */ | 1264 | /* Reset change and update marker */ |
1241 | mlp->control_param_lp.presolve = GLP_NO; | 1265 | mlp->control_param_lp.presolve = GLP_NO; |
@@ -1936,25 +1960,38 @@ libgnunet_plugin_ats_mlp_init (void *cls) | |||
1936 | break; | 1960 | break; |
1937 | } | 1961 | } |
1938 | 1962 | ||
1939 | mlp->write_mip_mps = GNUNET_CONFIGURATION_get_value_yesno (env->cfg, "ats", | 1963 | mlp->dump_problem_all = GNUNET_CONFIGURATION_get_value_yesno (env->cfg, |
1940 | "DUMP_MLP"); | 1964 | "ats", "DUMP_PROBLEM_ALL"); |
1941 | if (GNUNET_SYSERR == mlp->write_mip_mps) | 1965 | if (GNUNET_SYSERR == mlp->dump_problem_all) |
1942 | mlp->write_mip_mps = GNUNET_NO; | 1966 | mlp->dump_problem_all = GNUNET_NO; |
1943 | mlp->write_mip_sol = GNUNET_CONFIGURATION_get_value_yesno (env->cfg, "ats", | 1967 | |
1944 | "DUMP_SOLUTION"); | 1968 | mlp->dump_solution_all = GNUNET_CONFIGURATION_get_value_yesno (env->cfg, |
1945 | if (GNUNET_SYSERR == mlp->write_mip_sol) | 1969 | "ats", "DUMP_SOLUTION_ALL"); |
1946 | mlp->write_mip_sol = GNUNET_NO; | 1970 | if (GNUNET_SYSERR == mlp->dump_solution_all) |
1971 | mlp->dump_solution_all = GNUNET_NO; | ||
1972 | |||
1973 | mlp->dump_problem_on_fail = GNUNET_CONFIGURATION_get_value_yesno (env->cfg, | ||
1974 | "ats", "DUMP_PROBLEM_ON_FAIL"); | ||
1975 | if (GNUNET_SYSERR == mlp->dump_problem_on_fail) | ||
1976 | mlp->dump_problem_on_fail = GNUNET_NO; | ||
1977 | |||
1978 | mlp->dump_solution_on_fail = GNUNET_CONFIGURATION_get_value_yesno (env->cfg, | ||
1979 | "ats", "DUMP_SOLUTION_ON_FAIL"); | ||
1980 | if (GNUNET_SYSERR == mlp->dump_solution_on_fail) | ||
1981 | mlp->dump_solution_on_fail = GNUNET_NO; | ||
1947 | 1982 | ||
1948 | mlp->pv.BIG_M = (double) BIG_M_VALUE; | 1983 | mlp->pv.BIG_M = (double) BIG_M_VALUE; |
1949 | 1984 | ||
1950 | /* Get timeout for iterations */ | 1985 | /* Get timeout for iterations */ |
1951 | if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_time(env->cfg, "ats", "MLP_MAX_DURATION", &max_duration)) | 1986 | if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_time(env->cfg, "ats", |
1987 | "MLP_MAX_DURATION", &max_duration)) | ||
1952 | { | 1988 | { |
1953 | max_duration = MLP_MAX_EXEC_DURATION; | 1989 | max_duration = MLP_MAX_EXEC_DURATION; |
1954 | } | 1990 | } |
1955 | 1991 | ||
1956 | /* Get maximum number of iterations */ | 1992 | /* Get maximum number of iterations */ |
1957 | if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_size(env->cfg, "ats", "MLP_MAX_ITERATIONS", &max_iterations)) | 1993 | if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_size(env->cfg, "ats", |
1994 | "MLP_MAX_ITERATIONS", &max_iterations)) | ||
1958 | { | 1995 | { |
1959 | max_iterations = MLP_MAX_ITERATIONS; | 1996 | max_iterations = MLP_MAX_ITERATIONS; |
1960 | } | 1997 | } |
@@ -1999,17 +2036,16 @@ libgnunet_plugin_ats_mlp_init (void *cls) | |||
1999 | i_distance = c; | 2036 | i_distance = c; |
2000 | } | 2037 | } |
2001 | 2038 | ||
2002 | if ((i_delay != MLP_NaN) && (GNUNET_OK == GNUNET_CONFIGURATION_get_value_size (env->cfg, "ats", | 2039 | if ( (i_delay != MLP_NaN) && |
2003 | "MLP_COEFFICIENT_QUALITY_DELAY", | 2040 | (GNUNET_OK == GNUNET_CONFIGURATION_get_value_size (env->cfg, "ats", |
2004 | &tmp))) | 2041 | "MLP_COEFFICIENT_QUALITY_DELAY", &tmp)) ) |
2005 | |||
2006 | mlp->pv.co_Q[i_delay] = (double) tmp / 100; | 2042 | mlp->pv.co_Q[i_delay] = (double) tmp / 100; |
2007 | else | 2043 | else |
2008 | mlp->pv.co_Q[i_delay] = DEFAULT_QUALITY; | 2044 | mlp->pv.co_Q[i_delay] = DEFAULT_QUALITY; |
2009 | 2045 | ||
2010 | if ((i_distance != MLP_NaN) && (GNUNET_OK == GNUNET_CONFIGURATION_get_value_size (env->cfg, "ats", | 2046 | if ( (i_distance != MLP_NaN) && |
2011 | "MLP_COEFFICIENT_QUALITY_DISTANCE", | 2047 | (GNUNET_OK == GNUNET_CONFIGURATION_get_value_size (env->cfg, "ats", |
2012 | &tmp))) | 2048 | "MLP_COEFFICIENT_QUALITY_DISTANCE", &tmp)) ) |
2013 | mlp->pv.co_Q[i_distance] = (double) tmp / 100; | 2049 | mlp->pv.co_Q[i_distance] = (double) tmp / 100; |
2014 | else | 2050 | else |
2015 | mlp->pv.co_Q[i_distance] = DEFAULT_QUALITY; | 2051 | mlp->pv.co_Q[i_distance] = DEFAULT_QUALITY; |
@@ -2045,10 +2081,11 @@ libgnunet_plugin_ats_mlp_init (void *cls) | |||
2045 | mlp->pv.quota_out[c] = env->out_quota[c2]; | 2081 | mlp->pv.quota_out[c] = env->out_quota[c2]; |
2046 | mlp->pv.quota_in[c] = env->in_quota[c2]; | 2082 | mlp->pv.quota_in[c] = env->in_quota[c2]; |
2047 | found = GNUNET_YES; | 2083 | found = GNUNET_YES; |
2048 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Quota for network `%s' (in/out) %llu/%llu\n", | 2084 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
2049 | GNUNET_ATS_print_network_type(mlp->pv.quota_index[c]), | 2085 | "Quota for network `%s' (in/out) %llu/%llu\n", |
2050 | mlp->pv.quota_out[c], | 2086 | GNUNET_ATS_print_network_type(mlp->pv.quota_index[c]), |
2051 | mlp->pv.quota_in[c]); | 2087 | mlp->pv.quota_out[c], |
2088 | mlp->pv.quota_in[c]); | ||
2052 | break; | 2089 | break; |
2053 | } | 2090 | } |
2054 | } | 2091 | } |
@@ -2056,7 +2093,8 @@ libgnunet_plugin_ats_mlp_init (void *cls) | |||
2056 | /* Check if defined quota could make problem unsolvable */ | 2093 | /* Check if defined quota could make problem unsolvable */ |
2057 | if ((n_min * b_min) > mlp->pv.quota_out[c]) | 2094 | if ((n_min * b_min) > mlp->pv.quota_out[c]) |
2058 | { | 2095 | { |
2059 | LOG (GNUNET_ERROR_TYPE_INFO, _("Adjusting inconsistent outbound quota configuration for network `%s', is %llu must be at least %llu\n"), | 2096 | LOG (GNUNET_ERROR_TYPE_INFO, |
2097 | _("Adjusting inconsistent outbound quota configuration for network `%s', is %llu must be at least %llu\n"), | ||
2060 | GNUNET_ATS_print_network_type(mlp->pv.quota_index[c]), | 2098 | GNUNET_ATS_print_network_type(mlp->pv.quota_index[c]), |
2061 | mlp->pv.quota_out[c], | 2099 | mlp->pv.quota_out[c], |
2062 | (n_min * b_min)); | 2100 | (n_min * b_min)); |
@@ -2064,7 +2102,8 @@ libgnunet_plugin_ats_mlp_init (void *cls) | |||
2064 | } | 2102 | } |
2065 | if ((n_min * b_min) > mlp->pv.quota_in[c]) | 2103 | if ((n_min * b_min) > mlp->pv.quota_in[c]) |
2066 | { | 2104 | { |
2067 | LOG (GNUNET_ERROR_TYPE_INFO, _("Adjusting inconsistent inbound quota configuration for network `%s', is %llu must be at least %llu\n"), | 2105 | LOG (GNUNET_ERROR_TYPE_INFO, |
2106 | _("Adjusting inconsistent inbound quota configuration for network `%s', is %llu must be at least %llu\n"), | ||
2068 | GNUNET_ATS_print_network_type(mlp->pv.quota_index[c]), | 2107 | GNUNET_ATS_print_network_type(mlp->pv.quota_index[c]), |
2069 | mlp->pv.quota_in[c], | 2108 | mlp->pv.quota_in[c], |
2070 | (n_min * b_min)); | 2109 | (n_min * b_min)); |
@@ -2074,7 +2113,8 @@ libgnunet_plugin_ats_mlp_init (void *cls) | |||
2074 | /* Check if bandwidth is too big to make problem solvable */ | 2113 | /* Check if bandwidth is too big to make problem solvable */ |
2075 | if (mlp->pv.BIG_M < mlp->pv.quota_out[c]) | 2114 | if (mlp->pv.BIG_M < mlp->pv.quota_out[c]) |
2076 | { | 2115 | { |
2077 | LOG (GNUNET_ERROR_TYPE_INFO, _("Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"), | 2116 | LOG (GNUNET_ERROR_TYPE_INFO, |
2117 | _("Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"), | ||
2078 | GNUNET_ATS_print_network_type(mlp->pv.quota_index[c]), | 2118 | GNUNET_ATS_print_network_type(mlp->pv.quota_index[c]), |
2079 | mlp->pv.quota_out[c], | 2119 | mlp->pv.quota_out[c], |
2080 | mlp->pv.BIG_M); | 2120 | mlp->pv.BIG_M); |
diff --git a/src/ats/plugin_ats_mlp.h b/src/ats/plugin_ats_mlp.h index 57698c708..2ef640e75 100644 --- a/src/ats/plugin_ats_mlp.h +++ b/src/ats/plugin_ats_mlp.h | |||
@@ -317,14 +317,24 @@ struct GAS_MLP_Handle | |||
317 | int mlp_auto_solve; | 317 | int mlp_auto_solve; |
318 | 318 | ||
319 | /** | 319 | /** |
320 | * Write MILP problem to a MPS file | 320 | * Write all MILP problems to a MPS file |
321 | */ | 321 | */ |
322 | int write_mip_mps; | 322 | int dump_problem_all; |
323 | 323 | ||
324 | /** | 324 | /** |
325 | * Write MILP problem to a MPS file | 325 | * Write all MILP problem solutions to a file |
326 | */ | 326 | */ |
327 | int write_mip_sol; | 327 | int dump_solution_all; |
328 | |||
329 | /** | ||
330 | * Write MILP problems to a MPS file when solver fails | ||
331 | */ | ||
332 | int dump_problem_on_fail; | ||
333 | |||
334 | /** | ||
335 | * Write MILP problem solutions to a file when solver fails | ||
336 | */ | ||
337 | int dump_solution_on_fail; | ||
328 | 338 | ||
329 | }; | 339 | }; |
330 | 340 | ||