TMS BOOK · ACADEMY 讲义

数据驱动的能效自学习控制

大纲的完整展开版——讲师授课蓝本 / 学员自学材料

K7-03 数据驱动的能效自学习控制

课程代码 K7-03 · 板块 K 控制、软件与标定 / K7 智能与软件定义 时长 约 3.5 小时(6 讲 + 1 次数据闭环设计实操) 适合对象 控制 / 仿真工程师,尤其是做数据驱动算法与标定优化的岗位(选修) 前置 K3-05 PID/前馈/增益调度控制实战 PID/前馈/增益调度控制实战;K7-04 车队数据回流的车端实现:信号表定义、事件抓帧与带宽/存储预算 车队数据回流的车端实现:信号表定义、事件抓帧与带宽/存储预算(本课假定数据已回流到云端);体系外前置(需自备):基础数据分析与机器学习概念(可参考 Q3-01 热管理工程师的数据分析与 Python 脚本本讲义定位 讲师授课蓝本 / 学员自学讲义,是 K7-03 大纲的完整展开版


引言:交付物不是模型,是一条随时退得回去的路,加一份对得起基线的证据

一个数据驱动的空调能效项目做到中期评审,摆上桌的是一条很漂亮的学习曲线:验证集上的拟合误差已经压得很低,留出数据上也复现得住。评审只问了三个问题,一个都答不上来——这个改善是跟谁比的?两组车跑的工况一样吗?如果这个模型在某一刻给出一个不合理的输出,车会怎么样?会开完项目没有被否掉,但要求补三样东西:一条能把学习件整块拔掉的旁路、一套在线的退出判据、一份按工况分层的对比报告。补这三样花掉的时间比训练模型本身长得多。这不是那个团队特别不专业,是「把它当成一个算法项目来立项」这个动作在第一天就决定了的。

另一个场景在售后工位。一台车报「制冷效果差」,换了冷凝器,出厂复检正常,交车两天后症状原样回来;再换压缩机,还是回来。最后查出来的原因跟这两个新件都没关系:这台车的自适应补偿在冷凝器真正开始脏堵的那段时间里一路往上走,把偏差吃掉了——所以本该成熟的那个诊断码一次都没报过;而在故障态上学出来的那组参数已经写进了非易失存储,换了新件它还在,故障表现于是「跟着车走」。这两个场景合起来就是本课要处理的全部问题:一个学习件,既要有人管它错的时候往哪退,也要有人管它对的时候怎么证明

本课的输入是一条已经调好的热管理闭环——电池温控环、座舱出风温度环、电驱水温环都算——加上一批已经回流到云端的车队数据。输出只有三样:一个相对基线的增量(设定点偏置、增益微调或补偿项)、一套把它关在笼子里的护栏一份能过评审的证据。所以⛔ 本课不产出模型,也不比较哪一种算法拟合得更准;⛔ 本课同样不讲数据是怎么上来的——采哪几路信号、多高采样率、按什么事件触发抓帧、上行带宽与云端存储扛不扛得住,整块属 K7-04 车队数据回流的车端实现:信号表定义、事件抓帧与带宽/存储预算,本课从「干净的时序样本已经到了云端」这一刻起讲。还有一条容易混的分工要先划开:J7-05 机器学习/AI 代理模型在热管理中的应用 讲的是拿机器学习做代理模型去替代仿真,本课讲的是拿数据去改控制策略;两者的失效后果与论证路径完全不同,⛔ 不要因为都用了机器学习就套同一套做法。至于三件套里最贵的是哪一件——通常是第三件(证据),而立项时被算进预算的往往只有第一件,这是本类项目最常见的一处预算错配。

学完这门课,你要能对手上任意一个「想让它自己学一学」的场景当场答出四件事。第一件是判该不该上:六条否决判据先找否决项,任一成立即不上;而「不上」有四条明确的出路(把标定做细、规则加统计特征、增益调度、加一路传感器或做软测量),⛔ 不是把问题原样退回去。第二件是判学哪一层:可以拿去学的量按「作用在控制链的哪一层」排成九格,学到哪一层决定了一次学错的影响面有多大、护栏要求跳几档;其中有一格是明令不许学的。第三件是把管道与方法落下来:数据闭环的最小管道有十六个环节,它闭合到哪一格是有讲究的;方法谱系有八格,其中第 0、1 两格是「不学」的正经答案。第四件是把护栏与证据交出来:八层护栏逐层对着四类失效核一遍,三类上车证据各自能证什么、⛔ 不能证什么,以及变更评审要交的四样件。这四件事分别落在第 1 讲、第 1 讲、第 2~3 讲和第 4~6 讲。

全课反复敲两根钉子。钉子 1:学习件的输出是建议不是命令——它必须穿过一层由非学习件计算的安全层才到得了执行器,而那一层的允许值是按当前工况实时算出来的,⛔ 不是出厂固化的一张表。这根钉子的准入判据只有一问,本课把它称作拔插件测试(★ 这条判据是本课归纳的,⛔ 不是某项标准或某份既有规程里的既有判据):把学习件的输出恒等于基线(等价于把它整块拔掉),全工况跑一遍,功能与安全是否都不受影响?不受影响,它才配叫「增量」,「基线永远是兜底」这句话才是真的;一旦有某个工况少了它就跑不完或跑不安全,说明它已经成了功能的必要环节,那就不再是增量优化,得按功能安全与 AI 件安全论证的完整链路走,要交的证据量级跳一整档(论证方法与接口见 K2-05 预期功能安全(SOTIF/ISO 21448)与 AI 件安全论证在热管理的落法,功能安全侧见 K2-03 功能安全(ISO 26262)在热管理中的应用)。⚠ 这一问也是本课与「先把模型做好,安全和评审后面补」那种做法的分水岭:拔插件测试是写代码之前就能回答的架构问题,⛔ 不是上车之后补做的一个验证项。⚠ 另有一处最容易判错:判据是功能与安全,⛔ 不是性能——旁路之后性能变差是正常的,那正是「增量」的定义。

钉子 1 同时管住五件事,缺一件这颗钉子就没钉住。① 包络从哪来——u_safe_min / u_safe_max 由 K3-01 整车热管理控制策略总览与模式管理 的限值层按当前工况逐周期算出(随排气温度、母线电压、绝缘状态、NPSH 裕度这些量变化),⛔ 不是一张出厂固化的静态上下限表;工况把真实允许值压到表值以下的时候,静态表护栏形同虚设,限幅照过、状态照样越界。② 包络的计算链路不许被污染——那条链路上⛔ 不得出现任何学习件的输出,否则等于让模型自己给自己放宽包络,而这种放宽在正常工况下完全看不出来,恰好在最需要护栏的边缘工况暴露;⚠ 要核的是整条依赖链而不是最后一跳,间接污染(学习件改了某个设定点、该设定点又是限值层的一路输入)最容易漏。③ 限幅只是必要条件——幅值限幅⛔ 不蕴含状态约束满足:热管理是强积分对象,一串每一步都合法的动作照样能把电芯温度、过热度或压缩机排气温度积分出边界。所以完整的安全层是四件而不是一件:幅值限幅 + Δu 变化率限幅(本体前指 K3-05 PID/前馈/增益调度控制实战)+ 基于状态预测的独立监督/仲裁通道(越界即夺权、切回基线并平滑过渡,架构见 K5-02 热管理故障处理与降级策略)+ 学习使能与退出条件清单。④ 退回必须在线——学习结果一旦外推出训练分布,就等于进入了未知的不安全场景,触发退回的判据必须是在线的(输入落在训练分布外、置信度低于阈值、残差超限),⛔ 不能只靠事后的模型退化监控:等事后监控发现时,错的动作已经作用过成千上万次。⑤ 退回路径要一直通到存储层——上电有效性校验失败、售后换件、OTA 改了模型结构或特征定义,学习值一律清零、退回基线标定;这是「基线永远是兜底」在存储侧的落地形式(载体设计与掉电一致性见 K4-06 控制器非易失存储设计:学习值、诊断数据与累计量的持久化,刷写事务本身见 K7-02 软件定义热管理与 OTA 迭代)。

钉子 2:自学习的验收量是「相对基线的、同工况分布下的、超得过噪声的增量」,⛔ 不是模型精度。ΔCOP = COP_learned − COP_baseline 这个式子看起来平凡,值钱的全在三个限定词上。任何一个被报出来的收益数字,本课要求当场问三件事。① 分母是谁?——要与基线标定比,⛔ 不与上一版学习件比;而且基线版本在整个对比窗口内⛔ 不许动,动过就没有分母了。② 两组的工况分布可比吗?——不分层的时候结论可以整个翻过来:同一批数据,不分层看甲组更好,逐层看却是每一层都乙组更好。③ 这个差超得过噪声吗?——效应量要超过同分布下基线自身的波动带;本课的做法是加一组零效应对照(★ 本课归纳:把对照组随机劈成两半算一次 ΔCOP,那个散布就是这套测量口径自己的噪声带),样本量与统计显著性的判据本体前指 K7-02 软件定义热管理与 OTA 迭代。三问过不了,那个数字就只是一次抽样的运气。⚠ 一条口径先在这里写死:本课的 COP 一律取系统口径(分母含风机与水泵的电功率),全课每一处 COP 与 ΔCOP 出现时都按这一套算——理由在第 2 讲说透,一句话是:自学习最容易通过「把风机功率省掉一点」去抬高只算压缩机功率的那套 COP,口径选错就等于奖励了一个错误的行为。⚠ 还有一件事本课明确不做:⛔ 不给「自学习相对人工标定能省多少」的任何数值或量级。产业侧流传的那类说法既没有基线版本号也没有分层口径,本课给的是上面那三问与零效应对照这两件方法,收益值须由本项目的对比实测确定。

钉子 2 有两条直接推论。第一条是本课对「训练误差」的态度:离线拟合误差再小也不是收益——它连分母都没有,更谈不上工况分布,这正是开头那个中期评审答不上话的根。第二条是:影子模式与 A/B 不是同一件事的两个阶段,是证明两类不同主张的两类证据——影子模式证不出收益(它没接管,闭环从头到尾没有被改变过),A/B 证不出罕见危险场景下的安全性(暴露量根本不够)。

两根钉子怎么合起来:钉子 1 说的是「错了以后兜得住」,钉子 2 说的是「对了要证明得出来」。⚠ 两者⛔ 不可互相推导——护栏做得再全也不构成收益的证据,收益再显著也不减免任何一层护栏。把「我们做了限幅」写进收益论证、或者把「上线后省了不少电」写进安全论证,是评审上最常见的一种混线,而且两侧都听起来很有道理。全课每一讲的收口都回到这两句。

★ 还有一句话是本课最容易被读反的,先在这里点破:「自学习让系统自己适应了老化和个体差异——所以只要性能指标没掉,就说明系统是健康的、学习是有效的。」这句话的前半截是对的:自适应补偿确实会跟着部件劣化把增益、设定点或补偿项一路推上去,被控量(水温、过热度、出风温度、能耗)因此长期落在目标带里。反的是后半截的因果方向性能指标不掉,恰恰是因为补偿量在涨;「不掉」只说明「还没补到头」,它把劣化的证据吃掉了,⛔ 不是健康的证明。等到补偿量顶到限幅、性能真的掉下来那一刻,劣化已经走完了它的大半程,而这中间本该成熟的诊断码一次都没报过——开头那台换了两个件还回来的车,走的就是这条路。

说不出「读者会做错的那个具体动作」就不算点破,所以把它写清楚。那个动作是:在装了自适应补偿的通道上,只把被控量列为受监视量,⛔ 不把补偿量本身列进去;进而在现场发现「这个诊断码从来不报」的时候,去调低诊断阈值、提高诊断灵敏度。这一步的方向就是错的:真因在于自适应先把偏差吃掉了,残差根本没长到阈值那里去,调阈值只换来一片误报,而漏报照旧。正确动作是把补偿量本身列为受监视量,并对它设趋势阈值——补偿量单调走高即是劣化证据(趋势型健康度的做法与工况归一化见 K5-05 在役健康度与渐变衰减辨识:从车端信号到服务决策,阈值整定与复验的方法学见 K5-07 诊断与保护阈值的整定、验证与复验;⛔ 门限须由本项目的取样统计与在役数据确定,禁止抄上一代平台)。典型形态有两个:脏堵被风扇转速补偿掩盖、慢漏被过热度目标补偿掩盖

同一个方向的错在本课另外三处复发,形态不同、方向一样,一并先点破。① 反方向的污染(自适应被诊断态带坏)。上面讲的是自适应掩盖诊断;反过来同样成立而且更隐蔽——诊断已经置位、或降级已经生效的工况,必须写进自适应的禁止使能条件。不写的后果就是在故障态上学出一组错参数、还固化进非易失存储;换件修好之后错参数仍在,售后按新件排查一无所获。⇒ 自适应与诊断必须联合设计而且是双向的,只做一个方向等于没做。② 兜底被当成既得(「有基线兜着,护栏可以简单点」)。这句听起来像钉子 1 的推论,其实方向反了:基线能兜底的前提是「退得回去」,而「退得回去」是一条待证明的主张,⛔ 不是既得的事实。三个要件缺一不可——退回判据本身要在线、且不依赖那一路已经失效的信号;退回过程要平滑(硬切会产生一次扰动,可能自己就把状态推出边界);退回之后学习值不能把系统再拉回错的地方(存储侧的复位路径)。⇒ 「我们有基线」⛔ 不是安全论证,「我们验证过退回路径在这些工况下都通」才是。③ 好指标被当成有效(「上线后能耗改善了,说明它学对了」)。与主句同型:看到一个好的输出,就反推出一个关于内部状态的结论。改善也可能来自两组的工况分布不同,也可能来自基线本身在那段时间被别的改动动过(分母变了),还可能来自丢帧与缺失不是随机的——最长、最极端的那些行程恰好上传失败,样本被剔成了偏乐观的那一半。⇒ 报收益必须同时报分层结果基线版本号

⚠ 这条反钉子自己也有边界,⛔ 不要把它读成另一个方向的反:本条不是说「自适应有害、不该用」。自适应补偿是本课明确推荐的一档方法(第 3 讲),它对个体差异与缓变老化的补偿是真实的收益。本条只说一件事——补偿量必须可见。把补偿量藏起来的自适应,收益归它、代价归诊断。

全课六讲就按这条主干排。第 1 讲把射程与两根钉子立起来:传统标定的三个局限要逐条拆开(覆盖有限 / 个体差异 / 老化漂移,三者的补法是三条不同的路),数据驱动能补的是「分布内的插值与个体化」、⛔ 补不了训练分布外的外推、也⛔ 补不了物理能力不足;然后交出拔插件测试、六条否决判据与四条替代路径、可学量的九格全集(含明令不许学的那一格),最后把符号约定与七条邻课边界一次说清——其中 J 在本课取收益型(记作 J_reward,越大越好),与体系里其余各处求最小的代价型 J_cost 方向相反,照抄符号会直接把梯度下降写成梯度上升。第 2 讲讲数据管道与特征工程:闭环的十六个环节以及它闭合到「入湖与口径对齐」而不是「采集」这一点,特征的两条判据(因果方向优先于相关性大小,以及推理时刻的可得性),驾驶风格特征族的可落代码构造,标签四选一各自奖励什么行为,数据质量三类缺陷里「补不得、只能剔」的分界与每种处置引入的偏差方向,以及训练/验证/测试的划分维度才是关键这件事。本讲的交付物是一张能被评审的特征表。第 3 讲做方法选型:谱系按「学习发生在哪里 × 更新的时间尺度」排成八格,第 0 格「不学」和第 1 格「经典标定表」是正经答案而不是妥协;自适应有三件必配(使能、冻结、回退条件),梯度式增益更新除了符号陷阱还有一个更根本的前提——以 COP 或舒适偏差这类量测指标为目标时,∇J_reward 对增益并没有解析梯度;多目标权重 w₁/w₂/w₃ 不是超参数而是产品决策;最后落到「离线训练 + 车端在线推理」与「车端在线学习」的三轴权衡,其中可验证性是决定性的那一轴。第 4 讲把钉子 1 落成八层护栏,并逐层对着四类失效核一遍:限幅是必要而非充分、允许值是实时算出来的且计算链路不许被污染、在线的分布外判据与检出延迟那笔要按最坏值算的账、误报率必须与降级代价一起算,然后是反钉子的正面表述与双向互锁,最后补上前五层一律放行的第三类失效——语义判错,以及本课归纳的第 6 层代价层第 5 讲把钉子 2 落成三类证据:可解释性的工程定义是「标定工程师能看懂、能定位、能手动干预」而不是「能解释模型内部」,影子模式与 A/B 各能证什么、⛔ 不能证什么,ΔCOP 的三个陷阱与零效应对照,以及变更评审要交的四样件(运行设计域界定、数据集充分性与覆盖论证、性能指标验收准则、运行期监控作为安全措施的有效性)。第 6 讲证明这两根钉子在整个生命周期里都还成立:个体化与车队统一不是二选一而是三档、且维护成本是阶跃;漂移监控与再训练触发是闭环的最后一环,缺了它整条管道就是一条直线;再训练用的数据集必须带版本标识、且能追回信号语义版本,否则看到的「漂移」可能只是采集口径变了;最后是学习值怎么在车上活下去——三个写入触发点、上电校验失败与售后换件的复位路径、OTA 升级与版本回滚的三档判定,以及最容易被整格漏掉的那一件:二手车与所有权变更(★ 本课归纳:个体使用模式学出来的先验在换主之后是错的先验,它跟车走还是跟人走是一个必须显式决定的产品问题,⛔ 不能默认继承)。


第 1 讲 从标定到自学习:交付的是「增量 + 护栏 + 证据」,⛔ 不是一个模型

这一讲不训练任何模型,也不写一行学习算法。它做的是动手之前的六件事:把本课的输入、输出与射程交代清楚把工程师嘴里那句「标定不够用」拆成三条各有各补法的局限把「数据驱动能补什么、⛔ 补不了什么」的边界画死把「在基线之上做增量」从一句措辞还原成三条可核查的架构约束,并交出一条写代码之前就能回答的准入判据把「值不值得上」写成一条否决链,并给出「不上」的四条出路;最后把可学对象的全集、明令不许学的那一格、全课的符号约定与七条邻课边界一次立完

这些看起来像热身,其实后面五讲吃的全是这一讲钉下来的口径。可学对象的分层一旦分错,第 4 讲的护栏强度就会按算法复杂度去配而不是按影响面去配——复杂模型学一个出风温度偏置被层层设防,简单最小二乘学一个模式切换阈值反而裸奔;「增量」这两个字一旦停留在措辞层面而没有落成可旁路、旁路后功能完整、旁路是默认态这三条,第 4 讲所有护栏都建在一个没有地基的假设上;符号一旦不约定,第 3 讲那条梯度更新式会被读者照抄进一个代价型的目标函数里,正号直接变成梯度上升、当场发散。所以顺序是先立口径,再谈方法。

1.1 本课不产出模型,产出的是「增量 + 护栏 + 证据」三件套

是什么。本课的输入是两样东西:一条已经调好的热管理闭环(电池温控环、座舱出风温度环、电驱水温环都算——它此刻工作正常、参数已经整定过),加上一批已经回流到云端的车队数据。本课的输出是三样东西,缺一样这门课就没有交付:

  • 一个相对基线的增量——形态是设定点偏置、增益微调或补偿项,⛔ 不是一套新的控制器结构;
  • 一套把它关在笼子里的护栏——运行期怎么拦、拦在哪一环,第 4 讲落成八层;
  • 一份能过评审的证据——收益是真的、而且退得回去,第 5 讲落成三类证据。

⇒ 一句话:本课不产出模型,产出的是「增量 + 护栏 + 证据」三件套。模型只是第一件里面的一个零件,⛔ 不是交付物本身。

为什么这个定位要写在全课第一句。因为把这门课当成「算法课」是第一步就走岔,而且岔得很隐蔽——听起来完全合理。真相是:热管理控制关系安全,一个学得再准的模型,若没有退回路径与证据链,它上不了车;反过来,一个只带来适度收益、但护栏与证据齐全的增量,是可以上车的。这两句话决定了本课后面所有内容的排序:护栏与证据不是「模型做好之后再补的验收项」,它们是会反过来否决方法选型的约束(第 3 讲会看到,正是可验证性把某一档方法整个排除掉)。

工程量级。三件套里最贵的往往是第三件(证据)——真实车队、足够长的时间跨度、分层的数据分析、一轮变更评审;而立项时被算进预算的通常只有第一件(算法人力与训练资源)。这是本类项目最常见的一处预算错配,它的表现不是超支,是项目做到一半发现「东西学出来了,但证明不了它更好,也证明不了它退得回去」,于是停在验证前不上不下。⛔ 具体的成本比例不给数——它随车队规模、数据回流质量与评审要求变化,须由本项目自己算。

易错点。

  1. 以为「先把模型做好,安全和评审后面补」。补不回来。护栏与证据的要求会反过来否决方法选型(第 3 讲)、也会反过来否决立项本身(1.6 的第 5 问);等模型做完再发现论证不了,前面的投入是全额沉没。
  2. 把本课与 J7-05 机器学习/AI 代理模型在热管理中的应用 混为一谈。J7-05 机器学习/AI 代理模型在热管理中的应用 讲的是拿机器学习做代理模型(替代仿真、加速寻优),本课讲的是拿数据改控制策略。两者的失效后果完全不同——代理模型算错了,错的是一张分析结论,人还在回路里;控制策略学错了,错的是一个作用到执行器上的动作,人不在回路里。⇒ 两者的论证路径也完全不同,⛔ 不得互相推导。

1.2 「标定不够用」必须拆成三条,因为三者的补法是三条不同的路

是什么。传统标定的局限有三条,必须逐条拆开说:

  • ① 工况覆盖有限——台架与试车能跑的工况点是有限格点,格点之间靠插值、格点之外靠外推。能跑多少点受台时与整车样车数量约束,这是硬约束,不是标定工程师不努力。
  • ② 个体差异——同一批车的部件公差、装配差异、用户使用方式各不相同,而标定表只有一份。这一份表要同时服务分布两端的车,只能取一个折中。
  • ③ 老化漂移——换热器脏堵、冷媒慢漏、风扇积尘、传感器自身漂移,会让出厂时对的标定逐年偏离。它与前两条的区别是:前两条在出厂那一刻就存在,第三条是随时间长出来的。

为什么非拆开不可。因为三者的补法是三条不同的路,混成一句「标定不够用」会直接导致选错方法档位

局限 它的补法 落在本课哪一讲
① 工况覆盖有限 更多数据做插值——离线监督学习,把格点之间与常用区填密 第 3 讲的离线档
② 个体差异 个体化偏置——在线参数自适应,或按群体分模型 第 3 讲的在线自适应档、第 6 讲的个体化取舍
③ 老化漂移 缓变补偿,而且它必须与诊断联合设计 第 4 讲的自适应-诊断互锁

三行的方法不一样、护栏不一样、验收方式也不一样。拿离线插值去补个体差异,学出来的是全车队的平均值,个体那一层的收益一点拿不到;拿在线自适应去补覆盖问题,车端根本没有那些工况的样本可学。

工程量级。三者的时间尺度差得很远,这是选档位时最有用的一条信号:覆盖问题是版本级的(改一版标定或换一版模型,典型落在月—季量级);个体差异是车级的(一辆车学完之后基本稳定,此后只跟着使用方式缓慢变);老化是年级的缓变。⚠ 这三档标「典型」,它们是方法与对象固有的量级带而不是某个平台的实测值,随平台与发布流程而变;⛔ 端点不得当成可承诺值(⛔ 不许把「月—季」读成「我们一个月就能迭代一版」)。

易错点。

  1. 把老化漂移当成「个体差异的一种」来处理,于是只做补偿、不设趋势监视。这正是第 4 讲那条反钉子发生的地方:补偿量把劣化的证据吃掉了,被控量看起来一直正常,而本该成熟的故障码一次都没报过。⇒ 凡是用来补第 ③ 条的通道,补偿量本身必须是可见的,做法与阈值方法学见第 4 讲与 K5-05 在役健康度与渐变衰减辨识:从车端信号到服务决策
  2. 把「标定表只有一份」读成「标定工程师做得不够细」。不是。表只有一份是结构性的——它是给整个车型批量出厂用的,个体差异这一层在出厂前根本没有信息可用,只能等车跑起来。

1.3 数据驱动补的是「分布内的插值与个体化」,⛔ 补不了外推,也⛔ 补不了物理能力不足

是什么。车队规模的数据带来两样东西,就这两样:一是格点之间与常用区的高密度覆盖(样本点数远超台架能跑的格点数),二是持续性(数据跟着个体与时间一直来,所以能跟上个体差异与缓变老化)。

为什么这两样都在「分布内」。因为数据只能告诉你它见过的工况。见不到的地方,模型给出的是外推,而外推没有任何物理约束在兜底——一个纯数据拟合出来的关系,走出样本范围之后可以往任何方向发散,而它给出的数值看起来仍然是一个正常的数。这正是「用实验室或固定工况数据训练、上车遇到严寒与极端拥堵就失效」这一类事故的根:不是模型不好,是被问到了它没有依据回答的地方。

本课在这里归纳补一条(⛔ 不是既有结论):车队数据同样有空洞,而且空洞的位置往往正是极端工况——严寒地区的车少、连续大负荷的行程少、极端拥堵的样本少。⇒ ⛔ 不要把「有车队数据」当成「全覆盖」的同义词。台架格点稀但分布是设计出来的(会刻意去打边界点),车队样本密但分布是用户用出来的(边界点天然稀少)。两者的空洞位置不同,但都有空洞。

工程量级。空洞的位置随地域与季节而变,⛔ 不给任何通用比例——必须在本项目自己的数据上,按运行设计域(ODD)的各个维度分箱统计,逐箱数样本。覆盖矩阵长什么样、怎么论证充分,方法归 K2-05 预期功能安全(SOTIF/ISO 21448)与 AI 件安全论证在热管理的落法,本课只负责把它列成一件必做的事。

易错点。

  1. 把「训练集里没有」误当成「不会发生」。数据集里的空白只说明没采到,⛔ 不说明它不存在——按同一条纪律,空白格必须显式标出来并给出处置(不使能、或退回基线),⛔ 不能默认它是安全的:默认状态不会被测试覆盖。
  2. 拿数据去补一个物理能力不足的问题。换热器就是小了、泵扬程就是不够、压缩机排量就是不匹配——学习件学不出不存在的能力。这是选型问题,该走对应的部件与系统设计课;它既不走本课,也不属于「预期功能不足」那一类问题(反滥用的边界见 K2-05 预期功能安全(SOTIF/ISO 21448)与 AI 件安全论证在热管理的落法)。判断很简单:把控制策略换成理论最优的那一条,需求满足了吗?没满足 ⇒ 是能力问题,⛔ 不是控制问题。
图1 标定格点与车队样本覆盖的对照。二维工况平面,横轴为环境温度、纵轴为座舱热负荷代理量,两轴只给物理量名与方向、⛔ 不给刻度值。图上三样东西各带独立文字标签:① 标定格点,画成稀疏的十字标记网格;② 车队样本密度,画成合成散点云,颜色深浅表示样本密度;③ 两块用虚线圈出并加文字标注的区域——「标定外推区」,位于格点之外但车队常去;「双方共同空洞」,格点没有、车队也几乎没有,标注为极端工况。右下角一个小方框写明本图为合成分布示意。该读出的判断:数据驱动补的是格点之间与格点之外的常用区,也就是标定外推区那一块;它⛔ 补不了双方共同空洞,而空洞往往正是极端工况,这就是上车遇到严寒与极端拥堵时模型外推失效的图形化。本图为合成分布示意,不对应任何车型或车队,⛔ 不得据图读取任何温度、负荷或密度数值。
图1 标定格点、车队样本密度与两块空白区。该从图上读出的判断有三条:① 数据驱动真正补上的是标定外推区——格点之外但车队常去的那一块;② 双方共同空洞谁都补不了,而它往往正是极端工况,这就是「上车遇到严寒与极端拥堵、模型外推失效」的图形化;③ 台架格点稀但是设计出来的、车队样本密但是用出来的,两者的空洞位置不同,⛔ 不能用一个去证明另一个已经覆盖。读者据此可以对自己项目的覆盖矩阵逐块自查:哪一块靠标定、哪一块靠数据、哪一块两者都没有。本图为合成分布示意,不对应任何车型或车队,⛔ 不得据图读取任何温度、负荷或密度数值。

1.4 「在基线之上做增量」是一条架构约束,⛔ 不是一句措辞:三条硬要求

是什么。「自学习不是替代基线标定,是在基线之上做增量优化,基线永远是兜底」——这句话每个人都同意,但它只有落成下面三条才有意义,否则就是一句谁也不反对、谁也没法核查的措辞:

  • ① 可旁路——软件上必须存在一条把学习件输出置零(或置为基线值)的路径,而且这条路径不经过学习件自己的任何代码。旁路是由外部把支路断开,⛔ 不是请学习件自己安静下来。
  • ② 旁路后功能完整——旁路态下所有功能、所有工况都必须能跑完。性能可以差,⛔ 不许缺功能、⛔ 不许不安全。
  • ③ 旁路是默认态——上电默认不使能,学习件必须主动通过使能条件才接进链路;⛔ 不是默认接进来、出事再断开。

为什么是这三条。因为它们决定了「基线永远是兜底」是不是一句真话。第 ③ 条尤其容易被当成实现细节跳过,而它是三条里最要紧的一条:在默认使能的架构里,任何一次使能条件判断失效,都会让学习件静默地留在链路上——没有报警、没有现象,只是本该被拦下的输出照样过去了;在默认旁路的架构里,同一个失效只会让收益消失,被控对象仍然由基线控制。⇒ 同一个失效,两种架构下的后果差着一个性质:一个是安全事件,一个是没赚到钱。

工程量级。这三条几乎不增加运行开销——一条求和支路、一个使能位、一个开关。但它们必须在架构阶段写进接口定义:事后再加会牵动整条控制链(求和点在哪、积分项归谁、限幅在哪一级),而那时候通常已经没有人愿意为「一个不改变功能的重构」付代价了。

易错点。

  1. 把「有一个标定开关能关掉学习功能」当成已经满足了可旁路。⚠ 要看的是关掉之后控制量是不是真的等于基线。两种常见的假旁路:学习件的输出已经参与了积分项(关掉开关,积分器里那部分历史还在,控制量回不到基线);学习件直接改写了基线表本身(关掉开关,改过的表还在,这已经不是增量而是替代)。判据很直接——旁路之后,把同一段输入喂进去,控制量应当与纯基线版本逐点相同
  2. 把「性能会变差」当成旁路不合格。性能变差正是增量的定义,旁路之后收益消失是应该的。第 ② 条判的是功能与安全,⛔ 不是性能——这一条在下一节会被写成正式判据。
图3 基线加增量的控制链路与旁路架构。一张左到右的信号流图。主干依次为:传感与状态输入,进入蓝色实框的基线标定与基线控制器,输出到一个求和点,求和点之后进入安全层,安全层画成四个串联小框——幅值限幅、Δu 变化率限幅、状态预测监督与仲裁、使能与退出条件,最后到执行器。支路:同一组输入进入橙色虚框的学习件,框内标注「增量:偏置/增益微调/补偿项」,学习件输出接到那个求和点;支路上画一个明显的旁路开关,标注「默认位置=旁路」。另有一条独立的灰色输入链:工况量进入限值层,限值层标注去向 K3-01,其输出接到安全层的幅值限幅框;这条灰链与橙色学习件框之间画一条带禁止符号的短线,标注「限值层的计算链路上⛔ 不接入任何学习件输出」。图下方一条横带写着本课归纳的准入判据:拔插件测试——把橙框输出恒等于基线,全工况跑一遍,功能与安全都不受影响。本图为定性架构示意,不含任何数值,⛔ 不得据图读取任何增益、限值或时间。
图3 学习件挂在链路的什么位置,以及旁路开关与限值层那条灰链。该从图上读出的判断有三条:① 学习件在并联的增量支路上,⛔ 不在主干上——主干任何时刻都是完整的基线控制链;② 安全层是四件不是一件(幅值限幅、Δu 变化率限幅、状态预测监督与仲裁、使能与退出条件),四个小框的次序表示信号流经顺序,⛔ 不表示优先级或重要性排序;③ 限值层那条灰链不与橙框相连——允许值的计算链路上不接入任何学习件输出。图下方那条横带是本课归纳的准入判据。读者据此可以对照自己的架构图逐项核:旁路开关在不在、默认位置对不对、限值层的输入有没有被污染。本图为定性架构示意,不含任何数值,⛔ 不得据图读取任何增益、限值或时间。

1.5 拔插件测试(★ 本课归纳):输出恒等于基线跑完全工况,功能与安全都不受影响,才配叫「增量」

是什么。上一节那三条硬要求需要一个能一次问完的判据。本课把它归纳成一问,称作拔插件测试(★ 这条判据是本课归纳的,⛔ 不是既有结论、也⛔ 不是任何标准的条款):

令 u_learned ≡ u_baseline(等价于把学习件整块拔掉),跑一遍完整的工况矩阵——含边缘工况与故障注入——功能清单与安全目标是否全部仍然满足?

它既是一次写代码之前就能做的思想实验(拿着架构图和功能清单就能过一遍),也是一个可以在硬件在环台架上做的实测项(一个标定开关加一轮工况矩阵回归)。

为什么它值得单列成一条判据。因为它一句话把项目分成了性质不同的两类,而这两类的证据量级差一整档:

⚠ 这一问也是本课与「先把模型做好再说安全」那种做法的分水岭:拔插件测试是一个架构问题,在写代码之前就能回答,⛔ 不是上车之后补做的验证项。等到模型已经训练完、控制链已经改完才发现它不通过,改的就不是一个开关,是整条架构。

工程量级。这项测试本身很便宜——一个标定开关加一轮已有的工况矩阵回归;而它防住的是一次量级错配的立项:本来该按完整论证链排期与排预算的项目,被当成一次增量优化立了项,等到评审阶段才发现证据缺一整档。便宜的闸挡住贵的错,这是它值得写成准入项的全部理由。

易错点。

  1. 把「性能变差」误判成「不通过」。性能可以变差,那正是增量的定义——判据是功能与安全,⛔ 不是性能。把性能也算进去,等于要求「拔掉它也一样好」,那这个项目本来就没必要做。
  2. 只在常规工况上跑一遍就宣布通过。这一问的价值全在边缘工况与故障注入那一段:常规工况下基线当然跑得完,问题恰恰出在「某个极端工况的功能是靠学习件顶上的」——而那正是最不容易被想起来的工况。
  3. 把它当成一次性的准入。架构改过、功能加过、学习件接的位置动过,这一问就要重问一遍;它同时是第 5 讲变更评审要复看的一项。

1.6 「值不值得上」是一条否决链,⛔ 不是一张打分表:六问任一为否即不上

是什么。判断一个热管理控制场景该不该上数据驱动方法,本课给六问。前三问是本课题既有的判据,后三问标 ★ 的是本课归纳补入的:

# 问什么 具体在问 是否硬否决
1 数据够不够 要用的工况分箱里有没有样本(覆盖)、样本量够不够、标签拿不拿得到
2 收益可不可量化且够大 ΔCOP(系统口径,分母含风机与泵的电功率)能不能在同工况分布下测出来,且超得过基线自身的波动带
3 失效代价可不可控 有没有可退的基线、退回是不是无感、最坏一次错动作的后果落在哪一档
4 有没有更便宜的替代 规则加统计特征、增益调度、把标定做细、加一路传感器——其中哪一条能解决
5 可验证性 学出来的东西能不能在评审上被论证:黑箱到什么程度、标定工程师能不能看懂、能不能手动干预
6 全生命周期成本 数据回流的带宽与云端存储年成本、再训练与再评审的人力、售后可解释性的成本

为什么写成否决判据而不是打分表。因为打分会让六项互相补偿——第 5 问打 2 分,靠第 1 问打 9 分补回来,总分照样过线。而这六项里有三项是硬否决:数据里根本没有那个工况的样本、收益测不出来、评审上论证不了。这三项任何一项成立,剩下五项加起来也救不回来——它们不是「减分项」,是「此路不通」。⇒ 六问之间是「与」关系,任一为否即不上。

工程量级。六条的判断成本极不对称,这一点直接决定了做题顺序:前三条要看数据(拉数、分箱、算基线波动带,落在天—周量级的分析工作);第 4~6 条是纸面判断(找替代方案、问评审要求、算一遍全周期账,落在小时量级)。⇒ 先做第 4~6 条。它们能用极低的成本砍掉大部分不该上的立项,而颠倒过来做的项目,往往是花了两周把数据分析完,才在评审门口被第 5 问挡回来。

易错点。

  1. 只问「能不能学出来」,不问「学出来能不能证明」。第 5 问常常是真正的否决项,而它在立项阶段最容易被跳过——因为它不是技术问题,问它的人当时也拿不到答案。⇒ 立项评审里必须有人代表评审侧发问。
  2. 把全周期成本算成算法人力。数据回流的带宽与云端存储年成本(算式与量级归 K7-04 车队数据回流的车端实现:信号表定义、事件抓帧与带宽/存储预算)、以及每一轮再训练之后的再评审人力,常常才是成本的主导项;而收益侧被拍脑袋。收益侧怎么估、投资回报怎么算,方法归 N6-02 整车热管理数字孪生与在线优化,本课只声明它是六问中的一项,⛔ 不重推算式。
图2 「该不该上数据驱动」的六问否决链。自上而下的决策流程图,每一问一个菱形判定框,六问依次为:数据够不够;收益可不可量化且够大;失效代价可不可控;★ 有没有更便宜的替代;★ 可验证性;★ 全生命周期成本。后三问的框加 ★ 标记,图例注明这三问为本课归纳补入。每一问的「否」分支横向引出到右侧的四条替代路径方框:把标定做细;规则加统计特征;增益调度;加一路传感器或做软测量。每条路径框内写一句适用信号。六问全部为「是」之后汇入底部方框,写着:判定值得上,转入可学对象全集定位学哪一层。左侧一条灰色竖带标注:第 4 到第 6 问是纸面判断,小时量级;第 1 到第 3 问要看数据,天到周量级;所以先做第 4 到第 6 问。本图为定性决策结构示意,不含任何数值与阈值,⛔ 不得据图读取任何判据取值。
图2 六问否决链,以及每一个「否」通向的出路。该从图上读出的判断有三条:① 这是一条否决链而不是打分表——六问之间是「与」关系,任一为否即不上,图上⛔ 不画任何权重或分数;② 每一个「否」都横向引到一条替代路径上,所以「不上」是一个有出路的结论而不是把问题原样退回去;③ 左侧灰带那条排序建议——先做便宜的第 4~6 问,它们是纸面判断,而第 1~3 问要拉数据。标 ★ 的三问是本课归纳补入的。本图判的是「该不该上数据驱动」这一个决定,⛔ 不判用哪种算法、⛔ 不判护栏怎么设。本图为定性决策结构示意,不含任何数值与阈值,⛔ 不得据图读取任何判据取值。

1.7 「不上」必须是一个有出路的结论:四条替代路径与各自的适用信号

是什么。六问里任何一问为否,都应该落到一条具体的替代路径上,而不是把问题原样退回去。四条路径与各自的适用信号:

  • ① 问题是「格点太稀」⇒ 把标定做细。成本低、完全可解释、不引入任何新的运行期护栏。适用信号:现象集中出现在某几个工况区间,而那些区间恰好是标定格点稀疏的地方。
  • ② 问题是「要按使用模式分档」,而且时间尺度在秒级 ⇒ 规则加统计特征。秒级的驾驶风格与使用模式分类,用规则或统计特征通常就够(准确率与覆盖率之间怎么权衡,口径归 N6-01 预测性热管理的车云数据生态与产业路径)。适用信号:要的是一个「现在属于哪一档」的判断,而不是一个连续量的精细拟合。
  • ③ 问题是「工况一变增益就不合适」⇒ 增益调度。这是成熟工程做法(本体前指 K3-05 PID/前馈/增益调度控制实战),⛔ 不是妥协。适用信号:控制器在某些工况下发振或过缓,而在另一些工况下正常——这说明缺的是随工况调参的机制,不是缺数据。
  • ④ 问题是「关键量根本测不到」⇒ 加一路传感器,或做软测量。软测量的观测器整定、置信度与退出条件前指 K3-10 热管理在线状态与负荷估计:观测器整定、软测量置信度与退出条件。⛔ 别指望模型从看不见的东西里把它学出来——如果那个量既不可测、也与任何可测量没有稳定关系,数据里就没有它的信息。

为什么要把这四条紧挨着「值不值得上」写。因为「不上」如果没有出路,它就等于把问题原样退回去——而提出问题的人还在承受那个问题。评审会因此倾向于批准一个不该做的项目:不批就没人管了。⇒ 把四条出路摆在否决链的正下方,「不上」才成为一个可以被接受的结论。

工程量级。四条路径的落地周期与验证成本都显著低于一整套数据闭环,而且它们都不引入新的运行期护栏——这一点比成本更值钱:不引入护栏就不引入新的失效模式,也不增加运行期监控的负担,评审侧的增量接近零。

易错点。

  1. 把「用规则就够」读成「规则更低级」。判据是任务的时间尺度与可解释性要求,⛔ 不是技术先进性。一个秒级的档位判断,用三条规则做出来可以当场讲清楚、当场手动干预;换成学习件之后,收益不见得多,却新增了一整套护栏、监控与再训练的负担。
  2. 把第 ④ 条当成「加传感器太贵所以只能上算法」。要算的是全周期账(六问的第 6 问):一路传感器是一次性的物料与验证成本,一条数据闭环是持续的带宽、存储、再训练与再评审成本。两者要放在同一张表里比,⛔ 不能拿一次性成本和年度成本直接对比。

1.8 「可以拿去学的量」按作用在控制链的哪一层排成九格——层越靠后,护栏跳一档

是什么。决定了「上」之后,第二个问题是学什么。本课把可学对象按一条轴排成九格,★ 这条分类轴是本课归纳的:学出来的东西作用在控制链的哪一层,⛔ 不是「用哪种算法学」。逐格标射程内/射程外:

# 可学的量 射程 护栏与去向
1 设定点/目标值偏置(蒸发温度设定、电池目标温度、出风温度偏置) 射程内 风险最低——偏置量本身就是天然可限幅的增量;本课案例正是这一格
2 控制器增益与前馈系数(比例积分增益、前馈标定系数、增益调度表的插值点) 射程内 控制结构与 Δu 限幅的本体前指 K3-05 PID/前馈/增益调度控制实战
3 模式切换阈值与迟滞(何时起压缩机、何时切模式) 射程内 ★ 风险高于前两格:它改的是状态机的边界而不是边界内的一个量,学错一次造成模式抖动;要额外防抖与防振荡,模式管理本体前指 K3-01 整车热管理控制策略总览与模式管理
4 输入语义的分类输出(驾驶风格分类、使用模式分类、场景标志位) 射程内 本课只讲它误判时的护栏(代价上限与回退,第 4 讲第 6 层);分类准确率与覆盖率的权衡口径前指 N6-01 预测性热管理的车云数据生态与产业路径,行程级预测输入前指 K7-01 预测性热管理(导航/云端/驾驶意图协同)
5 模型参数在线辨识与老化补偿(传热系数与面积乘积的衰减补偿、充注量偏移补偿) 射程内 ★ 反钉子的落点,必须加趋势监视;⚠ 与状态估计划清界限——本格改的是模型参数,状态估计重构的是不可测状态,观测器整定与退出条件前指 K3-10 热管理在线状态与负荷估计:观测器整定、软测量置信度与退出条件
6 多目标分配权重(奖励函数里的 w₁/w₂/w₃) 射程内,但只作为奖励函数设计讲 整车能量最优协调控制的权重本体前指 K3-07 能量最优的整车协调控制
7 代理模型/降阶模型的参数(用机器学习拟合的换热器特性、压缩机特性图) 射程外 建模与可信域算法归 J7-05 机器学习/AI 代理模型在热管理中的应用;本课只在它作为在线推理件出现在控制链上时,接管它的护栏与退回
8 诊断与健康度判据的阈值(残差带、趋势阈值) 射程外 阈值整定与复验归 K5-07 诊断与保护阈值的整定、验证与复验,趋势型健康度归 K5-05 在役健康度与渐变衰减辨识:从车端信号到服务决策;本课只交出一个接口——「自适应补偿量必须进受监视量」
9 安全限值本身(限值层算出的允许值 u_safe_min/u_safe_max) 射程外,而且是明令禁止的一格 ⛔ 不是「另一门课讲」,是不许学——下一节单独讲

为什么用这条轴。因为护栏的强度应该由影响面定,⛔ 不由算法复杂度定。一个用最小二乘学出来的模式切换阈值(第 3 格),影响面比一个用深层网络学出来的出风温度偏置(第 1 格)大得多:前者改的是状态机边界,一次学错会造成整车层面的模式抖动;后者改的是一个天然可限幅的增量,最坏就是舒适性差一点。⇒ 沿算法复杂度配护栏,会系统性地给错地方设防

工程量级。护栏成本随格数往后跳档:第 1、2 格的偏置量天然可限幅,护栏成本最低;第 3 格要额外加防抖与防振荡(进入与退出门限、最小驻留);第 4 格要加误判代价上限;第 5 格必须加趋势监视;第 9 格不许学。⛔ 各格的具体阈值与限幅取值一律不给数——它们是平台相关量,由本项目确定。

易错点。沿「用什么算法」这条线索去枚举可学对象,会整类漏掉第 4、5、9 格——因为它们不是「一种算法的产物」:第 4 格是语义判断,第 5 格常常混在状态估计里,第 9 格根本没人把它当成「可学的量」来想。⚠ 漏掉的形态不是「少了一条」,是整类不出现,而清单看起来是完整的。⇒ 建全集时要自问两句:我是沿着什么线索数出来的?有没有不在这条线索上、但同样属于这个集合的东西?

1.9 第 9 格是明令不许学的那一格:安全限值本身

是什么。安全包络的允许值 u_safe_min / u_safe_max,由限值层依当前工况(排气温度、母线电压、绝缘状态、气蚀余量裕度等)逐周期算出(限值层本体见 K3-01 整车热管理控制策略总览与模式管理)。本课对它写死一条:这条计算链路上,一个学习件的输出都不许出现。

⚠ 它不是「另一门课讲」的意思,是不许学。这两件事必须分开:前者是射程划分,后者是禁令。

为什么。因为护栏之所以是护栏,前提是它独立于被它约束的对象。一旦允许值的计算里含有学习件的输出,模型就可以通过影响允许值来给自己放宽包络——而这种放宽在正常工况下完全看不出来:正常工况下允许值本来就宽,学习件推高一点也碰不到边。它恰好在边缘工况暴露,也就是最需要护栏的那一刻,护栏刚好失效。这是钉子 1 里那条「包络的计算链路不许被污染」的完整理由。

工程量级。这一条不需要任何额外资源——它是一条接口纪律:限值层的输入清单必须可评审、可追溯,评审时逐路核对每一个输入的来源。代价是一次接口评审的时间,⛔ 不是运行开销。

易错点。

  1. 只核最后一跳,漏掉间接污染。这是最容易漏的形态:学习件改了某个设定点,而这个设定点又是限值层的一路输入——链路已经被污染了,但从限值层往回看一步,看到的是一个正常的设定点信号,看不出它上游有学习件。⇒ 核的是整条依赖链,⛔ 不是最后一跳。
  2. 靠「表里没写就是不许」。★ 这一格必须显式写成表里的一行:明确列出「安全限值本身:禁止学习件参与计算」。⛔ 不能靠默认——默认状态不会被测试覆盖,也不会出现在任何一份接口评审清单上,一旦被触发就是没有人定义过的行为。

⛔ u_safe_min/u_safe_max 不给数,而且要写明它根本不是一个常数:它随工况逐周期变化。⚠ 由此还有一条实现上的硬要求——⛔ 不得把它实现成一张出厂固化的静态上下限表;这样做会在什么工况下让护栏形同虚设,第 4 讲正面点破。

1.10 全课符号约定在这里一次说清:J 的方向、η_lr 与效率 η 撞名、w 的下标、u 的五个变体

是什么。本课要用到的四组符号,每一组都有一个已知的撞名或歧义。全课统一按下表读写:

符号 本课的定义 方向与量纲 ⛔ 不许怎么写
J_reward 多目标奖励(收益)函数,形如 J_reward = w₁·ΔCOP − w₂·舒适偏差 − w₃·安全违规惩罚 越大越好;量纲由三项归一化之后的基准定 ⛔ 正文中不裸写 J
J_cost 体系内其他课(K3-06 模型预测控制(MPC)在热管理中的应用K3-07 能量最优的整车协调控制N6-02 整车热管理数字孪生与在线优化)用的代价函数,求最小值 越小越好 与 J_reward 同段出现时两者必须同时带下标
η_lr 学习率,出现在增益更新式 K_(n+1) = K_n + η_lr·∇J_reward(K_n) 里 量纲由 ∇J_reward 定 ⛔ 全课不裸写 η
η(η_v、η_is、η_fin) 本体系里普遍表示效率(容积效率、等熵效率、翅片效率) 无量纲 ⛔ 不得与 η_lr 互算、⛔ 不得比大小
w₁/w₂/w₃ 奖励函数三项的权重,一律带下标 无量纲(三项须先各自归一化) ⛔ 不裸写 w
w_ff K7-01 预测性热管理(导航/云端/驾驶意图协同)前馈置信度权重,与上面三个不是同一个量 无量纲 引用那门课时必须写 w_ff
u_baseline 基线控制器的输出 与被控执行量同量纲 ⛔ 全课不裸写 u
u_learned 学习件给出的建议动作(基线加增量之后的值) 同上 同上
u_final 经安全层之后真正送到执行器的动作,u_final = clip(u_learned, u_safe_min, u_safe_max) 同上 同上
u_safe_min/u_safe_max 限值层按当前工况逐周期算出的允许值 同上;⛔ 不是常数 ⛔ 不得写成出厂固化的静态表值

⚠ 表中的 ΔCOP 取系统口径(分母含风机与泵的电功率)。这个量在中文工程实务里两套口径都在流通,而表面读数一模一样,所以全课每一处 COP 与 ΔCOP 出现时都带口径标注;为什么本课取系统口径这一套,第 2 讲一次说清。若某个项目取另一套,全项目统一即可,⛔ 但同一份报告里不许混用两套口径。

为什么这一条要占第 1 讲的篇幅。因为这四组里每一组都有一个真实的撞名,而撞名造成的错不是「读起来别扭」,是算出来的东西方向相反

  • J 的方向是最要紧的一条。本课的 J_reward 是收益型,所以增益更新式取加号(沿梯度上升去增大收益);而体系内其余各处的 J_cost 是代价型、求最小值,套到那类目标函数上必须改成减号把正号照抄过去,就是梯度上升,会直接发散。
  • η 的撞名是量纲级的:效率无量纲,学习率的量纲由梯度定。两个量纲不同的量共用一个名字,读者会拿去互算、比大小——⛔ 两者不可互算、不可比大小。
  • u 的五个变体里,u_learned 与 u_final 之间隔着整个安全层。裸写一个 u,读者分不清正在说的是「建议」还是「命令」,而这两者的区别正是钉子 1 的全部内容。

工程量级。这一条不花任何工程成本,只花一次约定;不约定的代价是读者在第 3 讲把符号照抄进一个方向相反的框架里,直接发散。⇒ 便宜的约定挡住昂贵的错,与 1.5 那条判据是同一种性质的东西。

易错点。在「关键公式详解」那类汇总表里写回不带下标的原始形式。⚠ 汇总表同样必须用带下标的形式,并且在含义列里写明方向约定——汇总表是读者最常复制走的一段,它一旦丢了下标,前面所有约定都白做。

1.11 本课与七门邻课的分工:碰到边界只写去向与接口形状,⛔ 不重讲对方的方法

是什么。本课与七门邻课各有一条边界,一句话说清一条:

邻课 它负责什么 本课负责什么
K7-04 车队数据回流的车端实现:信号表定义、事件抓帧与带宽/存储预算 上游:信号表定义、事件触发抓帧、上行带宽与云端存储预算 从「干净时序样本已到云端」起讲;只接住一件上游的事——信号语义版本(第 2 讲)
K2-05 预期功能安全(SOTIF/ISO 21448)与 AI 件安全论证在热管理的落法 论证方法:运行设计域界定、数据集充分性与覆盖论证、性能验收准则、运行期监控作为安全措施的方法与接口 按本功能填值——把这四样做成本项目的四份证据(第 5 讲)
K3-10 热管理在线状态与负荷估计:观测器整定、软测量置信度与退出条件 状态估计:重构不可测状态,观测器整定、软测量置信度与退出条件 参数辨识与老化补偿——改的是模型参数;两件事⛔ 不许混(第 3 讲)
K5-05 在役健康度与渐变衰减辨识:从车端信号到服务决策 趋势型健康度:工况归一化与趋势判据本体 只交出一个接口——自适应补偿量必须进受监视量(第 4 讲)
K4-06 控制器非易失存储设计:学习值、诊断数据与累计量的持久化 非易失存储:载体设计、块类型、写入寿命预算、掉电一致性 声明需求——要存哪些量、写入触发点、复位路径(第 6 讲)
K7-02 软件定义热管理与 OTA 迭代 软件更新:刷写事务、灰度与回滚、参数锁定分级;A/B 统计显著性判据本体 学习值在升级与回滚时保留、迁移还是清零的判定准则(第 6 讲)
J7-05 机器学习/AI 代理模型在热管理中的应用 代理模型本体与可信域算法 代理模型作为在线推理件挂在控制链上时的护栏与退回(第 4 讲)

为什么必须写清这七条。因为不写清,本课与这七门课之间必然出现两种失败之一:重叠(同一件事两门课各讲一遍,口径还不一样,读者不知道信谁)或互相落空(两门课都以为对方讲了,结果谁都没讲——而落空的部分不会以「少了一节」的形式暴露,它是整块不出现)。

工程量级。写讲义与写设计文档的具体纪律是同一条:碰到边界处只写去向与接口形状——「那门课负责什么」「交给它的是什么、从它拿回来的是什么」——⛔ 不重讲对方的方法与取值。重讲的代价不是重复,是两份文档从此各自演进,半年后对不上。

易错点。把「前指」写成「已讲透」。⚠ 措辞上只说「那门课负责什么」,⛔ 不写「详见某课第 N 讲」——你并不知道对方的章节怎么编排,写死章节号会指向一个不存在的地方;更糟的是,若那门课其实没有讲那件事,读者按图索骥一无所获,而本课已经把责任推出去了。

1.12 本讲收口:两根钉子在这里立起来,后面五讲各自把它们落到实处

这一讲交出了五样可以直接拿去用的东西:一条准入判据(拔插件测试,★ 本课归纳)、一条否决链(六问,任一为否即不上,且每个「否」都有出路)、一张可学对象的九格表(含明令不许学的第 9 格)、一份符号约定七条邻课边界

它同时把两根钉子立了起来。钉子 1——学习件的输出是建议不是命令,它必须穿过一层由非学习件计算的安全层才到得了执行器,而那一层的允许值是按当前工况实时算出来的,不是出厂固化的一张表——在 1.4、1.5、1.9 里已经落成了三条架构约束、一条准入判据和一条禁令;第 4 讲会把它展开成八层护栏。钉子 2——自学习的验收量是「相对基线的、同工况分布下的、超得过噪声的增量」,⛔ 不是模型精度——在 1.1 与 1.6 的第 2 问里已经露头;第 2 讲把它的口径与分层要求定死,第 5 讲把它落成三类证据。

⚠ 最后强调一次两根钉子之间的关系:它们⛔ 不可互相推导。护栏做得再全也不构成收益的证据,收益再显著也不减免任何一层护栏。把「我们做了限幅」写进收益论证,或者把「省了这么多能耗」写进安全论证,是评审上最常见的一种混线——两条判据链各由各的依据决定,⛔ 不许从一条读出另一条。

后面还有 5 讲正文 · 关键公式 · 案例拆解 · 常见误区 · 动手做

会员专属

后续为会员深水区内容——四库数据与深度拆解。

查看会员方案