朋友,你看过《火星救援》这部电影吗?
它讲述了一位意外被困在火星上的宇航员,自己克服各种挑战生存下来,并最终获救返回地球的故事。
电影中被困的宇航员为了生存,自己在火星上想尽办法种值土豆,以保证食物供应;在无法获得地球的救援物资后,又利用火星车拉着基地里仅有物资,在有限的时间内,一路利用太阳能边充电边驱车长途跋涉,历尽艰辛终于到达遗弃的火箭发射场,乘坐火箭与空间站对接后返回地球了地球。
02
—
建模原因与目的
不知你发现没有,电影中英雄的宇航员与日常工作中专业的工程师有几点相似之处:
首先,他们都能将一个复杂的系统拆解开来,并将其组件重新组合用于新的目的;比如宇航员将仅有的土豆用于种植以获取食物好让自己活下去,为了能有水灌溉土豆,还想出了用氢氧燃烧制水的方法。
其次,他们都会根据需求对系统性能进行仔细的分析计算;比如宇航员为了在有限的时间内抵达火箭发射场,通过准确的计算得出了可以通过太阳能发电,支持自己走完全程。
这两点在《火星救援》中都是关乎宇航员生死的问题。这些相似之处在增强了故事的情感冲击力,同时也增加了对工程师们的吸引力,因此使得这个故事成为了一个丰富(且有趣)的、适合采用参数化SysML建模的主题。
选取这部电影里延长宇航员的食物供应、在火星表面进行长距离旅行这两个关键事件/场景进行建模,是为了寓教于乐,以便通过这样一个有趣、有益的示例,展示如何将关键且适度复杂的计算纳入您的系统建模工作中去。
03
—
电影关键场景的计算分析模型
下面对两个场景采用MagicDraw+SysML进行建模:
在第一个场景中,宇航员计划通过在火星基地营内种植食物来增加可用的食物储备。
在第二个场景中,他需要携带能量供应、生命维持设备以及到达目的地所需的食物和水,穿越火星表面进行长途旅行。
上述两个场景通过用例图进行捕获。
1. 场景1建模:被遗弃
第1个场景中,使用BDD图对火星着陆基地中包含的人员、物资进行建模。
宇航员希望能种植出足够的土豆作为食物,以支撑到自己获救。这里将宇航员种植土豆的分析过程和要考虑的相关因素用BDD图表示为4个部分:
种植土地面积分析
水量分析
土豆生长时间分析
生存分析
每个部分都采用多个参数图建模,比如种植土地面积计算的顶层参数图如下:
2.场景2建模:穿越第2种场景,宇航员需要借助火星车在火星地表进行长途旅行。同样采用BDD图对由两辆火星车组成的“车队(Caravan)”及其上运送的物资进行建模。
这次旅行有一个时间限制,必须在规定时间内完成,而且食物和水的储备必须充足。为开展分析,同样采用BDD图将考虑的因素分成5个部分:
电力分析
旅行时间分析
食物分析
水量分析
生存分析
每个部分也采用多个参数图进行建模,其中生存分析的顶层参数图如下:
3.模型整体构成
《火星救援》生存、转移两个场景的分析计算模型,包含了1个用例图、6个模块定义图,以及多个参数图。
模型结构按照用例、场景等构建。
通过这样一套模型,可以支持完成关键事件的计算,支持宇航员进行决策。
04
—
凡人感言
我自己都忘记了是否看过《火星救援》这部电影了,趁着写文章在视频号上看了浓缩版,感觉情节似曾相识,可能是原来看过,也可能是情节和《独行月球》雷同吧,这部电影我还记忆犹新呢。听说《独行月球》是改编自韩国的同名漫画,但这漫画的刊载时间(2016年)又晚于《火星救援》(2014年)这部小说,总感觉这其中有一定的联系
。
而且《火星救援》中乘坐旧飞船返回的桥段,似乎《独行月球》中也有,就连《流浪地球2》里面吴京都以同样的方式离开的月球。
哈哈,有点跑偏了,不过这也算学习的收获
吧
言归正传,《火星救援》这份模型虽然重点内容是参数图建模,但通过建模说明文档可以了解如何从现实事例中抽象场景、构思建模的方法,“授人以鱼,不如授人以渔”,我认为这比参数图更值得学习。
同时,它非常系统的介绍了用例图、模块定义图、参数图组合运用的良好示例,而且从中可以学习到模型的组织方式。
从电影情节中取材建模,为较为枯燥的建模工作增加了趣味性,同时也体现了实用性。这种写文章和分享知识的方式对我来说是比较新颖的,结果网上搜集素材时,发现了很多类似的文章,看来还是我孤陋寡闻了。这也充分暴露了我理工直男的本性。