Python实现单变量P10/P90敏感性分析配置自动生成方法问询
单变量P10/P90敏感性分析配置的优雅实现
核心需求
每次仅调整一个变量为P10或P90值,其余变量保持P50基准值,实现可灵活适配多变量的配置生成,避免手动编写的低效。
优化实现代码
首先保留你的namedtuple定义:
from collections import namedtuple Sensitivity_Case = namedtuple('Sensitivity_Case', ['a', 'b', 'c']) # P50基准案例 p50 = Sensitivity_Case(5, 50, 'medium') # P10案例 p10 = Sensitivity_Case(1, 5, 'low') # P90案例 p90 = Sensitivity_Case(10, 500, 'high')
接下来是适配多变量的生成函数:
def generate_sensitivity_configs(p50_base, p10_vals, p90_vals): configs = [] # 遍历每个变量的索引(自动适配namedtuple的字段数量) for idx in range(len(p50_base._fields)): # 生成当前变量取P10、其余取P50的配置 p10_config = list(p50_base) p10_config[idx] = p10_vals[idx] configs.append(p10_config) # 生成当前变量取P90、其余取P50的配置 p90_config = list(p50_base) p90_config[idx] = p90_vals[idx] configs.append(p90_config) return configs # 生成所有敏感性配置 sensitivity_configs = generate_sensitivity_configs(p50, p10, p90) # 按需求格式输出 for i, config in enumerate(sensitivity_configs, 1): print(f"config{i} = {config}")
实现优势
- 自动适配变量数量:无论你新增或减少
Sensitivity_Case的字段(比如加个d变量),函数无需修改,自动遍历所有变量生成对应配置 - 逻辑精准:严格遵循单变量敏感性分析规则,每个变量仅生成P10、P90两个变体,其余保持基准值
- 避免重复劳动:彻底摆脱手动编写
config1到confign的繁琐工作
输出结果
运行代码后会生成你需要的6个配置:
config1 = [1, 50, 'medium'] config2 = [10, 50, 'medium'] config3 = [5, 5, 'medium'] config4 = [5, 500, 'medium'] config5 = [5, 50, 'low'] config6 = [5, 50, 'high']
内容的提问来源于stack exchange,提问作者Marcus Lundgren
相关产品推荐
相关产品推荐

