储罐质量时序加权平均计算的向量化优化需求
储罐质量属性计算的向量化优化
需求说明
计算储罐随时间变化的质量属性,该值为上期质量(以上期末库存体积$v_{n-1}$为权重)与本期进料质量(以进料量$vinc_{n}$为权重)的加权平均,公式为:
qₙ = (qₙ₋₁ × vₙ₋₁ + qincₙ × vincₙ) / (vₙ₋₁ + vincₙ)
参数定义:
- $qₙ$:第n时段的质量
- $vₙ₋₁$:上一时期结转库存体积
- $vincₙ$:本期进料量
- $qincₙ$:本期进料质量
现有实现(低效顺序算法)
import numpy as np q = np.empty_like(qinc) q.fill(np.nan) if v[0] > 0: q[0] = qinc[0] for i in range(1, len(qinc)): v_prev = v[i-1] q_prev = np.nan if v_prev > 0: q_prev = q[i-1] q_curr = qinc[i] v_curr = vinc[i] if v[i] > 0: q[i] = (np.nan_to_num(q_prev * v_prev) + np.nan_to_num(q_curr * v_curr)) / (v_prev + v_curr)
示例输入
qinc = np.asarray([0.5, 2.0, np.nan, 4, 8]) vinc = np.asarray([100, 200, 0, 300, 50]) v = np.asarray([0, 10, 100, 400, 200])
预期输出
q == [nan, 2., 2., 3.5, 4.]
我尝试用累积求和实现向量化但未成功,希望得到优化该算法的提示。
内容的提问来源于stack exchange,提问作者orange
相关产品推荐
相关产品推荐

