技术文章

超越算法和优化:帮助学生用工程师的方式工作和思考

作者 : Alwyn Hoffman, North-West University


工科学生解决复杂问题的能力,远远超出大学的学分要求。我在讲授《算法和优化》课程时对这一点深有体会。《算法和优化》课程中的优化问题要求学生找出可行的解决方案,确定必须做出哪些权衡,来满足相互冲突的需求。

虽然我布置的题目很容易理解(例如,帮助农民决定种植什么作物可以实现利润最大化),但如果没有适当的工具,这些问题还是太复杂了,无法通过解析的方法来解决。学生必须将他们在一年级工程学课程中学习到的概念与编程技能结合起来,制定数学解决方案,再将其转换为代码或模型,然后显示和解释结果。

MATLAB®和Simulink®可以让学生在一个学期内就能解决这种复杂的问题。他们可以使用内置的函数和模块来开发解决方案,而不是关注组件级别的低级别实施细节。在Python、C或C#等语言中解决这些问题,需要花费10倍的时间。

MATLAB编程简介

学习《算法和优化》的学生已经掌握了入门级的编程技巧,但大多数人对MATLAB还不熟悉。为了让他们熟悉MATLAB语言和开发环境,课程的第一个作业就是要求他们构建一个简单的用户界面(图1)。该界面需要对样本数据进行动态和多色的可视化,比静态图表更能吸引学生。整个练习遵循一个简单的流程。刚开始的时候,学生们以为构建应用程序很复杂。经过练习,他们对自己构建应用程序的能力充满信心。

图1. 学生在MATLAB中创建的图形用户界面

图1. 学生在MATLAB中创建的图形用户界面

第一项主要作业是在MATLAB中解决非线性优化问题。在我教授这门课的三年中,每年我都提出一个不同的问题。今年是和农业相关的问题:学生们必须根据预期降雨量和运行灌溉泵的电力成本,确定需要为两种作物分别分配多少土地,才可以实现利润最大化。去年,学生们必须优化能源管理系统,找出电网、太阳能和风力发电量的最佳组合。前年,我给他们提供了一个采矿场景,在这个场景中,他们必须找出成本最低的方法,利用柴电混合动力的铲运机(LHD)设备和通风风扇,来保持矿井的运作和通风。

这些场景中的每一种在概念上都很容易理解,但是任何一种都没有明显的数学解决方案。学生首先将问题的文字描述转化为一组方程式。然后,他们必须确定使用哪种非线性编程技术,并在MATLAB中实施一个解决方案。最后,它们生成非线性优化问题的解决方案,并传递给Simulink,对不同的实际场景中的结果进行可视化。

Simulink中的动态优化

在接下来的作业中,学生们学习如何在Simulink中解决动态优化问题。他们重新修订初始的MATLAB解决方案,以处理随时间变化的参数。例如,在农业问题中,学生现在必须考虑逐日变化的降雨量,而不是根据相应季节的平均值假设降雨量恒定。他们开发了Simulink模型,使用在预定范围内随机生成的数值来模拟降雨量、风速、云量和其他环境变量(图2)。他们将之前作业中的MATLAB代码整合为用户自定义的函数模块,然后优化代码和模型,直到找出适用于不同动态条件的解决方案。

图2. 学生创建的优化农场作物选择的Simulink模型。

图2. 学生创建的优化农场作物选择的Simulink模型。

为了开发模型,学生们必须先构建单独的组件,然后设法将它们组合成一个完整的系统。我鼓励他们在早期多进行测试,而不是在整个系统组装好时再测试。我还给他们示范如何使用Simulink Scope模块在模型中的任意点绘制信号,并通过系统跟踪错误,就像工程师在调试真实系统时所做的一样(图3)。

图3. Simulink Scope试块输出示例

图3. Simulink Scope试块输出示例

以工程师的方式工作

虽然我鼓励学生尽量自己独立完成最后的作业,但我也允许他们分组合作。不过,即使他们选择一起合作,每个学生都必须上交自己的作业,并且能够向我解释每行MATLAB代码的原理。我告诉我的学生,只要你完全理解,就完全可以采用其他人提供的部分解决方案。有些老师不同意让学生使用同学的工作成果,但我相信我的方法反映了工程师在现实世界中的工作方式,大多数工程师既没有时间也没有资源从头到尾单独解决每个问题。

用于高级项目的MATLAB

我最近开始教授一门关于数据分析的四年级课程,在这门课程中,学生们使用MATLAB完成更高级的作业。我根据自己的研究和研究生写的论文来布置这些作业。我把数据分析分为三个阶段。在第一阶段,学生对数据进行简单的统计探索和可视化。接下来,他们应用统计度量来查看不同数据子集之间的差异。最后,他们建立回归、神经网络和决策树模型,并利用这些模型,根据数据进行预测。

学生们有六周时间完成他们的考试作业。在最初的几个星期里,有个学生多次在办公时间拜访我,问我作业该怎么做。我发现这个学生和他的同学分享了他从我这里学到的东西。他所起到的作用,就像在真正的项目上与初级工程师合作的高级工程师或首席工程师。班上几乎每个学生都完成了作业,并且成绩很好。这些结果向我证实(同时也向他们证明)了当今工程师的一个核心原则:当你拥有合适的工具并知道如何使用它们时,你就可以思考并解决困难的工程问题。

西北大学是全世界近1300所可以在全校范围内使用MATLAB和Simulink的大学之一。有了全校范围的许可证,研究人员、教职员工和学生可以在课堂、家庭、实验室或现场使用该产品最新版本的通用配置。

关于作者

Alwyn Hoffman是南非波切夫斯特罗姆西北大学电气、电子和计算机工程学院的教授。他拥有比勒陀利亚大学电子工程博士学位。他的研究关注领域包括人工智能、射频识别和投资管理。

2019 年发布

查看文章,了解相关功能