Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions mpisppy/extensions/integer_relax_then_enforce.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,18 @@ def __init__(self, opt):

def pre_iter0(self):
global_toc(f"{self.__class__.__name__}: relaxing integrality constraints", self.opt.cylinder_rank == 0)
for s in self.opt.local_scenarios.values():
self.integer_relaxer.apply_to(s)
self._reverse_tokens = {}
for sname, s in self.opt.local_scenarios.items():
self._reverse_tokens[sname] = self.integer_relaxer.apply_to(s)
self._integers_relaxed = True

def _unrelax_integers(self):
for sub in self.opt.local_scenarios.values():
for sname, sub in self.opt.local_scenarios.items():
subproblem_solver = sub._solver_plugin
vlist = None
if is_persistent(subproblem_solver):
vlist = list(v for v,d in sub._relaxed_integer_vars[None].values())
self.integer_relaxer.apply_to(sub, options={"undo":True})
self.integer_relaxer.apply_to(sub, options={"reverse": self._reverse_tokens[sname]})
if is_persistent(subproblem_solver):
for v in vlist:
subproblem_solver.update_var(v)
Expand Down
4 changes: 2 additions & 2 deletions mpisppy/utils/nonant_sensitivities.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def nonant_sensitivies(s):
for var in s.component_data_objects(pyo.Var):
solution_cache[var] = var._value
relax_int = pyo.TransformationFactory('core.relax_integer_vars')
relax_int.apply_to(s)
reverse_token = relax_int.apply_to(s)

assert hasattr(s, "_relaxed_integer_vars")

Expand Down Expand Up @@ -82,7 +82,7 @@ def nonant_sensitivies(s):
sensitivity = grad_vec_kkt_inv @ -e_x
nonant_sensis[ndn_i] = sensitivity

relax_int.apply_to(s, options={"undo":True})
relax_int.apply_to(s, options={"reverse": reverse_token})
assert not hasattr(s, "_relaxed_integer_vars")
del s.ipopt_zL_out
del s.ipopt_zU_out
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
'sortedcollections',
'numpy',
'scipy',
'pyomo>=6.4',
'pyomo>=6.9.3',
],
extras_require={
'doc': [
Expand Down
Loading