-
Notifications
You must be signed in to change notification settings - Fork 909
Open
Labels
Description
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