infinity: Fix infinite loops on bell5

This commit is contained in:
2017-08-08 20:24:01 -04:00
parent 8c132efe2d
commit a828a3caf7
4 changed files with 200 additions and 171 deletions

View File

@@ -602,7 +602,7 @@ static int find_interior_point_enum(const int nrows,
}
}
if(!DOUBLE_geq(best_value, 1)) *found = 1;
if(best_value < 0.999) *found = 1;
CLEANUP:
if(beta2) free(beta2);
@@ -665,7 +665,7 @@ static int find_interior_point_cplex(const int nrows,
log_debug(" obj = %.8lf\n", objval);
if(DOUBLE_geq(objval, 1.0))
if(objval > 0.999)
{
log_debug(" set is lattice-free\n");
*found = 0;
@@ -1321,8 +1321,6 @@ int INFINITY_ND_generate_lfree(const struct MultiRowModel *model,
abort_if(rval, "bound failed");
if(isinf(epsilon_x)) break;
// epsilon_x = (floor(epsilon_x * 128) / 128);
log_debug(" epsilon_x = %.8lf\n", epsilon_x);
if(DOUBLE_eq(epsilon_x, epsilon))
@@ -1347,7 +1345,7 @@ int INFINITY_ND_generate_lfree(const struct MultiRowModel *model,
{
if(t[i])
{
beta[i] = min(beta[i], epsilon);
beta[i] = min(beta[i] * 0.999, epsilon);
}
else if(!skip_ahull)
{
@@ -1364,7 +1362,6 @@ int INFINITY_ND_generate_lfree(const struct MultiRowModel *model,
continue;
}
// alpha = (floor(alpha * 128) / 128);
beta[i] = min(beta[i], alpha);
}

View File

@@ -428,17 +428,15 @@ int INFINITY_generate_cut(const struct Tableau *tableau, struct Row *cut)
rval = append_extra_rays(&filtered_model);
abort_if(rval, "append_extra_rays failed");
// if(tableau->nrows == 2)
// rval = INFINITY_2D_generate_lfree(&filtered_model, &lfree);
// else
rval = INFINITY_ND_generate_lfree(&filtered_model, &lfree);
if(rval)
if_debug_level
{
rval = ERR_NO_CUT;
goto CLEANUP;
rval = CG_print_model(&filtered_model);
abort_if(rval, "CG_print_model failed");
}
rval = INFINITY_ND_generate_lfree(&filtered_model, &lfree);
abort_if(rval, "INFINITY_ND_generate_lfree failed");
if(SHOULD_DUMP_CUTS)
{
rval = dump_cut(&lfree);