Skip to content

Commit 58996fa

Browse files
committed
fix division by zero error in linear presolve
1 parent 4cceaa9 commit 58996fa

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

pyomo/repn/plugins/nl_writer.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -1829,15 +1829,6 @@ def _linear_presolve(self, comp_by_linear_var, lcon_by_linear_nnz, var_bounds):
18291829
if expr_info.linear[x] == 0:
18301830
nnz -= 1
18311831
coef = expr_info.linear.pop(x)
1832-
if not nnz:
1833-
if abs(expr_info.const) > TOL:
1834-
# constraint is trivially infeasible
1835-
raise InfeasibleConstraintException(
1836-
"model contains a trivially infeasible constraint "
1837-
f"{expr_info.const} == {coef}*{var_map[x]}"
1838-
)
1839-
# constraint is trivially feasible
1840-
eliminated_cons.add(con_id)
18411832
elif a:
18421833
expr_info.linear[x] = c * a
18431834
# replacing _id with x... NNZ is not changing,
@@ -1847,6 +1838,15 @@ def _linear_presolve(self, comp_by_linear_var, lcon_by_linear_nnz, var_bounds):
18471838
continue
18481839
_old = lcon_by_linear_nnz[old_nnz]
18491840
if con_id in _old:
1841+
if not nnz:
1842+
if abs(expr_info.const) > TOL:
1843+
# constraint is trivially infeasible
1844+
raise InfeasibleConstraintException(
1845+
"model contains a trivially infeasible constraint "
1846+
f"{expr_info.const} == {coef}*{var_map[x]}"
1847+
)
1848+
# constraint is trivially feasible
1849+
eliminated_cons.add(con_id)
18501850
lcon_by_linear_nnz[nnz][con_id] = _old.pop(con_id)
18511851
# If variables were replaced by the variable that
18521852
# we are currently eliminating, then we need to update

0 commit comments

Comments
 (0)