Appearance
7.1 天气建模概述
阅读提示: 本章基于 Primavera Risk Analysis Weather Modeling 模块编写。菜单、按钮、字段名保留英文原文。
天气是所有户外工程的天然敌人。本章教你如何把「老天爷的事」量化成工期分布,让风险分析不再「看天吃饭」。
为什么天气建模对项目至关重要
在一个确定性进度计划中,你知道某个任务发生在 7 月,也知道 7 月是雨季——但你无法回答一个关键问题:如果项目因其他风险延误,这个任务推迟到了 10 月,它会受到多大的天气影响?
这就是传统计划的盲区。工期分析中的天气问题比想象中复杂得多:
- 时序不确定性:当任务的开始时间因风险和不确定性而漂移时,它遇到的天气条件也完全不同
- 季节性变化:12 月在南海遇见台风概率 5%,8 月却高达 40%——同一个任务,两个月执行,风险差距可达 8 倍
- 累计效应:一个项目可能经历多个天气事件,每个事件单独看影响不大,但加起来可能就是几个月的工期
PRA 的天气建模模块专门解决这个问题——它将天气条件定义为随季节变化的概率分布,然后在蒙特卡洛模拟中与任务的时间节点正确结合,精确量化「天气」这个变量的工期影响。
PRA 天气建模的工作原理
PRA 天气建模的核心逻辑可以分为三层:
第一层:历史天气数据 → 概率曲线
项目团队基于历史气象数据(国家气象局、项目所在地观测站、行业经验等),对每个时段(通常以月为单位)评估天气的发生概率和影响程度,将其转化为 PRA 能理解的三点估算(最小/最可能/最大)。
第二层:两种天气模型
PRA 提供了两种截然不同的天气建模方式:
| 模型类型 | 适用场景 | 数据定义方式 |
|---|---|---|
| Weather Events (天气事件) | 离散停工天气(台风、暴雨、暴风雪) | 按月定义发生概率 + 停工天数的三点估算 |
| Weather Windows (天气窗口) | 连续停工窗口(冬季封冻、雨季、融雪期) | 定义停工窗口开始与结束日期的三点估算 |
Weather Events 又分为两种情况:
- 概率 = 100%:该时段确定会有停工,但停工天数不确定(如「每年 7 月一定有雨天,只是多少天不确定」)
- 概率 < 100%:该时段可能发生也可能不发生天气事件(如「8 月可能有台风,概率 40%,一旦发生停工 3-5 天」)

第三层:蒙特卡洛模拟中的天气采样
在每次模拟迭代中,PRA 会根据天气日历的定义随机采样:
- 对于 Weather Events:决定该事件是否发生、发生在时段内的哪天、持续多长时间
- 对于 Weather Windows:决定窗口的开始日期和结束日期
然后将这些停工时间与任务的时间节点叠加——任务先受其他风险和工期不确定性的影响,再受天气影响。
关键概念
天气日历 (Weather Calendar)
天气日历是 PRA 中定义天气风险的基本单位。一个项目可以有多个天气日历——例如分别为「南海台风」、「北方冬季低温」、「西南暴雨」创建不同的日历,然后灵活组合分配给不同任务。
季节性模式 (Seasonal Patterns)
天气日历的数据按月度定义,每个月的概率和影响可以不同。这意味着你可以精确反映台风季(6-10 月概率高)和旱季(11-4 月概率低)的季节性变化。
天气资源的底层机制
一旦定义了天气日历,PRA 会自动创建一个同名的资源和一个同名的日历。任务被分配天气日历后,该天气资源就关联到该任务上。因为「任务只能在所有资源都可工作的那天执行」,所以天气停工时间会被强制执行。
创建天气日历的基本步骤
导航到:Risk | Weather Modeling
- 勾选 Add weather modeling to this plan
- 选择 Weather Events或Weather Windows 选项卡
- 点击 Add New Event Calendar或Add New Window Calendar
- 命名日历并设定覆盖的时间范围
- 逐月(或逐时段)填入概率和工期估算数据
- 切换到 Assign to Tasks 选项卡,将天气日历分配给受影响的各任务
- 运行风险分析:
Risk | Run Risk Analysis | Analyze | Step
蓝色竖线在甘特图上代表天气停工时间。你可以用
Step逐步查看每次迭代中天气如何影响各个任务。

设置天气数据导入/导出
Excel 批量导入/导出
天气数据量通常很大——涉及多个月份、多个日历、不同的概率和天数。PRA 支持通过 Excel 进行批量操作:
| 步骤 | 操作 |
|---|---|
| 1 | 创建天气日历后,点击 Export All Weather Data |
| 2 | 在 Excel 中编辑数据(可利用 Excel 的填充功能自动扩展月份) |
| 3 | 保存后,回到 PRA 点击 Import All Weather Data |
你还可以对各单独的 Weather Event 或 Weather Window 日历单独导入/导出数据,使用对话框中的 Import Event Period Data 或 Import Window Data 按钮。
数据来源建议
- 中国气象局历史观测数据(温度、降水、风速等)
- 项目所在地近 10 年的极端天气记录
- 行业规范中对不可施工天气的定义(如《建筑工程冬期施工规程》JGJ/T 104)
- 项目所在地施工日志中的实际停工记录
防止任务被天气拆分
当一个任务遇到长时间的天气窗口(如整个冬季封冻期),你通常不希望任务被「打断」——而是让它推迟到窗口结束后再完整执行。
在 Risk | Weather Modeling | Assign to Tasks 选项卡中,选中目标任务,勾选 Prevent task duration from splitting across its task calendar。
这样,如果任务计划在窗口前开始但在窗口内结束,PRA 会自动将其开始日期推迟到窗口之后。

分配天气日历到任务
创建天气日历后,需要定义哪些任务受其影响:
Risk | Weather Modeling- 切换到 Assign to Tasks 选项卡
- 左侧选中受影响的任务(可用 Find 搜索)
- 右侧选择对应的天气日历
- 勾选适用的 Weather Event Calendars 和 Weather Window Calendars
- 一个任务可被多个天气日历影响(叠加处理)
- 重复此过程为其他任务分配
- 点击 Close
运行风险分析
完成设置后,运行分析:Risk | Run Risk Analysis | Analyze | Step。
- 逐步查看(Step)可直观观察每次迭代中天气如何影响各任务
- 蓝色竖线在甘特图上标记天气停工
- 完成分析后查看标准风险结果
高级细节:天气日历的底层机制
天气日历如何维护
定义天气日历后,PRA 自动为每个天气日历创建:
- 一个同名的资源(无成本,使用同名的日历)
- 一个同名的日历(确定性地无停工时间,非工作时间在每次模拟迭代中动态添加)
任务通过资源关联的方式受天气影响——因为任务只能在所有资源均可工作的日期执行。
模拟中的采样方式
每次迭代中:
- Weather Events 日历:PRA 决定事件是否发生、何时发生、持续多久
- Weather Windows 日历:PRA 随机采样窗口的开始和结束日期
- Prevent splitting:已勾选的任务若计划横跨天气窗口,将被设置约束日期延迟到窗口之后
实战案例:海上风电项目冬季季风建模
案例:某海上风电项目 — 冬季季风对吊装窗口的影响
项目背景
闽南外海某海上风电场,规划安装 62 台 8MW 风机,总装机容量 496MW。风机安装采用自升式安装船(JUV),关键路径上单台风机吊装需连续 3 天好天气窗口(风速 < 8m/s,浪高 < 1.5m)。项目吊装期跨越两个冬季。
问题分析
- 冬季(11 月 - 次年 3 月)东北季风盛行,平均风速 10m/s+,可作业窗口大幅缩小
- 吊装船日租金 ¥280 万,每多停工一天都是巨大损失
- 22 台风机必须赶在次年台风季(6 月)前完成吊装,否则台风风险叠加
建模过程
基于闽南海域近 15 年波浪和风速观测数据,建立 Weather Events 日历,按月度定义吊装可作业天数的三点估算:
| 月份 | 概率 | 最少停工天数 | 最可能停工天数 | 最大停工天数 |
|---|---|---|---|---|
| 11 月 | 100% | 8 | 12 | 16 |
| 12 月 | 100% | 12 | 16 | 22 |
| 1 月 | 100% | 15 | 20 | 26 |
| 2 月 | 100% | 12 | 16 | 22 |
| 3 月 | 100% | 8 | 12 | 18 |
每个月的概率设为 100%(冬季一定有季风),但停工天数在三点估算范围内随机采样。
分析结果
- 确定性计划:22 台风机吊装需 132 天(平均 6 天/台)
- P50 模拟:冬季停工共 82 天,实际吊装期延长至 214 天,必须推迟至 7 月底
- P80 模拟:冬季停工高达 110 天,吊装期延至 242 天,且与台风季重叠,额外增加台风停工概率
- P50 下,吊装船因停工造成的租金损失约 ¥2.3 亿(82 天 × ¥280 万/天)
决策与总结
项目经理根据分析结果做了两个关键决策:一是增加一台辅助安装船在冬季前抢装 8 台,将冬季吊装数量压到 14 台;二是在合同中与船东约定「非作业日减租金」条款(停工日租金降至 ¥100 万)。最终项目按期完成,吊装船租金总额比原计划仅超出 ¥4000 万,远低于最初估计的 ¥2.3 亿。
一句话启示:天气不是不可控的——不可控的是不做天气建模就去投标。
本章小结
| 要点 | 一句话 |
|---|---|
| 天气模型类型 | Weather Events(离散停工)vs Weather Windows(连续停工窗口) |
| 概率 100% | 事件一定发生,但停工天数不确定 |
| 概率 < 100% | 事件可能发生也可能不发生 |
| 天气日历 | 天气风险的基本单位,可多日历组合使用 |
| 数据导入 | 支持 Excel 批量导入/导出,可利用填充功能自动扩展 |
| 任务防拆分 | 勾选 Prevent splitting 可让任务推迟而非中断 |
| 底层机制 | 天气日历通过自动创建资源+日历实现,保证天气停工强制执行 |
英文原版内容版权归 Oracle Corporation 所有。中文翻译、案例、习题由 计划工程师 独立创作。
