diff --git a/linopy/model.py b/linopy/model.py index eace2cd5..edeea72f 100644 --- a/linopy/model.py +++ b/linopy/model.py @@ -666,6 +666,16 @@ def remove_constraints(self, name): """ self.constraints.remove(name) + def remove_objective(self): + """ + Remove the objective's linear expression from the model. + + Returns + ------- + None. + """ + self.objective = Objective(LinearExpression(None, self), self) + @property def continuous(self): """ diff --git a/test/test_model.py b/test/test_model.py index ab3ee3b9..1ba6e772 100644 --- a/test/test_model.py +++ b/test/test_model.py @@ -114,6 +114,19 @@ def test_remove_constraint(): assert not len(m.constraints.labels) +def test_remove_objective(): + m = Model() + + lower = xr.DataArray(np.zeros((2, 2)), coords=[range(2), range(2)]) + upper = xr.DataArray(np.ones((2, 2)), coords=[range(2), range(2)]) + x = m.add_variables(lower, upper, name="x") + y = m.add_variables(lower, upper, name="y") + obj = (10 * x + 5 * y).sum() + m.add_objective(obj) + m.remove_objective() + assert not len(m.objective.vars) + + def test_assert_model_equal(): m = Model()