技术文章及通讯

使用MATLAB Live脚本在线教授最优控制和动态规划

Duarte J. Antunes,埃因霍温理工大学


当我的课程最优控制与动态规划“,在COVID-19大流行期间过渡到在线模型MATLAB®现场脚本被证明是无价的。它们使我能够以一种互动的、吸引人的方式教授复杂的概念,比传统的幻灯片授课方式更适合在线学习。

使用活动脚本,我可以组合格式化的文本、图像、超链接、方程和代码(图1)。由于脚本是活动的,学生可以调优参数或修改代码,并立即看到他们的更改如何影响输出。这一过程使学生积极学习,并鼓励对材料的探索。在一项课后学生调查中,97%的受访者表示,现场脚本对完成作业“有帮助”或“非常有用”。

图1。在最优控制和动态规划中使用的动态脚本。

图1。中使用的实时脚本最优控制与动态规划“,”

用幻灯片讲课的局限性

我教书的时候最优控制与动态规划“,在过去,我的讲座包含幻灯片,在幻灯片中我介绍了一个新概念,描述了如何实现它,然后展示了一些示例输出。例如,在线性二次调节器(LQRs)的课程中,我会从讨论相关方程以及特殊情况和假设开始,展示MATLAB实现,然后展示各种参数值的代码输出(图2)。随后,我会布置练习,要求学生使用MATLAB解决一组最优控制问题。练习包括一个带有MATLAB代码快照的示例解决方案。

图2。LQR上的幻灯片系列。从左上开始顺时针方向:介绍、示例应用、相应的MATLAB代码和结果图。

图2。LQR上的幻灯片系列。从左上开始顺时针方向:介绍、示例应用、相应的MATLAB代码和结果图。

我一直觉得这种方法是一种笨拙的呈现材料的方式。幻灯片上的代码只是实现的一个快照,我必须包含许多图来显示不同参数值对输出的影响。在这些问题的激励下,我决定将所有涉及MATLAB的课程材料转换为实时脚本。

从幻灯片到现场脚本

我总共转换了16次讲座、30个MATLAB例子、30个MATLAB练习和10个分级作业。对于每个课程主题,我都将介绍性讨论文本复制到现场脚本中,并将其与标题、要点和背景材料的超链接相结合。我使用Live Editor输入LaTeX命令,并在将方程放入实时脚本之前预览相应的方程(图3)。

图3。在Live Script中插入LaTeX方程并预览输出。

图3。在Live Script中插入LaTeX方程并预览输出。

在某些情况下,方程式相当长,而我没有LaTeX代码。在这些情况下,我使用Mathpix OCR软件扫描书面或打印的方程式,并为我生成LaTeX。

一旦我创建了现场脚本,我与学生分享他们通过MATLAB开车基于云计算的存储。学生们下载每节课的脚本,并在笔记本电脑或浏览器中使用MATLAB在线(图4)使用MATLAB Online,学生可以在任何计算机或平板电脑上运行和编辑脚本,甚至是没有安装MATLAB的机器。

图4。现场脚本的LQR控制课运行在一个浏览器与MATLAB在线。

图4。现场脚本的LQR控制课运行在一个浏览器与MATLAB在线。学生可以用第29行上的滑块改变参数值,并在右侧的图中看到结果。

实时脚本分配和自动评分

在课堂上,学生们经常实验相应的现场脚本,改变参数值并检查结果。我鼓励这种实验,因为这有助于他们吸收新知识。

现场剧本在帮助学生完成作业方面同样有价值。例如,其中一项作业涉及为嗡嗡线游戏开发控制算法。在现实版本的游戏中,玩家的目标是让一个环沿着弯曲的电线传递,同时不让环在任何一点上接触电线。对于作业,我将其简化为一个二维问题,其中算法必须通过计算环沿导线向下移动时每个时间步的偏移量和角度来控制环的轨迹(图5),以便在最短的时间内到达导线的末端。

图5。嗡嗡线分配的可视化,其中一个环(蓝线)必须沿着电线(红曲线)通过,而不接触它。

图5。嗡嗡线分配的可视化,其中一个环(蓝线)必须沿着电线(红曲线)通过,而不接触它。

当我解释这个作业时,学生们往往有很多问题。当我为他们提供一个示例实现的实时脚本时,他们能够自己回答其中的许多问题;他们可以脱机运行脚本,更改控制参数,确切地了解戒指与电线接触的触摸是什么,等等。

为了简化评分,我向学生展示了他们需要在现场脚本中开发的功能,以完成作业,并有明确定义的输入和输出。然后,我使用这个特定的函数来自动评分学生的解决方案MATLAB平地机,与我们的学习管理系统Canvas集成。

活动脚本的计划改进和其他用途

当我为我的课程开发新的现场脚本时,我继续添加增强功能。这些增强包括合并更多的动画。我这样做是为了完成一项作业,学生们必须在追逐-逃避游戏中为追逐吃豆人™类角色的鬼魂制定最佳控制策略(图6)。我发现动画比我的文字描述更能帮助学生理解作业。

图6。追捕-逃避游戏,学生开发最优控制算法,让鬼(红色)追捕主角(黄色)。

图6。追捕-逃避游戏,学生开发最优控制算法,让鬼(红色)追捕主角(黄色)。

为了回应学生的反馈,我还在MATLAB代码中添加了更多的内联注释。我注意到现在的学生依赖于看到代码和代码注释来巩固他们的理解。在过去,我倾向于不强调实现细节,但是越来越多的学生了解编程语言,并且发现当某些概念用注释代码而不是我们的自然语言来表达时,它们更容易掌握。一个学生指出:“当你决定改变某个参数或一段代码时,看看问题/解决方案是如何变化的,这真的很有帮助。通常情况下,示例受限于所示的一个变量。除此之外,一些理论的实际实现有时很难想象,而这样一段代码可以极大地帮助这一过程。”

动态脚本的主要优点之一是它们易于学习和使用。我发现大多数学生在看了大约五分钟的文档后就可以启动并运行了。在我教的另一门关于信号和系统的课程中,我要求学生就他们的项目提交一份报告。许多人决定自己创建他们的最终报告作为现场脚本,并使用现场脚本来解释他们的项目通过视频

作者简介

Duarte Antunes是埃因霍温理工大学(TU/e)机械工程系的助理教授,他是控制系统技术小组的成员。他的教学和研究主要集中在控制理论方面。

2021年出版的

查看相关功能的文章

Baidu
map