如何找出对应最小平均能耗成本的光伏电池容量?
解决方法
核心思路是把容量和对应的平均成本绑定存储,而非分开维护两个独立列表,这样就能直接通过最小成本定位到对应的容量。下面给出两种实用实现方式:
前提假设
先确认你已有可用的calculate_avg_cost(capacity)函数,这里提供一个模拟版本供参考:
import numpy as np def calculate_single_cost(capacity): # 模拟单次能耗成本计算逻辑 production = capacity + np.random.randn() * 10 demand = np.random.randn() * 15 cost = (demand - production) * 0.8 if production < demand else -(production - demand) * 0.3 return max(cost, 0) def calculate_avg_cost(capacity, runs=1000): return sum(calculate_single_cost(capacity) for _ in range(runs)) / runs
方法1:用元组配对存储(推荐)
遍历容量列表,将「平均成本」和「容量」打包成元组,通过min()函数指定以成本为判断依据找到最小元组,最后提取对应容量:
def find_optimal_capacity(capacities): # 生成(平均成本, 容量)的元组迭代器,节省内存 cost_cap_pairs = ((calculate_avg_cost(cap), cap) for cap in capacities) # 取成本最小的元组的第二个元素,即为对应容量 return min(cost_cap_pairs)[1]
如果需要保留所有容量的成本数据用于后续分析,也可以先存入列表:
def find_optimal_capacity(capacities): cost_cap_list = [] for cap in capacities: avg_cost = calculate_avg_cost(cap) cost_cap_list.append((avg_cost, cap)) min_pair = min(cost_cap_list) print(f"最小平均成本: {min_pair[0]:.2f},对应容量: {min_pair[1]}") return min_pair[1]
方法2:用字典映射
以容量为键、平均成本为值构建字典,通过min()函数基于字典值找到对应的键(即最优容量):
def find_optimal_capacity(capacities): cost_map = {cap: calculate_avg_cost(cap) for cap in capacities} # key参数指定按字典的值比较,返回值最小的键 return min(cost_map, key=cost_map.get)
为什么不建议用单独的成本列表?
单独维护成本列表时,需要通过索引对应回容量,但一旦容量列表顺序变动、出现重复值,很容易出现匹配错误。绑定存储的方式更直观健壮,尤其适用于容量非连续整数的场景。
内容的提问来源于stack exchange,提问作者user23819712
相关产品推荐
相关产品推荐

