智能规划算法说明
以体重为基础,以活动量做主要动态修正,以体感温度做轻量天气修正,再用近 7 天饮水习惯控制目标的增长速度。
最后更新:2026-06-20
目标分两层:先算出一个相对合理的理论推荐目标,再结合用户最近的饮水习惯平滑为今日执行目标。
设计意图:既给出科学合理的健康目标,又避免一上来目标过高让人放弃——通过贴合用户近期习惯逐步拉升。
一、总体结构
理论推荐目标 = 基础目标 + 活动量增量 + 体感温度增量
今日执行目标 = 对「理论推荐目标」按近 7 天饮水习惯做平滑 → 限幅 → 取整(100ml)
各维度作用:
| 维度 | 作用 |
|---|---|
| 体重 | 决定基础目标 |
| 活动量 | 决定当天增量 |
| 历史饮水习惯 | 控制目标可达成性 |
| 体感温度 | 天气修正 |
| 性别 | 基础系数微调 |
手动目标优先:若你在「我的」里手动设置了目标,则直接使用手动值,跳过下面的全部计算。 智能规划开关:活动量增量与体感温度增量仅在开启「智能规划」时计入;关闭时只用基础目标。
二、基础目标
体重 + 性别
已填写体重
| 性别 | 计算方式 |
|---|---|
| 女性 | 体重 × 30 ml |
| 男性 | 体重 × 35 ml |
| 未选择 | 体重 × 32 ml |
例:60kg 女性 = 1800ml;70kg 男性 = 2450ml;65kg 未选择 = 2080ml。
未填写体重
使用性别默认值:
| 性别 | 默认基础目标 |
|---|---|
| 女性 | 2000 ml |
| 男性 | 2500 ml |
| 未选择 | 2200 ml |
三、活动量增量
活动数据来自 Apple 健康(需授权),有三个来源。为避免重复计算同一段活动,取三者增量中的最大值:
活动量增量 = max(步数增量, 活动能量增量, 运动时长增量)
步数增量
| 当日步数 | 增量 |
|---|---|
| 0 – 2999 | +0 ml |
| 3000 – 7999 | +100 ml |
| 8000 – 11999 | +250 ml |
| 12000 以上 | +400 ml |
活动能量增量
| 活动能量 | 增量 |
|---|---|
| 0 – 199 kcal | +0 ml |
| 200 – 499 kcal | +150 ml |
| 500 – 799 kcal | +300 ml |
| 800 kcal 以上 | +500 ml |
运动时长增量
| 运动时长 | 增量 |
|---|---|
| 0 – 14 分钟 | +0 ml |
| 15 – 29 分钟 | +200 ml |
| 30 – 59 分钟 | +400 ml |
| 60 分钟以上 | +600 ml |
未授权健康数据或当天暂无可读数据时,活动量增量为 0。
四、体感温度增量
只使用体感温度(来自 Apple WeatherKit,需定位授权),作为轻量天气修正:
| 体感温度 | 增量 |
|---|---|
| 25℃ 以下 | +0 ml |
| 25 – 29.9℃ | +100 ml |
| 30 – 34.9℃ | +200 ml |
| 35℃ 以上 | +300 ml |
未授权定位或天气暂不可用时,体感温度增量为 0。
五、历史饮水习惯平滑
这是体验里最关键的一层。先得到「理论推荐目标」,再对比你近 7 天的平均饮水量(仅统计有记录的日子),按下表平滑为「今日执行目标」:
| 情况 | 今日执行目标 |
|---|---|
| 没有历史数据 | = 理论推荐目标 |
| 理论目标 − 近 7 天均值 ≤ 300ml | = 理论推荐目标 |
| 高出 300 – 800ml | = 近 7 天均值 + 300ml |
| 高出 800ml 以上 | = 近 7 天均值 + 400ml |
例:
| 理论推荐目标 | 近 7 天均值 | 今日执行目标 |
|---|---|---|
| 2200ml | 无历史 | 2200ml |
| 2200ml | 2000ml | 2200ml |
| 2600ml | 2000ml | 2300ml |
| 3000ml | 1800ml | 2200ml |
这样目标会逐步提高,不会一次跳太多。
六、上下限与取整
最后做安全限幅并取整,便于感知:
- 普通范围:最低 1500ml,最高 3500ml。
- 高活动 / 高温场景(活动量增量达到上档,或体感温度增量较高):上限放宽到 4000ml。
- 按 100ml 取整:如 2160 → 2200,2430 → 2400,2870 → 2900。
当目标偏高时,建议分多次补水,不要短时间大量饮水。
七、完整流程
1. 由体重 + 性别 → 基础目标
2. 由步数 / 活动能量 / 运动时长 → 活动量增量(取最大值)
3. 由体感温度 → 天气增量
4. 三者相加 → 理论推荐目标
5. 按近 7 天均值平滑 → 今日执行目标
6. 限幅(1500–3500,高活动/高温放宽至 4000)
7. 按 100ml 取整
八、示例
示例 1 | 普通女性 女性 / 60kg / 步数 5000 / 体感 24℃ / 近 7 天均值 1700ml
基础目标:60 × 30 = 1800ml
活动增量:+100ml(步数 5000)
体感温度:+0ml(<25℃)
理论推荐:1900ml
差值 200ml(≤300)→ 今日目标:1900ml
示例 2 | 男性,高温,活动较多 男性 / 70kg / 步数 10000 / 体感 32℃ / 近 7 天均值 1800ml
基础目标:70 × 35 = 2450ml
活动增量:+250ml(步数 10000)
体感温度:+200ml(30–34.9℃)
理论推荐:2900ml
差值 1100ml(>800)→ 今日目标:1800 + 400 = 2200ml
展示文案示例:「今日目标 2200ml。根据你的体重、活动量和天气,推荐约 2900ml;考虑到你最近的饮水习惯,今天先从 2200ml 开始。」
示例 3 | 运动日 未选择性别 / 75kg / 运动 45 分钟 / 步数 7000 / 体感 28℃ / 近 7 天均值 2300ml
基础目标:75 × 32 = 2400ml
活动增量:max(步数+100, 运动+400) = +400ml
体感温度:+100ml(25–29.9℃)
理论推荐:2900ml
差值 600ml(300–800)→ 今日目标:2300 + 300 = 2600ml
总结
以体重为基础,以活动量做主要动态修正,以体感温度做轻量天气修正,再用近 7 天饮水习惯控制目标的增长速度。