智能规划算法说明

以体重为基础,以活动量做主要动态修正,以体感温度做轻量天气修正,再用近 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
2200ml2000ml2200ml
2600ml2000ml2300ml
3000ml1800ml2200ml

这样目标会逐步提高,不会一次跳太多。


六、上下限与取整

最后做安全限幅并取整,便于感知:

  • 普通范围:最低 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 天饮水习惯控制目标的增长速度。