From: Matthias Braun Date: Fri, 15 Jul 2011 12:10:05 +0000 (+0200) Subject: lpp: only read solution in gurobi solver if one was found X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=c40cddcb2ab00386525581d30eb51759eeb985af;p=libfirm lpp: only read solution in gurobi solver if one was found --- diff --git a/ir/lpp/lpp_gurobi.c b/ir/lpp/lpp_gurobi.c index 6c215dbde..c329e7cad 100644 --- a/ir/lpp/lpp_gurobi.c +++ b/ir/lpp/lpp_gurobi.c @@ -223,20 +223,24 @@ static void gurobi_solve(gurobi_t *grb) default: lpp->sol_state = lpp_feasible; break; } - /* get variable solution values */ - values = alloca(numcols * sizeof(*values)); - error = GRBgetdblattrarray(grb->model, GRB_DBL_ATTR_X, 0, numcols, values); - check_gurobi_error(grb, error); - for(i=0; ivars[1+i]->value = values[i]; - lpp->vars[1+i]->value_kind = lpp_value_solution; - } + if (lpp->sol_state >= lpp_feasible) { + /* get variable solution values */ + values = alloca(numcols * sizeof(*values)); + error = GRBgetdblattrarray(grb->model, GRB_DBL_ATTR_X, 0, numcols, + values); + check_gurobi_error(grb, error); + for(i=0; ivars[1+i]->value = values[i]; + lpp->vars[1+i]->value_kind = lpp_value_solution; + } - /* Get the value of the objective function. */ - error = GRBgetdblattr(grb->model, GRB_DBL_ATTR_OBJVAL, &lpp->objval); - check_gurobi_error(grb, error); - error = GRBgetdblattr(grb->model , GRB_DBL_ATTR_OBJBOUND, &lpp->best_bound); - check_gurobi_error(grb, error); + /* Get the value of the objective function. */ + error = GRBgetdblattr(grb->model, GRB_DBL_ATTR_OBJVAL, &lpp->objval); + check_gurobi_error(grb, error); + error = GRBgetdblattr(grb->model , GRB_DBL_ATTR_OBJBOUND, + &lpp->best_bound); + check_gurobi_error(grb, error); + } /* get some statistics */ error = GRBgetdblattr(grb->model, GRB_DBL_ATTR_ITERCOUNT, &iterations);