Appearance
6.3 资源与成本
阅读提示: 计划说你 5 天能砌完一面墙,但派几个人?用多少砖?花多少钱?没有资源与成本的计划,只是一张愿望清单。
6.3.1 资源是什么
在 Primavera Risk Analysis 中,人员、设备、材料和固定费用都被视为资源(Resource)。Mr. House 整理出了项目需要的全部资源。
| 资源类型 | 说明 | 本案例对应 |
|---|---|---|
| 人力(Human) | 按日消耗,有数量限制 | LABORER |
| 材料(Material) | 按量消耗,供应通常无限 | FENCE, PAINT, SAND, SLABS |
| 固定费用 | 一次性成本 | FISH |
6.3.2 创建资源
操作路径:Plan | Resources,或点击工具栏资源按钮
在弹出的 Resource Setup 对话框中逐行输入:
| ID | Description | 类型 | Cost(单价) | Supply(供应量) |
|---|---|---|---|---|
| LABORER | 工人 | 人力 | $30 | 2 |
| FENCE | 围栏材料 | 材料 | $100 | — |
| PAINT | 油漆 | 材料 | $30 | — |
| FISH | 鱼苗 | 固定费用 | $20 | — |
| SAND | 沙子 | 材料 | $20 | — |
| SLABS | 石板 | 材料 | $100 | — |
输入方法: 在 ID 列第一个空白单元格输入资源 ID → 输入 Description → 继续下一行。完成后关闭对话框(File | Close`)。
6.3.3 为资源分配独立日历 —— "Weekends off"
项目日历改成了 7 天工作周,但 Mr. House 的工人周末不干活。对此,为 LABORER 创建一个「周末休息」日历。
步骤一:创建新日历 "Weekends off"
- 点击 Calendar 按钮
- 点击 New Calendar 按钮
- 输入名称
Weekends off - 选择 Standard作为Copy of calendar(复制基准)
- 点击 OK
- 点击 Workweek...
- 取消勾选 Saturday 和 Sunday
- 点击 OK→OK
步骤二:将日历分配给 LABORER
- 重新打开
Plan | Resources - 找到 LABORER 行的 Calendar 列
- 从下拉菜单中选择
Weekends off - 关闭对话框
现在,任何分配了 LABORER 的任务都不能在周末执行——即使项目日历是 7 天工作周。甘特图上会显示黄色竖条底纹表示资源导致的「停机时间(downtime)」。
资源日历优先级: 资源日历 > 任务日历 > 项目日历。资源日历是最细粒度的约束。
6.3.4 加载类型:Normal vs Spread
Loading(加载类型) 决定资源成本在时间轴上的分布方式。本教程用到两种:
| 类型 | 行为 | 适用场景 |
|---|---|---|
| Normal | 每天使用固定单位数。工期越长 → 总成本越高 | 人力、设备 |
| Spread | 总单位数固定,均匀分摊到工期各天。工期变长 → 每天消耗减少,总成本不变 | 材料、固定费用 |
成本计算对比示例:
Label LABORER 分配给 Put up posts`(工期 3 天),1 单位 Normal 加载:
- 每天消耗 1 个 LABORER 单位
- 总消耗 = 1 × 3 天 = 3 单位
- 总成本 = 3 × $30 = $90
Label PAINT 分配给 Paint fence,1 单位 Spread 加载:
- 无论工期多少天,总量固定为 1 单位
- 总消耗 = 1 单位
- 总成本 = 1 × $30 = $30(即使工期是 5 天)
修改加载类型:
在 Resource Setup 中,点击资源对应行的 Default Loading列单元格,键入**s** 切换为 Spread,按回车确认。
需要改为 Spread 的资源:FENCE、PAINT、FISH、SAND、SLABS。LABORER 保持 Normal。
经验法则: 能「加班消化」的资源用 Normal(人加班要加钱);「固定数量」的资源用 Spread(100 块砖不管干几天都是 100 块)。
6.3.5 资源成本
在 Resource Setup 的 Cost 列输入单价:
| ID | Cost |
|---|---|
| LABORER | $30 |
| FENCE | $100 |
| PAINT | $30 |
| FISH | $20 |
| SAND | $20 |
| SLABS | $100 |
任务成本公式:
任务成本 = 单位/天 × 单价 × 任务工期(Normal 加载)
任务成本 = 总单位数 × 单价(Spread 加载)
6.3.6 供应量(Supply)
Supply 定义资源同时可用的最大数量。材料供应无限(Mr. House 可随时去商店买),但工人只有 2 个。
在 Resource Setup 中,将 LABORER 的 Supply 单元格设为 2`。
这意味着任何时刻最多只有 2 个工人能同时干活。如果三个任务同时各需 1 个工人 → 资源过载(Over-demand)——第 4 章将解决这个问题。

6.3.7 分配资源到任务
资源定义好了,接下来把它们分配到具体任务上。
操作步骤:
- 点击任务,在底部 Task Details面板中切换到Resources 选项卡
- 在 ID 列第一个空白单元格的下拉菜单中选择资源
- 在 Units/Period 列输入分配量
- 重复直到该任务的所有资源分配完成
完整资源分配表:
| 任务 | 资源 | 分配量 |
|---|---|---|
| Buy fence materials | FENCE, PAINT | 1, 1 |
| Dig post holes | LABORER | 1 |
| Put up posts | LABORER | 1 |
| Fix horizontals | LABORER | 1 |
| Paint fence | LABORER | 1 |
| Buy path materials | SLABS, SAND | 1, 1 |
| Prepare ground | LABORER | 1 |
| Lay path | LABORER | 1 |
| Dig pond | LABORER | 1 |
| Line pond | LABORER | 1 |
| Fill pond | — | — |
| Buy fish | FISH | 1 |
分配资源后记得保存(File | Save`)。

LABORER 分配到的任务上,甘特图出现黄色竖条底纹——这是 LABORER 的 "Weekends off" 日历在发挥作用,表示周末不能施工。
实战案例:某装修项目的资源建模
案例:某办公楼装修项目
项目背景
某办公楼装修,预算 ¥380 万,工期 90 天。主要工种:瓦工 3 人、木工 2 人、油漆工 2 人,以及多种材料。
问题分析
装修中最常见的资源冲突:瓦工铺地砖时,木工也在等瓦工抹平墙面才能做柜子——但瓦工只有 3 人,同时在两个作业面干活。
建模要点
| 资源 ID | 类型 | Supply | 成本 | Loading | 日历 |
|---|---|---|---|---|---|
| TILER | Labor | 3 | ¥400/天 | Normal | 5天周 |
| CARPENTER | Labor | 2 | ¥450/天 | Normal | 5天周 |
| PAINTER | Labor | 2 | ¥350/天 | Normal | 5天周 |
| TILE | Material | ∞ | ¥80/㎡ | Spread | — |
| PAINT_MAT | Material | ∞ | ¥30/㎡ | Spread | — |
关键发现
将瓷砖和涂料设为 Spread 模式后,即使瓦工因缺料延期 3 天,材料总成本也不会因工期延长而膨胀——工期拉长 → 每天消耗量降低 → 总成本不变。这对材料成本控制至关重要。
本章小结
| 要点 | 一句话 |
|---|---|
| 创建资源 | Plan |
| 资源日历 | 为 LABORER 创建 "Weekends off" 日历,限制周末不可用 |
| Normal vs Spread | Normal = 按日消耗(人力);Spread = 总量固定分摊(材料) |
| 成本计算 | Normal: 工期 × 单价 × 日单位;Spread: 总量 × 单价 |
| Supply 约束 | LABORER = 2 意味着最多 2 人同时干活 |
| 分配资源 | Task Details → Resources 选项卡 → 选资源 + 输入分配量 |
英文原版内容版权归 Oracle Corporation 所有。中文翻译、案例、习题由 计划工程师 独立创作。
