8000 Added stopping criterion for maximum run time exceeded · PythonOptimizers/NLP.py@6f463f2 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6f463f2

Browse files
Andrew Lambedpo
authored andcommitted
Added stopping criterion for maximum run time exceeded
1 parent 3f2c959 commit 6f463f2

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

nlp/drivers/nlp_auglag.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def auglag_stats(auglag):
5050
for problem in sys.argv[1:]:
5151
model = PySparseAmplModel(problem)
5252
model.compute_scaling_obj()
53-
auglag = Auglag(model, TRON, maxiter=100)
53+
auglag = Auglag(model, TRON, maxtime=900)
5454
try:
5555
auglag.solve()
5656
status = auglag.status

nlp/optimize/auglag.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ def __init__(self, model, bc_solver, **kwargs):
106106
self.maxiter = kwargs.get("maxiter",
107107
100 * self.model.model.original_n)
108108

109+
# Maximum run time
110+
self.maxtime = kwargs.get("maxtime", 1800.)
111+
109112
self.update_on_rejected_step = False
110113

111114
self.inner_fail_count = 0
@@ -292,6 +295,7 @@ def solve(self, **kwargs):
292295
infeas_iter = 0
293296

294297
exitIter = False
298+
exitTime = False
295299
# Convergence check
296300
exitOptimal = (Pmax <= self.omega_opt and max_cons <= self.eta_opt)
297301
if exitOptimal:
@@ -306,7 +310,7 @@ def solve(self, **kwargs):
306310
self.cons0, al_model.penalty, "", "", self.omega,
307311
self.eta)
308312

309-
while not (exitOptimal or exitIter):
313+
while not (exitOptimal or exitIter or exitTime):
310314
self.iter += 1
311315

312316
# Perform bound-constrained minimization
@@ -399,6 +403,8 @@ def solve(self, **kwargs):
399403

400404
exitIter = self.niter_total > self.maxiter
401405

406+
exitTime = (cputime() - tick) > self.maxtime
407+
402408
self.tsolve = cputime() - tick # Solve time
403409
if slack_model.m != 0:
404410
self.pi_max = np.max(np.abs(al_model.pi))
@@ -411,7 +417,10 @@ def solve(self, **kwargs):
411417
if exitOptimal:
412418
self.status = "opt"
413419
self.log.debug("optimal solution found")
414-
elif not exitOptimal and self.status is None:
420+
elif not exitOptimal and exitTime:
421+
self.status = "time"
422+
self.log.debug("maximum run time exceeded")
423+
elif not exitOptimal and exitIter:
415424
self.status = "iter"
416425
self.log.debug("maximum number of iterations reached")
417426

0 commit comments

Comments
 (0)
0