You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从yield向量累加值以满足demand向量各年度能源需求?

年度能源需求匹配产量的R语言实现方案

问题描述

我有两个向量:

  • demand.vec:包含22个年度能源需求值,对应22年;
  • yield.vec:规模更大,是降序排列的能源产量值。

需求是:针对每一年,从yield.vec的剩余未使用元素中累加足够多的数值,使其至少达到当年的能源需求。最终输出两个向量:

  1. 各年实际达成的能源总产量
  2. 各年使用的yield.vec元素数量

可复现代码

# 创建需求向量
demand.vec <- c(427839, 408392, 388944, 369497.652793, 350050, 330603, 311155, 291708, 272261, 252814, 233366, 213919, 
                194472, 175025, 155577, 136130, 116683, 97236,  77788,  58341,  38894, 19447)

# 创建产量向量
set.seed(10)
yield.vec <- sort(runif(n = 10500, min = 800, max = 950), decreasing= T)

实现方案

通过循环遍历每年需求,跟踪yield.vec的剩余起始位置,计算所需元素数量及实际总产量:

# 初始化结果向量
actual_yield <- numeric(length(demand.vec))
used_count <- integer(length(demand.vec))

# 记录当前yield.vec的起始索引
current_start <- 1

for (i in seq_along(demand.vec)) {
  # 计算从当前起始位置开始的累积产量
  cum_sum <- cumsum(yield.vec[current_start:length(yield.vec)])
  # 找到第一个满足需求的累积和位置
  needed_idx <- which(cum_sum >= demand.vec[i])[1]
  
  # 存储结果
  actual_yield[i] <- cum_sum[needed_idx]
  used_count[i] <- needed_idx
  
  # 更新下一年的起始索引
  current_start <- current_start + needed_idx
}

# 输出结果
actual_yield
used_count

结果验证

运行代码后,第一年的实际产量为428011.69755,使用元素数452;第二年实际产量409118.77503,使用元素数435,与示例完全一致。

内容的提问来源于stack exchange,提问作者climsaver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:19:57