EP05. “Capital Investment 资本投资决策”
🔒 登录后可标记已读- 这篇用 Solver 解「资本投资组合」问题
- 手上有一批候选投资项目,每个都要「投或不投」(二元变量),在资金上限、互斥条件、依赖条件的限制下,挑出总利润最高的组合
- 前置知识是 EP01 的 Solver 基本操作流程和 SUMPRODUCT 函数
- 学完能处理预算分配、项目筛选这类「多选一/多选几」的最优化问题
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
第一步:建立模型
- 决策变量:每个投资项目投不投(是=1,否=0)
- 约束条件:
- 总投入资金不能超过 50 个单位
- 部分投资项目之间互斥(选了一个就不能选另一个)
- 部分投资项目有依赖关系(项目六、项目七要先选了项目五才能选)
- 目标函数:让选中投资组合的总利润最大化
命名范围:
| 范围名称 | 单元格 | 用途 |
|---|---|---|
| Profit | C5:I5 | 每个投资项目的利润 |
| YesNo | C13:I13 | 每个投资项目投不投(0/1) |
| TotalProfit | M13 | 选中组合的总利润 |
用 SUMPRODUCT 把每个项目的资金/利润跟对应的 0/1 选择相乘加总,算出总资金占用和总利润。
第二步:试算
先手动试几组投资组合,看看哪些会违反资金上限、互斥或依赖这些约束条件,哪些是合法的组合。
第三步:用 Solver 求解
- Data 选项卡 → Solver
- Set Objective 选 TotalProfit,选 Max(最大化)
- By Changing Variable Cells 选 YesNo
- 加约束:总资金 ≤ 50;YesNo 变量限制为二元(bin)
- 点击 Solve
[截图:Solver 约束列表,资金上限和 YesNo 二进制约束都已添加]
求解结果
最优组合是投资项目二、四、五、七,总利润 146,同时满足所有约束条件。
[截图:YesNo 结果行,被选中的投资项目显示 1、其余显示 0]
学完你会
- ✅ 用二元变量(投/不投)给项目筛选问题建模
- ✅ 加上资金上限、互斥、依赖三类约束条件,缺一不可
- ✅ 用 Solver 求出总利润最高、又同时合法的投资组合
常见错误
- 忘记把 YesNo 变量设成二元约束(bin),Solver 算出 0.5 这种不合理的「投一半」结果
- 互斥或依赖条件的约束公式写反逻辑,Solver 算出实际上不合法的组合
- 只顾着资金上限,漏了检查互斥/依赖这类非资金类的约束条件
Sources
Blog / Website: