From 4336f9c65397e0b6eac838adf52df1b0136e1bb0 Mon Sep 17 00:00:00 2001 From: sunethwarna Date: Mon, 29 Jul 2024 10:00:19 +0530 Subject: [PATCH 1/5] use response expression in std. constraint --- .../algorithms/standardized_constraint.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/applications/OptimizationApplication/python_scripts/algorithms/standardized_constraint.py b/applications/OptimizationApplication/python_scripts/algorithms/standardized_constraint.py index 941b961b51cf..ccb3de955768 100644 --- a/applications/OptimizationApplication/python_scripts/algorithms/standardized_constraint.py +++ b/applications/OptimizationApplication/python_scripts/algorithms/standardized_constraint.py @@ -6,6 +6,8 @@ from KratosMultiphysics.OptimizationApplication.utilities.component_data_view import ComponentDataView from KratosMultiphysics.OptimizationApplication.utilities.logger_utilities import DictLogger from KratosMultiphysics.OptimizationApplication.utilities.logger_utilities import TimeLogger +from KratosMultiphysics.OptimizationApplication.utilities.response_utilities import EvaluateResponseExpression +from KratosMultiphysics.kratos_utilities import IssueDeprecationWarning class StandardizedConstraint(ResponseRoutine): """Standardized constraint response function @@ -22,8 +24,14 @@ class StandardizedConstraint(ResponseRoutine): """ def __init__(self, parameters: Kratos.Parameters, master_control: MasterControl, optimization_problem: OptimizationProblem, required_buffer_size: int = 2): + # backward compatibility + if parameters.Has("response_name"): + IssueDeprecationWarning(self.__class__.__name__, "\"response_name\" is deprecated. Please use \"response_expression\".") + parameters.AddString("response_expression", parameters["response_name"].GetString()) + parameters.RemoveValue("response_name") + default_parameters = Kratos.Parameters("""{ - "response_name" : "", + "response_expression" : "", "type" : "", "scaling" : 1.0, "violation_scaling" : 1.0, @@ -35,7 +43,7 @@ def __init__(self, parameters: Kratos.Parameters, master_control: MasterControl, parameters.ValidateAndAssignDefaults(default_parameters) - response = optimization_problem.GetResponse(parameters["response_name"].GetString()) + response = EvaluateResponseExpression(parameters["response_expression"].GetString(), optimization_problem) super().__init__(master_control, response) From fc9ed8024cd864028f4fb9d1f37e5e1fc4b97cfd Mon Sep 17 00:00:00 2001 From: sunethwarna Date: Mon, 29 Jul 2024 10:00:29 +0530 Subject: [PATCH 2/5] use response expression in NLOPT constraint --- .../algorithms/standardized_NLOPT_constraint.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/applications/OptimizationApplication/python_scripts/algorithms/standardized_NLOPT_constraint.py b/applications/OptimizationApplication/python_scripts/algorithms/standardized_NLOPT_constraint.py index ed1b5f65e5a6..fb414271eb70 100644 --- a/applications/OptimizationApplication/python_scripts/algorithms/standardized_NLOPT_constraint.py +++ b/applications/OptimizationApplication/python_scripts/algorithms/standardized_NLOPT_constraint.py @@ -6,6 +6,8 @@ from KratosMultiphysics.OptimizationApplication.utilities.component_data_view import ComponentDataView from KratosMultiphysics.OptimizationApplication.utilities.logger_utilities import DictLogger from KratosMultiphysics.OptimizationApplication.utilities.logger_utilities import TimeLogger +from KratosMultiphysics.OptimizationApplication.utilities.response_utilities import EvaluateResponseExpression +from KratosMultiphysics.kratos_utilities import IssueDeprecationWarning import numpy import sys @@ -22,10 +24,16 @@ class StandardizedNLOPTConstraint(ResponseRoutine): """ def __init__(self, parameters: Kratos.Parameters, master_control: MasterControl, optimization_problem: OptimizationProblem, required_buffer_size: int = 2): + # backward compatibility + if parameters.Has("response_name"): + IssueDeprecationWarning(self.__class__.__name__, "\"response_name\" is deprecated. Please use \"response_expression\".") + parameters.AddString("response_expression", parameters["response_name"].GetString()) + parameters.RemoveValue("response_name") + default_parameters = Kratos.Parameters("""{ - "response_name": "", - "type" : "", - "ref_value" : "initial_value" + "response_expression": "", + "type" : "", + "ref_value" : "initial_value" }""") response_name = str(parameters["response_name"].GetString()) @@ -37,7 +45,7 @@ def __init__(self, parameters: Kratos.Parameters, master_control: MasterControl, parameters.ValidateAndAssignDefaults(default_parameters) - response = optimization_problem.GetResponse(parameters["response_name"].GetString()) + response = EvaluateResponseExpression(parameters["response_expression"].GetString(), optimization_problem) super().__init__(master_control, response) From 168f110d6c91a5a9a2e32905c40e230b7a08b13d Mon Sep 17 00:00:00 2001 From: sunethwarna Date: Mon, 29 Jul 2024 10:00:41 +0530 Subject: [PATCH 3/5] use response expression in NLOPT objective --- .../algorithms/standardized_NLOPT_objective.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/applications/OptimizationApplication/python_scripts/algorithms/standardized_NLOPT_objective.py b/applications/OptimizationApplication/python_scripts/algorithms/standardized_NLOPT_objective.py index 4b5badd9a534..3c4b5653a9e2 100644 --- a/applications/OptimizationApplication/python_scripts/algorithms/standardized_NLOPT_objective.py +++ b/applications/OptimizationApplication/python_scripts/algorithms/standardized_NLOPT_objective.py @@ -7,6 +7,8 @@ from KratosMultiphysics.OptimizationApplication.utilities.logger_utilities import DictLogger from KratosMultiphysics.OptimizationApplication.utilities.logger_utilities import TimeLogger from KratosMultiphysics.OptimizationApplication.utilities.helper_utilities import CallOnAll +from KratosMultiphysics.OptimizationApplication.utilities.response_utilities import EvaluateResponseExpression +from KratosMultiphysics.kratos_utilities import IssueDeprecationWarning import numpy import datetime @@ -20,14 +22,20 @@ class StandardizedNLOPTObjective(ResponseRoutine): """ def __init__(self, parameters: Kratos.Parameters, master_control: MasterControl, optimization_problem: OptimizationProblem, required_buffer_size: int = 2): + # backward compatibility + if parameters.Has("response_name"): + IssueDeprecationWarning(self.__class__.__name__, "\"response_name\" is deprecated. Please use \"response_expression\".") + parameters.AddString("response_expression", parameters["response_name"].GetString()) + parameters.RemoveValue("response_name") + default_parameters = Kratos.Parameters("""{ - "response_name": "", - "type" : "", - "scaling" : 1.0 + "response_expression": "", + "type" : "", + "scaling" : 1.0 }""") parameters.ValidateAndAssignDefaults(default_parameters) - response = optimization_problem.GetResponse(parameters["response_name"].GetString()) + response = EvaluateResponseExpression(parameters["response_expression"].GetString(), optimization_problem) super().__init__(master_control, response) From 37aeb63073515b91994d85584f59359853df5b3c Mon Sep 17 00:00:00 2001 From: sunethwarna Date: Mon, 29 Jul 2024 10:00:48 +0530 Subject: [PATCH 4/5] use response expression in std. objective --- .../algorithms/standardized_objective.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/applications/OptimizationApplication/python_scripts/algorithms/standardized_objective.py b/applications/OptimizationApplication/python_scripts/algorithms/standardized_objective.py index 394cff2df9fe..01dd9fa5a8eb 100644 --- a/applications/OptimizationApplication/python_scripts/algorithms/standardized_objective.py +++ b/applications/OptimizationApplication/python_scripts/algorithms/standardized_objective.py @@ -6,6 +6,8 @@ from KratosMultiphysics.OptimizationApplication.utilities.component_data_view import ComponentDataView from KratosMultiphysics.OptimizationApplication.utilities.logger_utilities import DictLogger from KratosMultiphysics.OptimizationApplication.utilities.logger_utilities import TimeLogger +from KratosMultiphysics.OptimizationApplication.utilities.response_utilities import EvaluateResponseExpression +from KratosMultiphysics.kratos_utilities import IssueDeprecationWarning class StandardizedObjective(ResponseRoutine): """Standardized objective response function @@ -17,14 +19,20 @@ class StandardizedObjective(ResponseRoutine): """ def __init__(self, parameters: Kratos.Parameters, master_control: MasterControl, optimization_problem: OptimizationProblem, required_buffer_size: int = 2): + # backward compatibility + if parameters.Has("response_name"): + IssueDeprecationWarning(self.__class__.__name__, "\"response_name\" is deprecated. Please use \"response_expression\".") + parameters.AddString("response_expression", parameters["response_name"].GetString()) + parameters.RemoveValue("response_name") + default_parameters = Kratos.Parameters("""{ - "response_name": "", - "type" : "", - "scaling" : 1.0 + "response_expression": "", + "type" : "", + "scaling" : 1.0 }""") parameters.ValidateAndAssignDefaults(default_parameters) - response = optimization_problem.GetResponse(parameters["response_name"].GetString()) + response = EvaluateResponseExpression(parameters["response_expression"].GetString(), optimization_problem) super().__init__(master_control, response) From d7fb461f38f84ab91100c18a0856d2114fbf2fb1 Mon Sep 17 00:00:00 2001 From: sunethwarna Date: Mon, 29 Jul 2024 10:00:57 +0530 Subject: [PATCH 5/5] use response expression in std. rgp constraint --- .../algorithms/standardized_rgp_constraint.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/applications/OptimizationApplication/python_scripts/algorithms/standardized_rgp_constraint.py b/applications/OptimizationApplication/python_scripts/algorithms/standardized_rgp_constraint.py index 72c20a1ec3ca..6fd4850839b7 100644 --- a/applications/OptimizationApplication/python_scripts/algorithms/standardized_rgp_constraint.py +++ b/applications/OptimizationApplication/python_scripts/algorithms/standardized_rgp_constraint.py @@ -6,6 +6,8 @@ from KratosMultiphysics.OptimizationApplication.utilities.component_data_view import ComponentDataView from KratosMultiphysics.OptimizationApplication.utilities.logger_utilities import DictLogger from KratosMultiphysics.OptimizationApplication.utilities.logger_utilities import TimeLogger +from KratosMultiphysics.OptimizationApplication.utilities.response_utilities import EvaluateResponseExpression +from KratosMultiphysics.kratos_utilities import IssueDeprecationWarning from enum import Enum @@ -33,8 +35,14 @@ class StandardizedRGPConstraint(ResponseRoutine): """ def __init__(self, parameters: Kratos.Parameters, master_control: MasterControl, optimization_problem: OptimizationProblem, required_buffer_size: int = 4): + # backward compatibility + if parameters.Has("response_name"): + IssueDeprecationWarning(self.__class__.__name__, "\"response_name\" is deprecated. Please use \"response_expression\".") + parameters.AddString("response_expression", parameters["response_name"].GetString()) + parameters.RemoveValue("response_name") + default_parameters = Kratos.Parameters("""{ - "response_name" : "", + "response_expression" : "", "type" : "", "scaled_ref_value" : 0.0, "buffer_factor" : 2.0, @@ -52,7 +60,7 @@ def __init__(self, parameters: Kratos.Parameters, master_control: MasterControl, parameters.ValidateAndAssignDefaults(default_parameters) - response = optimization_problem.GetResponse(parameters["response_name"].GetString()) + response = EvaluateResponseExpression(parameters["response_expression"].GetString(), optimization_problem) super().__init__(master_control, response)