Skip to content

Commit a21143d

Browse files
committed
Merge branch 'communicator_refactor' into nonant_bounds_buffer
2 parents 1c8bcbf + fd45471 commit a21143d

File tree

9 files changed

+532
-514
lines changed

9 files changed

+532
-514
lines changed

Diff for: examples/netdes/drivertest.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# Hub and spoke SPBase classes
1313
from mpisppy.phbase import PHBase
1414
from mpisppy.opt.ph import PH
15-
from mpisppy.fwph.fwph import FWPH
15+
from mpisppy.opt.fwph import FWPH
1616
# Hub and spoke SPCommunicator classes
1717
from mpisppy.cylinders.fwph_spoke import FrankWolfeOuterBound
1818
from mpisppy.cylinders.lagrangian_bounder import LagrangianOuterBound

Diff for: examples/uc/uc4wood.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# Hub and spoke SPBase classes
1919
from mpisppy.phbase import PHBase
2020
from mpisppy.opt.ph import PH
21-
from mpisppy.fwph.fwph import FWPH
21+
from mpisppy.opt.fwph import FWPH
2222
from mpisppy.utils.xhat_eval import Xhat_Eval
2323
# Hub and spoke SPCommunicator classes
2424
from mpisppy.cylinders.fwph_spoke import FrankWolfeOuterBound

Diff for: mpisppy/cylinders/hub.py

+19-17
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,11 @@ def send_terminate(self):
218218
self.put_send_buffer(self.send_buffers[Field.SHUTDOWN], Field.SHUTDOWN)
219219
return
220220

221+
def sync_bounds(self):
222+
self.receive_outerbounds()
223+
self.receive_innerbounds()
224+
self.send_boundsout()
225+
221226

222227
class PHHub(Hub):
223228

@@ -244,24 +249,14 @@ def sync(self):
244249
"""
245250
Manages communication with Spokes
246251
"""
247-
self.send_ws()
248-
self.send_nonants()
249-
self.send_boundsout()
250-
self.receive_outerbounds()
251-
self.receive_innerbounds()
252-
self.receive_nonant_bounds()
253-
if self.opt.extensions is not None:
254-
self.opt.extobject.sync_with_spokes()
252+
self.sync_Ws()
253+
self.sync_nonants()
254+
self.sync_bounds()
255+
self.sync_extensions()
255256

256257
def sync_with_spokes(self):
257258
self.sync()
258259

259-
def sync_bounds(self):
260-
self.receive_outerbounds()
261-
self.receive_innerbounds()
262-
self.receive_nonant_bounds()
263-
self.send_boundsout()
264-
265260
def sync_extensions(self):
266261
if self.opt.extensions is not None:
267262
self.opt.extobject.sync_with_spokes()
@@ -275,6 +270,8 @@ def sync_Ws(self):
275270
def is_converged(self):
276271
if self.opt.best_bound_obj_val is not None:
277272
self.BestOuterBound = self.OuterBoundUpdate(self.opt.best_bound_obj_val)
273+
if self.opt.best_solution_obj_val is not None:
274+
self.BestInnerBound = self.InnerBoundUpdate(self.opt.best_solution_obj_val)
278275

279276
if not self.receive_field_spcomms[Field.OBJECTIVE_INNER_BOUND]:
280277
if self.opt._PHIter == 1:
@@ -360,9 +357,7 @@ def sync(self, send_nonants=True):
360357
"""
361358
if send_nonants:
362359
self.send_nonants()
363-
self.receive_outerbounds()
364-
self.receive_innerbounds()
365-
self.receive_nonant_bounds()
360+
self.sync_bounds()
366361
# in case LShaped ever gets extensions
367362
if getattr(self.opt, "extensions", None) is not None:
368363
self.opt.extobject.sync_with_spokes()
@@ -445,3 +440,10 @@ def finalize(self):
445440
# to APH.post_loops
446441
Eobj = self.opt.post_loops()
447442
return Eobj
443+
444+
class FWPHHub(PHHub):
445+
446+
_hub_algo_best_bound_provider = True
447+
448+
def main(self):
449+
self.opt.fwph_main(finalize=False)

Diff for: mpisppy/fwph/__init__.py

Whitespace-only changes.

Diff for: mpisppy/generic_cylinders.py

+10
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,16 @@ def _do_decomp(module, cfg, scenario_creator, scenario_creator_kwargs, scenario_
175175
rho_setter = rho_setter,
176176
all_nodenames = all_nodenames,
177177
)
178+
elif cfg.fwph_hub:
179+
# Vanilla FWPH hub
180+
hub_dict = vanilla.fwph_hub(
181+
*beans,
182+
scenario_creator_kwargs=scenario_creator_kwargs,
183+
ph_extensions=None,
184+
ph_converger=ph_converger,
185+
rho_setter = rho_setter,
186+
all_nodenames = all_nodenames,
187+
)
178188
else:
179189
# Vanilla PH hub
180190
hub_dict = vanilla.ph_hub(*beans,

0 commit comments

Comments
 (0)