线性规划(Binary Variable Grouping):最优成本设计师选择求助
线性规划建模与Excel Solver约束添加方案
变量定义
- 设0-1决策变量
x_i(i对应每个设计师):x_i=1表示选用该设计师,x_i=0表示不选用。其中Paul 1对应x_p1,Paul 2对应x_p2。 - 设
c_i为设计师i的服务成本,目标函数为最小化总成本:Σ(c_i * x_i)。
核心约束设置
1. Paul 1与Paul 2二选一约束
在Excel Solver中直接添加以下约束:
x_p1 + x_p2 = 1
这个等式保证两人中恰好选中一个,完全符合“只能二选一、不可同时选用”的要求。如果需求是不能同时选但可都不选,则将等式改为x_p1 + x_p2 ≤ 1。
2. 凑齐整套服装约束
先整理每个设计师能提供的单品(衬衫/裤子/夹克),对三类单品分别设置覆盖约束:
- 衬衫覆盖:所有能制作衬衫的设计师的
x_i之和 ≥ 1(确保至少有一个选中的设计师能做衬衫) - 裤子覆盖:所有能制作裤子的设计师的
x_i之和 ≥ 1 - 夹克覆盖:所有能制作夹克的设计师的
x_i之和 ≥ 1
Excel Solver操作步骤
- 在Excel表格中整理数据:
- 列:设计师名称、成本、能做衬衫(1/0)、能做裤子(1/0)、能做夹克(1/0)、决策变量(空白单元格,用于Solver赋值)
- 计算辅助值:
- 总成本:用
SUMPRODUCT计算所有设计师成本与决策变量的乘积 - 衬衫覆盖数:
SUMPRODUCT(能做衬衫列, 决策变量列),裤子、夹克覆盖数同理
- 总成本:用
- 打开Solver配置:
- 目标单元格:选择总成本单元格,设置为「最小值」
- 可变单元格:选择所有决策变量单元格
- 添加约束:
- 所有决策变量单元格 → 「二进制」(必须设置,确保变量只能取0或1)
- Paul1与Paul2的决策变量之和 → 「=1」
- 衬衫/裤子/夹克覆盖数 → 「≥1」
- 选择求解方法为「Simplex LP」,点击「求解」即可得到最优解。
关键提醒
- 决策变量的「二进制」属性是核心,不能仅设置整数0-1,Solver的二进制约束会自动确保变量取值符合要求。
- 如果求解过程提示无解,检查是否存在:没有设计师能覆盖某类单品,或者Paul1/Paul2的组合无法满足单品覆盖要求,需调整设计师范围或约束逻辑。
内容的提问来源于stack exchange,提问作者Explore
相关产品推荐
相关产品推荐

