Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[OptApp] Use Response Expressions in the opt app #12582

Merged
merged 6 commits into from
Aug 14, 2024
Merged
Show file tree
Hide file tree
Changes from all 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
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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": "",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand why do you need this changes. we can discuss later

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now, it is not only the name of the response which is accepted, it accepts a resposne expression. Thats the reason why i changed it. This is backward compatible. (I added a deprecation warning)

"type" : "",
"ref_value" : "initial_value"
}""")

response_name = str(parameters["response_name"].GetString())
Expand All @@ -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)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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,
Expand All @@ -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)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down Expand Up @@ -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,
Expand All @@ -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)

Expand Down
Loading