MICROSOFT

EP05. “Capital Investment 资本投资决策”

首页 Microsoft 工具 Excel · Data Analysis · Solver · EP05
约 4 分钟· #EP05#Excel#Solver
🔒 登录后可标记已读
  • 这篇用 Solver 解「资本投资组合」问题
  • 手上有一批候选投资项目,每个都要「投或不投」(二元变量),在资金上限、互斥条件、依赖条件的限制下,挑出总利润最高的组合
  • 前置知识是 EP01 的 Solver 基本操作流程和 SUMPRODUCT 函数
  • 学完能处理预算分配、项目筛选这类「多选一/多选几」的最优化问题

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


第一步:建立模型

  1. 决策变量:每个投资项目投不投(是=1,否=0)
  2. 约束条件
    • 总投入资金不能超过 50 个单位
    • 部分投资项目之间互斥(选了一个就不能选另一个)
    • 部分投资项目有依赖关系(项目六、项目七要先选了项目五才能选)
  3. 目标函数:让选中投资组合的总利润最大化

命名范围:

范围名称单元格用途
ProfitC5:I5每个投资项目的利润
YesNoC13:I13每个投资项目投不投(0/1)
TotalProfitM13选中组合的总利润

SUMPRODUCT 把每个项目的资金/利润跟对应的 0/1 选择相乘加总,算出总资金占用和总利润。


第二步:试算

先手动试几组投资组合,看看哪些会违反资金上限、互斥或依赖这些约束条件,哪些是合法的组合。


第三步:用 Solver 求解

  1. Data 选项卡 → Solver
  2. Set Objective 选 TotalProfit,选 Max(最大化)
  3. By Changing Variable Cells 选 YesNo
  4. 加约束:总资金 ≤ 50;YesNo 变量限制为二元(bin)
  5. 点击 Solve

[截图:Solver 约束列表,资金上限和 YesNo 二进制约束都已添加]


求解结果

最优组合是投资项目二、四、五、七,总利润 146,同时满足所有约束条件。

[截图:YesNo 结果行,被选中的投资项目显示 1、其余显示 0]


学完你会

  • ✅ 用二元变量(投/不投)给项目筛选问题建模
  • ✅ 加上资金上限、互斥、依赖三类约束条件,缺一不可
  • ✅ 用 Solver 求出总利润最高、又同时合法的投资组合

常见错误

  • 忘记把 YesNo 变量设成二元约束(bin),Solver 算出 0.5 这种不合理的「投一半」结果
  • 互斥或依赖条件的约束公式写反逻辑,Solver 算出实际上不合法的组合
  • 只顾着资金上限,漏了检查互斥/依赖这类非资金类的约束条件

Sources

Blog / Website:

  1. Capital Investment