infinity: Fix infinite loops on bell5
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user