From 6e209063ed2d88361129d560c469f231eab1ed5e Mon Sep 17 00:00:00 2001 From: Carl Recine Date: Wed, 1 May 2024 12:32:22 -0700 Subject: [PATCH 1/9] Adding ability to reduce the amount of text printed When minimal_print it True, only variables and constraints with a non-empty status (for example a violated bound) --- pyoptsparse/pyOpt_optimization.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pyoptsparse/pyOpt_optimization.py b/pyoptsparse/pyOpt_optimization.py index 9fcab5d1..d641525a 100644 --- a/pyoptsparse/pyOpt_optimization.py +++ b/pyoptsparse/pyOpt_optimization.py @@ -1648,6 +1648,7 @@ def __str__(self): Print Structured Optimization Problem """ TOL = 1.0e-6 + minimal_print = getattr(self,'minimal_print',True) text = ( f"\n\nOptimization Problem -- {self.name}\n{'=' * 80}\n Objective Function: {self.objFun.__name__}\n\n" @@ -1708,7 +1709,8 @@ def __str__(self): else: raise ValueError(f"Unrecognized type for variable {var.name}: {var.type}") - text += fmt.format(idx, var.name, var.type, lower, value, upper, status, width=num_c) + if not (minimal_print and not status): + text += fmt.format(idx, var.name, var.type, lower, value, upper, status, width=num_c) idx += 1 if len(self.constraints) > 0: @@ -1764,9 +1766,10 @@ def __str__(self): # Active upper bound status += "u" - text += fmt.format( - idx, c.name, typ, lower, value, upper, status, lambdaStar[con_name][j], width=num_c - ) + if not (minimal_print and not status): + text += fmt.format( + idx, c.name, typ, lower, value, upper, status, lambdaStar[con_name][j], width=num_c + ) idx += 1 return text From c201ac6b908dcd3ed09b88f73e9323e2d0d42dca Mon Sep 17 00:00:00 2001 From: Carl Recine Date: Wed, 1 May 2024 13:43:22 -0700 Subject: [PATCH 2/9] pep8 fix --- pyoptsparse/pyOpt_optimization.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyoptsparse/pyOpt_optimization.py b/pyoptsparse/pyOpt_optimization.py index 62937856..df92538f 100644 --- a/pyoptsparse/pyOpt_optimization.py +++ b/pyoptsparse/pyOpt_optimization.py @@ -1582,7 +1582,7 @@ def __str__(self): Print Structured Optimization Problem """ TOL = 1.0e-6 - minimal_print = getattr(self,'minimal_print',True) + minimal_print = getattr(self, 'minimal_print', True) text = ( f"\n\nOptimization Problem -- {self.name}\n{'=' * 80}\n Objective Function: {self.objFun.__name__}\n\n" From c9f44f94253c7113341c7d462f1b6c8ceec42e73 Mon Sep 17 00:00:00 2001 From: Carl Recine Date: Wed, 1 May 2024 13:46:07 -0700 Subject: [PATCH 3/9] pep8 fix --- pyoptsparse/pyOpt_optimization.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyoptsparse/pyOpt_optimization.py b/pyoptsparse/pyOpt_optimization.py index df92538f..3cd373a1 100644 --- a/pyoptsparse/pyOpt_optimization.py +++ b/pyoptsparse/pyOpt_optimization.py @@ -1582,7 +1582,7 @@ def __str__(self): Print Structured Optimization Problem """ TOL = 1.0e-6 - minimal_print = getattr(self, 'minimal_print', True) + minimal_print = getattr(self, "minimal_print", True) text = ( f"\n\nOptimization Problem -- {self.name}\n{'=' * 80}\n Objective Function: {self.objFun.__name__}\n\n" From 1ef6b0659de65b69a358583f7c88dfc45cb2faa5 Mon Sep 17 00:00:00 2001 From: Carl Recine Date: Wed, 1 May 2024 15:16:48 -0700 Subject: [PATCH 4/9] feedback from ewu63 --- pyoptsparse/pyOpt_optimization.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pyoptsparse/pyOpt_optimization.py b/pyoptsparse/pyOpt_optimization.py index 3cd373a1..15c7f67c 100644 --- a/pyoptsparse/pyOpt_optimization.py +++ b/pyoptsparse/pyOpt_optimization.py @@ -1577,12 +1577,11 @@ def _mapContoOpt_Dict(self, conDict: Dict1DType) -> Dict1DType: con_opt = self._mapContoOpt(con) return self.processContoDict(con_opt, scaled=False, natural=True) - def __str__(self): + def summary_str(self, minimal_print=False): """ Print Structured Optimization Problem """ TOL = 1.0e-6 - minimal_print = getattr(self, "minimal_print", True) text = ( f"\n\nOptimization Problem -- {self.name}\n{'=' * 80}\n Objective Function: {self.objFun.__name__}\n\n" @@ -1708,6 +1707,9 @@ def __str__(self): return text + def __str__(self, minimal_print=False): + return self.summary_str(minimal_print) + def __getstate__(self) -> dict: """ This is used for serializing class instances. From 8b883eff5c066af1c4f27013c3775fb02b332802 Mon Sep 17 00:00:00 2001 From: Carl Recine Date: Thu, 2 May 2024 15:46:23 -0700 Subject: [PATCH 5/9] removed arg from __str__ --- pyoptsparse/pyOpt_optimization.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyoptsparse/pyOpt_optimization.py b/pyoptsparse/pyOpt_optimization.py index 15c7f67c..16ecd412 100644 --- a/pyoptsparse/pyOpt_optimization.py +++ b/pyoptsparse/pyOpt_optimization.py @@ -1707,8 +1707,8 @@ def summary_str(self, minimal_print=False): return text - def __str__(self, minimal_print=False): - return self.summary_str(minimal_print) + def __str__(self): + return self.summary_str(minimal_print=False) def __getstate__(self) -> dict: """ From fb95de0d976a6803d00c533c67a57c54c7e11805 Mon Sep 17 00:00:00 2001 From: Carl Recine Date: Mon, 6 May 2024 09:37:34 -0700 Subject: [PATCH 6/9] updated logic --- pyoptsparse/pyOpt_optimization.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyoptsparse/pyOpt_optimization.py b/pyoptsparse/pyOpt_optimization.py index 16ecd412..02523130 100644 --- a/pyoptsparse/pyOpt_optimization.py +++ b/pyoptsparse/pyOpt_optimization.py @@ -1642,7 +1642,7 @@ def summary_str(self, minimal_print=False): else: raise ValueError(f"Unrecognized type for variable {var.name}: {var.type}") - if not (minimal_print and not status): + if not minimal_print or status: text += fmt.format(idx, var.name, var.type, lower, value, upper, status, width=num_c) idx += 1 From d70f14f0651b56d8b6693c5fdcb1cbe4ab0fe268 Mon Sep 17 00:00:00 2001 From: Carl Recine Date: Mon, 6 May 2024 15:28:44 -0700 Subject: [PATCH 7/9] fixed second usage of logic --- pyoptsparse/pyOpt_optimization.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyoptsparse/pyOpt_optimization.py b/pyoptsparse/pyOpt_optimization.py index 02523130..9a68e921 100644 --- a/pyoptsparse/pyOpt_optimization.py +++ b/pyoptsparse/pyOpt_optimization.py @@ -1699,7 +1699,7 @@ def summary_str(self, minimal_print=False): # Active upper bound status += "u" - if not (minimal_print and not status): + if not minimal_print or status: text += fmt.format( idx, c.name, typ, lower, value, upper, status, lambdaStar[con_name][j], width=num_c ) From 2159ca8c1ebfa0c997b1d660d0630540ca7a5fb4 Mon Sep 17 00:00:00 2001 From: Carl Recine Date: Tue, 7 May 2024 16:01:05 -0700 Subject: [PATCH 8/9] updated docstring --- pyoptsparse/pyOpt_optimization.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pyoptsparse/pyOpt_optimization.py b/pyoptsparse/pyOpt_optimization.py index 9a68e921..1f810218 100644 --- a/pyoptsparse/pyOpt_optimization.py +++ b/pyoptsparse/pyOpt_optimization.py @@ -1213,7 +1213,7 @@ def processContoDict( scaled : bool Flag specifying if the returned array should be scaled by - the pyOpt scaling. The only type this is not true is + the pyOpt scaling. The only time this is not true is when the automatic derivatives are used dtype : str @@ -1580,6 +1580,14 @@ def _mapContoOpt_Dict(self, conDict: Dict1DType) -> Dict1DType: def summary_str(self, minimal_print=False): """ Print Structured Optimization Problem + + Parameters + ---------- + minimal_print : Bool + Flag to specify if the printed results should only include + variables and constraints with a non-empty status + (for example a violated bound). + This defaults to False, which will print all results. """ TOL = 1.0e-6 From e5808ce4c78360c0e8b23007eec79027ed830d94 Mon Sep 17 00:00:00 2001 From: Sabet Seraj <48863473+sseraj@users.noreply.github.com> Date: Tue, 7 May 2024 19:09:05 -0400 Subject: [PATCH 9/9] docstring case --- pyoptsparse/pyOpt_optimization.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyoptsparse/pyOpt_optimization.py b/pyoptsparse/pyOpt_optimization.py index 1f810218..ee1c8926 100644 --- a/pyoptsparse/pyOpt_optimization.py +++ b/pyoptsparse/pyOpt_optimization.py @@ -1583,7 +1583,7 @@ def summary_str(self, minimal_print=False): Parameters ---------- - minimal_print : Bool + minimal_print : bool Flag to specify if the printed results should only include variables and constraints with a non-empty status (for example a violated bound).