Skip to content
Closed
Show file tree
Hide file tree
Changes from 3 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
Loading