Skip to content

Custom Objective Function Does not Work #2586

@ErcanUmut60

Description

@ErcanUmut60

Defining Custom Objective Function does not work with shape_optimization.py.

At first I had this error:

New Project:
./ Traceback (most recent call last): 
File "/home/programs/SU2/su2_v8.2.0/bin/shape_optimization.py", line 306, in <module> main()
 File "/home/programs/SU2/su2_v8.2.0/bin/shape_optimization.py", line 184, in main shape_optimization( 
File "/home/programs/SU2/su2_v8.2.0/bin/shape_optimization.py", line 278, in shape_optimization project = SU2.opt.Project(config, state) 
File "/home/programs/SU2/su2_v8.2.0/bin/SU2/opt/project.py", line 130, 
in __init__ group = historyOutFields[this_obj]["GROUP"] 
KeyError: 'CUSTOM_OBJFUNC

I got rid of this by adding the following lines to /SU2_PY/SU2/io/historyMap.py

     "CUSTOM_OBJFUNC": {
        "DESCRIPTION": "custom " "markers set in MARKER_ANALYZE",
        "GROUP": "FLOW_COEFF",
        "HEADER": "Custom_ObjFunc",
        "TYPE": "COEFFICIENT",
    },

But then this error occured:

Traceback (most recent call last):
  File "/home/programs/SU2/SU2-8.3.0/bin/shape_optimization.py", line 313, in <module>
    main()
  File "/home/programs/SU2/SU2-8.3.0/bin/shape_optimization.py", line 184, in main
    shape_optimization(
  File "/home/programs/SU2/SU2-8.3.0/bin/shape_optimization.py", line 289, in shape_optimization
    SU2.opt.SLSQP(project, x0, xb, its, accu)
  File "/home/programs/SU2/SU2-8.3.0/bin/SU2/opt/scipy_tools.py", line 128, in scipy_slsqp
    outputs = fmin_slsqp(
  File "/usr/lib/python3/dist-packages/scipy/optimize/_slsqp_py.py", line 206, in fmin_slsqp
    res = _minimize_slsqp(func, x0, args, jac=fprime, bounds=bounds,
  File "/usr/lib/python3/dist-packages/scipy/optimize/_slsqp_py.py", line 374, in _minimize_slsqp
    sf = _prepare_scalar_function(func, x, jac=jac, args=args, epsilon=eps,
  File "/usr/lib/python3/dist-packages/scipy/optimize/_optimize.py", line 263, in _prepare_scalar_function
    sf = ScalarFunction(fun, x0, args, grad, hess,
  File "/usr/lib/python3/dist-packages/scipy/optimize/_differentiable_functions.py", line 158, in __init__
    self._update_fun()
  File "/usr/lib/python3/dist-packages/scipy/optimize/_differentiable_functions.py", line 251, in _update_fun
    self._update_fun_impl()
  File "/usr/lib/python3/dist-packages/scipy/optimize/_differentiable_functions.py", line 155, in update_fun
    self.f = fun_wrapped(self.x)
  File "/usr/lib/python3/dist-packages/scipy/optimize/_differentiable_functions.py", line 137, in fun_wrapped
    fx = fun(np.copy(x), *args)
  File "/home/programs/SU2/SU2-8.3.0/bin/SU2/opt/scipy_tools.py", line 416, in obj_f
    obj_list = project.obj_f(x)
  File "/home/programs/SU2/SU2-8.3.0/bin/SU2/opt/project.py", line 243, in obj_f
    return self._eval(konfig, func, dvs)
  File "/home/programs/SU2/SU2-8.3.0/bin/SU2/opt/project.py", line 211, in _eval
    vals = design._eval(func, *args)
  File "/home/programs/SU2/SU2-8.3.0/bin/SU2/eval/design.py", line 151, in _eval
    vals = eval_func(*inputs)
  File "/home/programs/SU2/SU2-8.3.0/bin/SU2/eval/design.py", line 250, in obj_f
    func += su2func(this_obj, config, state) * sign * scale * global_factor
  File "/home/programs/SU2/SU2-8.3.0/bin/SU2/eval/functions.py", line 126, in function
    func_out = state["FUNCTIONS"][func_name]
KeyError: 'CUSTOM_OBJFUNC'

I got lost after this error. How can I make CUSTOM_OBJFUNC work?

  • OS: Linux (Ubuntu 22.04.5 LTS)
  • C++ compiler and version: g++ (GCC) 11.4.0
  • MPI implementation and version: Open MPI 4.1.2
  • SU2 Version: v8.3.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions