diff options
-rw-r--r-- | src/ats/gnunet-service-ats_addresses_mlp.c | 29 | ||||
-rw-r--r-- | src/ats/gnunet-service-ats_addresses_mlp.h | 11 | ||||
-rw-r--r-- | src/ats/test_ats_mlp.c | 3 |
3 files changed, 29 insertions, 14 deletions
diff --git a/src/ats/gnunet-service-ats_addresses_mlp.c b/src/ats/gnunet-service-ats_addresses_mlp.c index 185d24f7d..f8ac71bca 100644 --- a/src/ats/gnunet-service-ats_addresses_mlp.c +++ b/src/ats/gnunet-service-ats_addresses_mlp.c | |||
@@ -136,11 +136,6 @@ | |||
136 | #define LOG(kind,...) GNUNET_log_from (kind, "ats-mlp",__VA_ARGS__) | 136 | #define LOG(kind,...) GNUNET_log_from (kind, "ats-mlp",__VA_ARGS__) |
137 | 137 | ||
138 | /** | 138 | /** |
139 | * Write MLP problem to disk | ||
140 | */ | ||
141 | #define WRITE_MLP GNUNET_NO | ||
142 | |||
143 | /** | ||
144 | * Print debug output for mlp problem creation | 139 | * Print debug output for mlp problem creation |
145 | */ | 140 | */ |
146 | #define DEBUG_MLP_PROBLEM_CREATION GNUNET_YES | 141 | #define DEBUG_MLP_PROBLEM_CREATION GNUNET_YES |
@@ -917,6 +912,7 @@ int | |||
917 | GAS_mlp_solve_problem (void *solver, struct GNUNET_CONTAINER_MultiHashMap * addresses) | 912 | GAS_mlp_solve_problem (void *solver, struct GNUNET_CONTAINER_MultiHashMap * addresses) |
918 | { | 913 | { |
919 | struct GAS_MLP_Handle *mlp = solver; | 914 | struct GAS_MLP_Handle *mlp = solver; |
915 | char *filename; | ||
920 | int res_lp = 0; | 916 | int res_lp = 0; |
921 | int res_mip = 0; | 917 | int res_mip = 0; |
922 | struct GNUNET_TIME_Absolute start_build; | 918 | struct GNUNET_TIME_Absolute start_build; |
@@ -985,17 +981,20 @@ GAS_mlp_solve_problem (void *solver, struct GNUNET_CONTAINER_MultiHashMap * addr | |||
985 | if ((GNUNET_OK == res_lp) && (GNUNET_OK == res_mip)) | 981 | if ((GNUNET_OK == res_lp) && (GNUNET_OK == res_mip)) |
986 | GNUNET_CONTAINER_multihashmap_iterate (addresses, &mlp_propagate_results, mlp); | 982 | GNUNET_CONTAINER_multihashmap_iterate (addresses, &mlp_propagate_results, mlp); |
987 | 983 | ||
988 | /* Write problem and solution to disk */ | ||
989 | #if WRITE_MLP | ||
990 | char *filename; | ||
991 | struct GNUNET_TIME_Absolute time = GNUNET_TIME_absolute_get(); | 984 | struct GNUNET_TIME_Absolute time = GNUNET_TIME_absolute_get(); |
992 | GNUNET_asprintf (&filename, "problem_%llu.lp", time.abs_value); | 985 | if (GNUNET_YES == mlp->write_mip_mps) |
993 | glp_write_lp(mlp->p.prob, 0, filename); | 986 | { |
994 | GNUNET_free (filename); | 987 | /* Write problem and solution to disk */ |
995 | GNUNET_asprintf (&filename, "problem_%llu.mip", time.abs_value); | 988 | GNUNET_asprintf (&filename, "problem_p_%u_a%u_%llu.mps", mlp->p.num_peers, mlp->p.num_addresses, time.abs_value); |
996 | glp_print_mip (mlp->p.prob, filename ); | 989 | glp_write_mps(mlp->p.prob, GLP_MPS_FILE, NULL, filename); |
997 | GNUNET_free (filename); | 990 | GNUNET_free (filename); |
998 | #endif | 991 | } |
992 | if (GNUNET_YES == mlp->write_mip_sol) | ||
993 | { | ||
994 | GNUNET_asprintf (&filename, "problem_p_%u_a%u_%llu.sol", mlp->p.num_peers, mlp->p.num_addresses, time.abs_value); | ||
995 | glp_print_mip (mlp->p.prob, filename ); | ||
996 | GNUNET_free (filename); | ||
997 | } | ||
999 | 998 | ||
1000 | /* Reset change and update marker */ | 999 | /* Reset change and update marker */ |
1001 | mlp->control_param_lp.presolve = GLP_NO; | 1000 | mlp->control_param_lp.presolve = GLP_NO; |
@@ -1778,6 +1777,8 @@ GAS_mlp_init (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
1778 | mlp->pv.b_min = b_min; | 1777 | mlp->pv.b_min = b_min; |
1779 | mlp->pv.n_min = n_min; | 1778 | mlp->pv.n_min = n_min; |
1780 | mlp->pv.m_q = GNUNET_ATS_QualityPropertiesCount; | 1779 | mlp->pv.m_q = GNUNET_ATS_QualityPropertiesCount; |
1780 | mlp->write_mip_mps = GNUNET_NO; | ||
1781 | mlp->write_mip_sol = GNUNET_NO; | ||
1781 | mlp->mlp_prob_changed = GNUNET_NO; | 1782 | mlp->mlp_prob_changed = GNUNET_NO; |
1782 | mlp->mlp_prob_updated = GNUNET_NO; | 1783 | mlp->mlp_prob_updated = GNUNET_NO; |
1783 | mlp->mlp_auto_solve = GNUNET_YES; | 1784 | mlp->mlp_auto_solve = GNUNET_YES; |
diff --git a/src/ats/gnunet-service-ats_addresses_mlp.h b/src/ats/gnunet-service-ats_addresses_mlp.h index 0c608b1d3..81b8a4d0a 100644 --- a/src/ats/gnunet-service-ats_addresses_mlp.h +++ b/src/ats/gnunet-service-ats_addresses_mlp.h | |||
@@ -273,6 +273,17 @@ struct GAS_MLP_Handle | |||
273 | * Can be disabled for test and measurements | 273 | * Can be disabled for test and measurements |
274 | */ | 274 | */ |
275 | int mlp_auto_solve; | 275 | int mlp_auto_solve; |
276 | |||
277 | /** | ||
278 | * Write MILP problem to a MPS file | ||
279 | */ | ||
280 | int write_mip_mps; | ||
281 | |||
282 | /** | ||
283 | * Write MILP problem to a MPS file | ||
284 | */ | ||
285 | int write_mip_sol; | ||
286 | |||
276 | }; | 287 | }; |
277 | 288 | ||
278 | 289 | ||
diff --git a/src/ats/test_ats_mlp.c b/src/ats/test_ats_mlp.c index c110fad29..4ba295ad5 100644 --- a/src/ats/test_ats_mlp.c +++ b/src/ats/test_ats_mlp.c | |||
@@ -272,6 +272,9 @@ check (void *cls, char *const *args, const char *cfgfile, | |||
272 | GAS_mlp_get_preferred_address (mlp, addresses, &p[0]); | 272 | GAS_mlp_get_preferred_address (mlp, addresses, &p[0]); |
273 | GAS_mlp_get_preferred_address (mlp, addresses, &p[1]); | 273 | GAS_mlp_get_preferred_address (mlp, addresses, &p[1]); |
274 | 274 | ||
275 | mlp->write_mip_mps = GNUNET_YES; | ||
276 | mlp->write_mip_sol = GNUNET_YES; | ||
277 | |||
275 | GAS_mlp_solve_problem (mlp, addresses); | 278 | GAS_mlp_solve_problem (mlp, addresses); |
276 | } | 279 | } |
277 | 280 | ||