Skip to content

Commit bd90ec1

Browse files
peterlietzsebheger
authored andcommitted
correctly handle objective constant with gurobi
1 parent 49c78a7 commit bd90ec1

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

mip/gurobi.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,7 @@ def get_objective(self) -> LinExpr:
525525
for i in range(self.num_cols())
526526
if abs(obj[i] > 1e-20)
527527
)
528+
obj_expr.const = self.get_objective_const()
528529
obj_expr.sense = self.get_objective_sense
529530
return obj_expr
530531

@@ -1263,6 +1264,7 @@ def set_dbl_attr(self, name: str, value: float):
12631264
raise ParameterNotAvailable(
12641265
"Error modifying double attribute {} to {}".format(name, value)
12651266
)
1267+
GRBupdatemodel(self._model)
12661268

12671269
def get_int_attr(self, name: str) -> int:
12681270
res = ffi.new("int *")

test/mip_test.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,21 @@ def test_var_by_name_rhs(self, solver):
547547
v = model.var_by_name("x({},{})".format(0, 0))
548548
assert v is not None
549549

550+
@pytest.mark.parametrize("solver", SOLVERS)
551+
def test_obj_const1(self, solver: str):
552+
n, model = self.build_model(solver)
553+
554+
model.objective = 1
555+
e = model.objective
556+
assert e.const == 1
557+
558+
@pytest.mark.parametrize("solver", SOLVERS)
559+
def test_obj_const2(self, solver: str):
560+
n, model = self.build_model(solver)
561+
562+
model.objective = 1
563+
assert model.objective_const == 1
564+
550565

551566
@pytest.mark.parametrize("val", range(1, 4))
552567
@pytest.mark.parametrize("solver", SOLVERS)

0 commit comments

Comments
 (0)