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

R中复现含二元选择变量的预算约束整数优化问题

0-1整数优化模型R复现:瞭望塔选址决策

问题说明

  • 研究对象:共10个独立地块,地块大小等其余属性不参与计算
  • 决策变量:各地块对应的二元变量Bᵢ,Bᵢ=1表示在该地块建设瞭望塔,Bᵢ=0表示不建设
  • 约束条件:所有建设瞭望塔的地块对应建设成本总和≤30
  • 优化目标:最小化全部地块的期望价值(EV)总和
  • 验证参照:已通过Excel Solver规划求解得到最优建设决策结果,可用于校验R代码输出正确性

EV计算规则

通用EV计算公式:
EV = 火灾发生概率(p) × 火灾发生时损失 + (1-p) × 无火灾时损失 + 建设成本(K)

结合场景规则可对公式做简化:

  • 无火灾时损失固定为0
  • 地块未建塔且发生火灾时,产生高损失H
  • 地块已建塔且发生火灾时,仅产生低损失L
  • 简化后单地块EV计算逻辑:
    • 建塔时:EV(B=1) = p*L + K
    • 不建塔时:EV(B=0) = p*H
  • 成本核算规则:仅地块建塔时计入对应建设成本K,不建塔时成本计为0

参数定义

  • Plot i:序号为i的地块,i取值1到10
  • H:未建塔地块发生火灾时产生的高损失值
  • L:已建塔地块发生火灾时产生的低损失值
  • p:单个地块的火灾发生概率
  • K:单座瞭望塔的建设成本
  • B:二元决策变量,取值为0或1,对应地块不建/建塔状态

R实现代码

该问题属于标准0-1整数线性规划问题,可直接通过lpSolve包求解,代码如下:

# 加载整数规划计算包
library(lpSolve)

# ========== 替换为实际参数值 ==========
plot_num <- 10                # 地块总数
p <- c()                      # 填入10个地块各自的火灾概率
H <- c()                      # 填入10个地块各自的高损失值
L <- c()                      # 填入10个地块各自的低损失值
K <- c()                      # 填入单座瞭望塔的建设成本(若每块地建塔成本一致可填rep(成本值,10))
budget_limit <- 30            # 总预算上限
# ======================================

# 构造目标函数系数
# 总EV整理后可拆分为固定项+决策变量线性项,固定项不影响最优决策求解
fixed_ev <- sum(p * H)
obj_coef <- p*L + K - p*H

# 构造预算约束
constraint_matrix <- matrix(K, nrow = 1)
constraint_dir <- "<="
constraint_rhs <- budget_limit

# 求解0-1整数规划
opt_result <- lp(
  direction = "min",
  objective.in = obj_coef,
  const.mat = constraint_matrix,
  const.dir = constraint_dir,
  const.rhs = constraint_rhs,
  all.bin = TRUE
)

# 输出计算结果
total_opt_ev <- opt_result$objval + fixed_ev
build_decision <- opt_result$solution
total_cost <- sum(build_decision * K)

print(paste0("最优方案总期望价值:", round(total_opt_ev, 2)))
print(paste0("各地块建设决策(1=建塔,0=不建):", paste(build_decision, collapse = ", ")))
print(paste0("总建设成本:", total_cost))

结果校验

代码输出的建设决策序列可直接和Excel Solver得到的结果比对,若参数填入一致,二者决策结果、总EV、总成本应当完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:06:31