实验设计
(类来自 pyomo.contrib.doe.doe)
- class pyomo.contrib.doe.doe.DesignOfExperiments(experiment=None, fd_formula='central', step=0.001, objective_option='determinant', scale_constant_value=1.0, scale_nominal_param_value=False, prior_FIM=None, jac_initial=None, fim_initial=None, L_diagonal_lower_bound=1e-07, solver=None, tee=False, get_labeled_model_args=None, logger_level=30, _Cholesky_option=True, _only_compute_fim_lower=True)[source]
基础类:
object- __init__(experiment=None, fd_formula='central', step=0.001, objective_option='determinant', scale_constant_value=1.0, scale_nominal_param_value=False, prior_FIM=None, jac_initial=None, fim_initial=None, L_diagonal_lower_bound=1e-07, solver=None, tee=False, get_labeled_model_args=None, logger_level=30, _Cholesky_option=True, _only_compute_fim_lower=True)[源代码]
该软件包支持使用Pyomo进行基于模型的实验分析设计。 支持直接优化和枚举模式。
该包自8月24日起已从其原始形式进行了重构。有关更多信息,请参阅文档。
- Parameters:
experiment – 实验对象,用于保存模型并标记所有组件。该对象应具有一个
get_labeled_model方法,该方法返回一个带有以下标记集的模型:unknown_parameters、experimental_inputs、experimental_outputsfd_formula – 用于计算灵敏度矩阵的有限差分公式。必须是以下之一 [
central,forward,backward], 默认:centralstep – 有限差分公式的相对步长。 默认值:1e-3
objective_option – 目标选项的字符串表示。当前可用的选项有:
determinant(用于行列式,或D-最优性)和trace(用于迹或 A-最优性)scale_constant_value – 敏感性矩阵的常数缩放。每个元素都将乘以这个缩放因子。 默认值:1
scale_nominal_param_value – 布尔值,用于确定是否通过标称参数值缩放灵敏度矩阵。灵敏度矩阵的每一列将分别除以相应的标称参数值。 默认值:False
prior_FIM – 表示先前实验信息的2D numpy数组。如果未提供值,则假定先验为零矩阵。将假定此矩阵已按用户指定的方式缩放(即,如果scale_nominal_param_value为true,我们将假定此处提供的FIM已按参数值缩放)
jac_initial – 作为敏感性矩阵初始值的2D numpy数组。
fim_initial – 作为FIM初始值的2D numpy数组。
L_diagonal_lower_bound – 下三角Cholesky分解矩阵值的下界。 默认值:1e-7
solver – 用户指定的
solver对象,默认值为None。 如果未指定,默认求解器设置为使用MA57的IPOPT。tee – 传递给求解器的选项,用于详细输出。
get_labeled_model_args – 用于Experiment对象上
get_labeled_model函数的额外参数。_Cholesky_option – 布尔值,表示是否使用Cholesky分解来计算D-最优性准则的行列式。除非用户有意降低性能(即,将使用完整FIM的现有工具与此算法进行比较),否则不应更改此参数。
_only_compute_fim_lower – 如果为True,则只计算FIM的下三角部分。除非用户有意降低性能(即,将使用完整FIM的现有工具与此算法进行比较),否则不应更改此参数。
logger_level – 指定日志记录器的级别。更改为 logging.DEBUG 以获取所有消息。
方法
__init__([实验, 有限差分公式, 步长, ...])这个包支持使用Pyomo进行基于模型的实验分析设计。
check_model_FIM([model, FIM])检查指定的矩阵FIM是否与模型预期的形状匹配。
check_model_jac([jac])check_model_labels([model])检查模型是否包含自动构建DoE模型所需的后缀。
compute_FIM([model, method])计算从实验的
get_labeled_model()函数初始化的实验设计的FIM。compute_FIM_full_factorial([model, ...])将运行基于模拟的全因子探索实验输入空间(即
grid search或parameter sweep),以了解FIM指标如何随实验设计空间的变化而变化。create_doe_model([model])添加方程以计算敏感性、FIM和目标。
create_objective_function([model])生成目标函数作为表达式和Pyomo目标对象
draw_factorial_figure([results, ...])从
compute_FIM_full_factorial函数提供的结果字典中提取绘制图表所需的结果。get_FIM([model])从指定的模型中获取FIM值
get_experiment_input_values([model])从指定的模型中获取实验输入值(实验设计)。
get_experiment_output_values([model])从指定的模型中获取实验输出值(y hat)。
get_measurement_error_values([model])从指定的模型中获取实验输出值(sigma)。
get_sensitivity_matrix([model])从指定的模型中获取灵敏度矩阵(Q)值。
get_unknown_parameter_values([model])从指定的模型中获取未知参数值(theta)。
run_doe([model, results_file])运行实验估计的单一实验设计。
run_multi_doe_sequential([N_exp])run_multi_doe_simultaneous([N_exp])update_FIM_prior([model, FIM])更新模型对象上的先验FIM。
update_unknown_parameter_values([model, ...])成员文档
- check_model_FIM(model=None, FIM=None)[source]
检查指定的矩阵FIM是否与模型预期的形状匹配。此方法应仅在模型已探测未知参数的长度、实验输入、实验输出和测量误差已存储到对象后调用。
- Parameters:
model (用于后缀检查的模型, 默认值: 无, (self.model))
FIM (要在模型上检查的FIM值)
- compute_FIM(model=None, method='sequential')[source]
计算从实验的
get_labeled_model()函数初始化的实验设计的FIM。- Parameters:
model (用于计算FIM的模型, 默认: None, (self.compute_FIM_model))
方法 (用于指定应使用哪种方法的字符串) – 选项有
kaug和sequential
- Returns:
计算FIM
- Return type:
FIM的2D numpy数组
- compute_FIM_full_factorial(model=None, design_ranges=None, method='sequential')[source]
将运行基于模拟的全因子探索实验输入空间(即
grid search或parameter sweep),以了解FIM指标如何随实验设计空间的变化而变化。- Parameters:
model (用于执行全因子探索的模型)
design_ranges (dict 的 列表,形式为 {
: [start, stop, numsteps]})方法 (用于指定应使用哪种方法的字符串) – 选项是
kaug和sequential
- create_doe_model(model=None)[source]
添加方程以计算灵敏度、FIM和目标。 构建DoE模型。将场景、灵敏度矩阵 Q、FIM以及目标函数添加到模型中。
该函数会改变
model输入。在单一实验的情况下,
model将是 self.model。在多实验的情况下,model将是要枚举的一个实验。- Parameters:
model (用于添加有限差分场景的模型)
- create_objective_function(model=None)[source]
生成目标函数作为表达式和作为Pyomo目标对象
该函数会改变
model输入。在单一实验的情况下,
model将是 self.model。在多实验的情况下,model将是要枚举的一个实验。- Parameters:
model (用于添加有限差分场景的模型)
- draw_factorial_figure(results=None, sensitivity_design_variables=None, fixed_design_variables=None, full_design_variable_names=None, title_text='', xlabel_text='', ylabel_text='', figure_file_name=None, font_axes=16, font_tick=14, log_scale=True)[源代码]
从
compute_FIM_full_factorial函数提供的结果字典中提取绘制图形所需的结果。绘制一维灵敏度曲线或二维热图。
- Parameters:
结果 (字典, 来自
compute_FIM_full_factorial的结果字典, 默认: None (self.fim_factorial_results))sensitivity_design_variables (一个列表, 用于绘制敏感性的设计变量名称)
fixed_design_variables (一个字典, 键是要固定的设计变量名称, 值是要固定的值。)
full_design_variable_names (一个列表, 问题中的所有设计变量。)
title_text (一个字符串, 图的名称)
xlabel_text (一个字符串, 用于图表的x轴标签 (默认值:最后一个设计变量名称)) – 在一维灵敏度曲线中,它应该是绘制曲线的设计变量。 在二维热图中,它应该是design_ranges中的第二个设计变量
ylabel_text (一个字符串, 用于图表的y轴标签 (默认: None (1D); 第一个设计变量名称 (2D))) – 1D 灵敏度曲线不需要它。在 2D 热图中,它应该是 dv_ranges 中的第一个设计变量
figure_file_name (字符串 或 Path, 保存图形的路径)
font_axes (坐标轴标签字体大小)
font_tick (刻度标签字体大小)
log_scale (如果为True, 结果矩阵将通过log10进行缩放)
- get_FIM(model=None)[source]
从指定的模型中获取FIM值
- Parameters:
model (从中获取FIM的模型, 默认值: 无, (self.model))
- Returns:
FIM
- Return type:
FIM的二维列表表示(可以转换为numpy)
- get_experiment_input_values(model=None)[source]
从指定的模型中获取实验输入值(实验设计)。
- Parameters:
model (从中获取实验设计的模型,) – 默认值: None, (self.model)
- Returns:
d
- Return type:
实验输入值的一维列表(最优或指定设计)
- get_experiment_output_values(model=None)[source]
从指定的模型中获取实验输出值(y hat)。
- Parameters:
model (从中获取 y hat 的模型,) – 默认: None, (self.model)
- Returns:
y_hat
- Return type:
设计实验输出的1D列表值
- get_measurement_error_values(model=None)[source]
从指定的模型中获取实验输出值(sigma)。
- Parameters:
model (从中获取sigma值的模型,) – 默认值: None, (self.model)
- Returns:
sigma_diag
- Return type:
用于设计实验的测量误差的一维列表
- get_sensitivity_matrix(model=None)[源代码]
从指定的模型中获取灵敏度矩阵(Q)值。
- Parameters:
model (从中获取Q的模型, 默认值: 无, (self.model))
- Returns:
问题
- Return type:
敏感性矩阵的二维列表表示(可以转换为numpy)
- get_unknown_parameter_values(model=None)[source]
从指定的模型中获取未知参数值(theta)。
- Parameters:
model (从中获取theta的模型,) – 默认值: None, (self.model)
- Returns:
theta
- Return type:
设计此实验时未知参数值的1D列表