本文整理汇总了Python中openmdao.recorders.recording_manager.RecordingManager.record_iteration方法的典型用法代码示例。如果您正苦于以下问题:Python RecordingManager.record_iteration方法的具体用法?Python RecordingManager.record_iteration怎么用?Python RecordingManager.record_iteration使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类openmdao.recorders.recording_manager.RecordingManager
的用法示例。
在下文中一共展示了RecordingManager.record_iteration方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Driver
# 需要导入模块: from openmdao.recorders.recording_manager import RecordingManager [as 别名]
# 或者: from openmdao.recorders.recording_manager.RecordingManager import record_iteration [as 别名]
#.........这里部分代码省略.........
"""
return self._cons
def run(self, problem):
""" Runs the driver. This function should be overridden when inheriting.
Args
----
problem : `Problem`
Our parent `Problem`.
"""
self.run_once(problem)
def run_once(self, problem):
""" Runs root's solve_nonlinear one time
Args
----
problem : `Problem`
Our parent `Problem`.
"""
system = problem.root
# Metadata Setup
self.iter_count += 1
metadata = self.metadata = create_local_meta(None, 'Driver')
system.ln_solver.local_meta = metadata
update_local_meta(metadata, (self.iter_count,))
# Solve the system once and record results.
with system._dircontext:
system.solve_nonlinear(metadata=metadata)
self.recorders.record_iteration(system, metadata)
def calc_gradient(self, indep_list, unknown_list, mode='auto',
return_format='array', sparsity=None):
""" Returns the scaled gradient for the system that is contained in
self.root, scaled by all scalers that were specified when the desvars
and constraints were added.
Args
----
indep_list : list of strings
List of independent variable names that derivatives are to
be calculated with respect to. All params must have a IndepVarComp.
unknown_list : list of strings
List of output or state names that derivatives are to
be calculated for. All must be valid unknowns in OpenMDAO.
mode : string, optional
Deriviative direction, can be 'fwd', 'rev', 'fd', or 'auto'.
Default is 'auto', which uses mode specified on the linear solver
in root.
return_format : string, optional
Format for the derivatives, can be 'array' or 'dict'.
sparsity : dict, optional
Dictionary that gives the relevant design variables for each
constraint. This option is only supported in the `dict` return
format.
Returns
-------
示例2: Driver
# 需要导入模块: from openmdao.recorders.recording_manager import RecordingManager [as 别名]
# 或者: from openmdao.recorders.recording_manager.RecordingManager import record_iteration [as 别名]
#.........这里部分代码省略.........
# Compute the derivatives in dict format...
if prob.model._owns_approx_jac:
derivs = prob._compute_totals_approx(of=of, wrt=wrt, return_format='dict',
global_names=global_names)
else:
derivs = prob._compute_totals(of=of, wrt=wrt, return_format='dict',
global_names=global_names)
# ... then convert to whatever the driver needs.
if return_format in ('dict', 'array'):
if self._has_scaling:
for okey, odict in iteritems(derivs):
for ikey, val in iteritems(odict):
iscaler = self._designvars[ikey]['scaler']
oscaler = self._responses[okey]['scaler']
# Scale response side
if oscaler is not None:
val[:] = (oscaler * val.T).T
# Scale design var side
if iscaler is not None:
val *= 1.0 / iscaler
else:
raise RuntimeError("Derivative scaling by the driver only supports the 'dict' and "
"'array' formats at present.")
if return_format == 'array':
derivs = self._dict2array_jac(derivs)
return derivs
def record_iteration(self):
"""
Record an iteration of the current Driver.
"""
if not self._rec_mgr._recorders:
return
metadata = create_local_meta(self._get_name())
# Get the data to record
data = {}
if self.recording_options['record_desvars']:
# collective call that gets across all ranks
desvars = self.get_design_var_values()
else:
desvars = {}
if self.recording_options['record_responses']:
# responses = self.get_response_values() # not really working yet
responses = {}
else:
responses = {}
if self.recording_options['record_objectives']:
objectives = self.get_objective_values()
else:
objectives = {}
if self.recording_options['record_constraints']:
constraints = self.get_constraint_values()
else:
constraints = {}
示例3: Solver
# 需要导入模块: from openmdao.recorders.recording_manager import RecordingManager [as 别名]
# 或者: from openmdao.recorders.recording_manager.RecordingManager import record_iteration [as 别名]
#.........这里部分代码省略.........
"""
Run the appropriate apply method on the system.
"""
pass
def _linearize(self):
"""
Perform any required linearization operations such as matrix factorization.
"""
pass
def _linearize_children(self):
"""
Return a flag that is True when we need to call linearize on our subsystems' solvers.
Returns
-------
boolean
Flag for indicating child linerization
"""
return True
def __str__(self):
"""
Return a string representation of the solver.
Returns
-------
str
String representation of the solver.
"""
return self.SOLVER
def record_iteration(self, **kwargs):
"""
Record an iteration of the current Solver.
Parameters
----------
**kwargs : dict
Keyword arguments (used for abs and rel error).
"""
if not self._rec_mgr._recorders:
return
metadata = create_local_meta(self.SOLVER)
# Get the data
data = {}
if self.recording_options['record_abs_error']:
data['abs'] = kwargs.get('abs')
else:
data['abs'] = None
if self.recording_options['record_rel_error']:
data['rel'] = kwargs.get('rel')
else:
data['rel'] = None
system = self._system
if isinstance(self, NonlinearSolver):
outputs = system._outputs
inputs = system._inputs
residuals = system._residuals
else: # it's a LinearSolver
示例4: Driver
# 需要导入模块: from openmdao.recorders.recording_manager import RecordingManager [as 别名]
# 或者: from openmdao.recorders.recording_manager.RecordingManager import record_iteration [as 别名]
#.........这里部分代码省略.........
try:
if total_jac is None:
total_jac = _TotalJacInfo(problem, of, wrt, global_names,
return_format, approx=True, debug_print=debug_print)
self._total_jac = total_jac
totals = total_jac.compute_totals_approx(initialize=True)
else:
totals = total_jac.compute_totals_approx()
finally:
self._recording_iter.stack.pop()
else:
if total_jac is None:
total_jac = _TotalJacInfo(problem, of, wrt, global_names, return_format,
debug_print=debug_print)
# don't cache linear constraint jacobian
if not total_jac.has_lin_cons:
self._total_jac = total_jac
self._recording_iter.stack.append(('_compute_totals', 0))
try:
totals = total_jac.compute_totals()
finally:
self._recording_iter.stack.pop()
if self._rec_mgr._recorders and self.recording_options['record_derivatives']:
metadata = create_local_meta(self._get_name())
total_jac.record_derivatives(self, metadata)
return totals
def record_iteration(self):
"""
Record an iteration of the current Driver.
"""
if not self._rec_mgr._recorders:
return
# Get the data to record (collective calls that get across all ranks)
opts = self.recording_options
filt = self._filtered_vars_to_record
if opts['record_desvars']:
des_vars = self.get_design_var_values(unscaled=True, ignore_indices=True)
else:
des_vars = {}
if opts['record_objectives']:
obj_vars = self.get_objective_values(unscaled=True, ignore_indices=True)
else:
obj_vars = {}
if opts['record_constraints']:
con_vars = self.get_constraint_values(unscaled=True, ignore_indices=True)
else:
con_vars = {}
if opts['record_responses']:
# res_vars = self.get_response_values() # not really working yet
res_vars = {}
else:
res_vars = {}
des_vars = {name: des_vars[name] for name in filt['des']}