Virtual Validation#
---
创建日期: 2023-06-17
---
我不太理解的 Virtual Validation。
我们部门有一个“远景”是“Virtual Validation”, 说了很久我也不是很确定自己是否理解,我挺确定多数同事也不理解。 事业部的其它部门也有类似的远景,而似乎所描述的内容又不太一样。 说了这几年,至少我个人觉得只见过PPT,未见过实物在哪里。
我是很务实(短视)的人,很反感这种“忽悠”行径。 却也没什么办法,因为我也拿不出解决方案。 我觉得我们有许多实际问题还没得到解决,工作效率低下。 做大数据、机器学习,像是建立了一条高速公路,可是支路都还崎岖,高速空空如也有什么用呢? 诚然发展方向如此,可是还远没有到时候,顺序错了,本末倒置。
不过我绝不反对这种探索岗位存在,一方面是在探索可能性,另一方面或许也能给其他人带来启发。 我讨厌的是说大话、空话,以及弄一堆不相关的、难用的玩意却没有一点自知之明。
失态了、失态了,回到“Virtual Validation”……
牛头马嘴#
不同的行业可能对于“Virutal Validation”的定义不一样。
比如对于基于传感器的自动驾驶(或者是要开发一个自动平衡车),写了些控制算法。 计划在实车上进行算法的开发和测试,于是准备好硬件,结果算法不行,呱唧把车带沟里了。 或者要测试人多的环境,用没有成熟的算法进行测试,是有风险的。
所以在那之前,先在虚拟环境中去搭建基础模型(虚拟的车、虚拟的传感器、虚拟的行人和环境),然后调试算法。 “Virtual Validation”可以说是“Validation in a virtual environment”。 而这个虚拟的环境是有真实世界物理引擎的,能够对行为动作做出反应,还能轻松模拟许多的场景做测试自动化。 在这种情境下,“Virtual Validation”还可以说是“Virtual hardware for software validation”。 (另外,如果实际已经有部分硬件了,那可以把这部分的模拟取消,接入硬件,就是HIL)
如开头所述,因为我不完全确定他们所说的是什么概念,以下只是自己的理解。 (我好像在哪里也说过这话来着,老说这种话是不是我有问题……?)
我司VV经常说的是,用历史数据建立一个模型。 在开发新项目的时候,代入已知参数,用模型去评估哪些内容还需要测试,哪些可以放心忽略,如此减少实际需要测试项目。 (话说也有个非数值模型可以定义哪些测试需要哪些不要,叫做“经验”)
是仿真吗?#
VV的目的是减少实际测试,因为实际测试周期长,要组织人员、设备,还要额外分析以及报告。 能少点就少点。
这,这不是…… 有限元仿真不就是大大减少了要测试的项目。 现在许多的设计先在仿真中跑一遍,看看哪里是脆弱的部分、哪些是不确定的,定义DFMEA,再通过实际测试去验证。
有了仿真也还是需要实际测试,因为仿真的边界条件有时未知,有些模型理想化、简化,实际生产过程产生偏差等等。 没有完美的模型,考虑到所有的一切,都导致需要执行实际测试。 因为我们是在用实际的产品而不是一个数字模型。
我们现在仿真存在的问题大概仍是,仿真结果并没有达到和实际结果满意的匹配度。 还是需要实际测试结果作为输入,去进行修改、优化。 模型不代表实际情况,有时候不是模型的问题, 而是实际中这些那些因素无法避免(模型无法、也没必要做到如此精度,而且也不能考虑所有情况), 需要想办法去解决、优化。
那VV和仿真有什么区别呢?都是建立模型进行模拟。 正如前面所说,仿真还是有很多输入是假设, 如果我们能够有更实际的模型就好了。 那就用真实的历史数据,构建真实的模型。 VV计划用历史项目测试数据去建立模型。
但是这样能做到什么呢? VV的输入、参数、输出到底是什么呢?会纳入多少维度的数据? 我始终觉得我们的维度不多,虽然数据量不小,只是因为采样率高而已。 我们没有装配过程中的记录,没有产品组件之间的关系输入,没有实际运行过程中的监测。 只是在测试台上的这些过程,能得到什么?能代表哪些工况? 得到一个线性/非线性关系会说明什么呢? 输出的目标误差是多少? 生成的这个模型所接收的输入又是什么,输出什么?
顺便说一下,其它部门觉得当前模型与测试不符的原因是,当前仿真没有考虑到周围环境的影响(可以认为接口边界被简化了)。 而解决之道是把测试环境也作为模型的一部分,做大模型仿真。 可即便如此,我还是觉得仿真中多是稳态结果,而没有考虑运行时序输入对于模型的影响。 即模型的状态会由于过往经历不同,类似“迟滞”效应,不同方向来的输入其结果可能不同。 等等,如果能够接受时序,不是成了类似数字孪生一样?
再顺便,那VV需要调用仿真吗? 比如像预测性维护(Predictive maintenance),在仿真中设置缺陷,然后把产生的数据投喂机器学习生成模型, 应用的时候向模型输入时序数据,得到是否需要维护的状态指示。 用历史数据建立模型的VV是这样的吗? 我认为是不接入仿真的,至少不是我认为的有限元仿真。 相反VV建立的是一个快速的、简化的模型(Reduced Order Model)去替代有限元仿真(至于怎么做我就不知道了)。
能通用吗?#
就假设我们有了一个模型,能够预测结果,这个模型或许可以作为数字孪生的模型。 可是这个模型能用在多少的产品上呢? 如果我们有许多同样的产品,那或许可以一次训练,广泛使用。
可是啊,我们是研发测试,每个项目都是不同的产品,模型可以通用吗?甚至连传感器位置都不一样啊! 按照我的理解,每个产品都要重新进行训练。 可是说的历史数据建立模型啊,验证新产品? 什么,你说验证通用的部分?可这样通用的部分能得到什么有效的信息呢?
关注点一样吗?#
我们现在做的测试,比如载荷分布,每个项目都做,因为仿真的边界条件许多,不同输入结果可以这样,也可以那样。 测试的目的之一是确定产品实际状况是怎样的边界。 另外,实际结果有些现象也是仿真未曾预测出来的,我们想要理解这些现象。
我不认为VV能够给出解释,数据维度少,也不知道具体运行机制,给了历史数据预测出来的东西误差范围是多少? 如果我们关心的是为什么有 1% 的变化,而预测给的范围是 20%(因为历史数据不同的项目差异就可能有这么大),关注点一样吗?
大数据、云计算、机器学习、人工智能#
各行各业都会试图转化与应用这些新技术, 然而需求不一,总是伴随着不同的理解,在没真正确立之前常常南辕北辙。 另一方面概念也总是容易被滥用,新瓶旧酒,不停换包装。
我不是想指责谁,而是真的我很困惑,常常想是不是我没理解到位。
我原以为只是自己的疑问:这些机器的智慧会不会告诉我们人类在发展进程中是否选择了正确的道路?
比如当时AlphaGo通过学习人类棋谱,学会了下棋,那么它是否是一个局部上的“最优”呢? 输入本身(人类的经验)是否是有偏移的? 而后AlphaZero也下三三,似乎就认可了人类的经验。
举这个例子的原因是,感觉许多人(包括我),开始的时候想着机器学习能够重构一切。 把所有都往里头一扔,期盼着输出有用的东西,而省略了已有的经验(已有的分析方法)。 不可取。二者的范围并不相同,需要互相辅助,而不是取代关系。
(我们的)机器学习,生成了一条关系曲线,又如何呢? (在没有那么多应用场景的情况下)明明画在图上立刻就能获得的经验为什么不用呢?