1. 引言
作为一个广泛使用的科学计算和编程工具,MATLAB软件为优化建模提供了丰富的资源和技术支持。作为大部分理工科专业的一门专业必修课,通过学习,学生编程和解决问题的能力得到训练,体验使用软件解决问题的全过程,培养学生的动手能力及通过掌握数学软件解决数学问题的意识和能力,为后续数学建模竞赛等做准备。通过将建模案例融入MATLAB语言课程,学生可以学会将理论知识应用于实际情境中,并利用这些工具求解问题。MATLAB在实际问题解决中扮演着重要的角色,它是将数学方法与现实应用相结合的关键环节。
本文通过一个教学案例设计探讨如何将建模案例融入MATLAB语言课程,以培养学生在数学建模和编程方面的综合能力。建模案例的引入使学生能够将抽象的数学概念与实际问题相结合,培养他们解决实际挑战的能力。通过将问题转化为数学模型,并利用MATLAB求解,学生可以在真实情境中应用所学知识,培养实际应用的能力。学生学会将数学建模与编程技能相结合,编写代码来实现问题的求解。这有助于提升学生的编程能力和算法设计能力,为他们今后从事科学研究和工程应用打下坚实基础。更重要的是,地方本科院校学生的学习积极性普遍不高,通过实际操作和求解案例,学生可以亲身体验数学建模和编程的乐趣和挑战。这种实践体验有助于提高学生的学习兴趣和积极性。
综合学术文献的研究可以发现,将建模案例融入MATLAB语言课程可以取得显著的教学效果。学生不仅可以掌握建模的基本原理,还可以通过编程实践,深入理解建模方法的原理及应用。此外,通过实际案例的引导,学生还可以培养问题解决能力、团队协作能力以及数据分析能力。文献 [1] 成功地将数学建模思想融入课堂教学,借助MATLAB软件进行中心极限定理的随机模拟,通过图像直观演示的方式,将抽象的定理具体化、直观化和形象化。文献 [2] 设计了与数学建模有关的教学案例,采取相应的案例教学法,能很好地调动学生的学习积极性、主动性和创造性。文献 [3] 给出了一个将数学建模与MATLAB相结合的优秀案例。基于MATLAB的案例教学方法,文献 [4] 以三轴电子罗盘数据分析与参数辨识为例,利用MATLAB语言求解实际问题,加深学生对课堂知识的理解,也培养学生的实践能力。文献 [5] 以泡沫材料的应力–应变数据,设计了MATLAB离散数据数值积分教学案例。文献 [6] 结合两个数学建模案例,探讨了数学建模课程存在的问题以及数学软件在数学建模教学中的重要性。本文作者所在教学团队也对数学建模课程群的教学案例进行了研究。文献 [7] [8] 以多项式数据拟合教学内容为例探讨了案例式教学设计,对提高学生应用MATLAB程序设计解决实际问题的能力取得了良好效果。文献 [9] 提出了“点骨架矩阵”三维曲面绘制方法,并采用递进式案例教学设计,通过由浅入深的案例,使学生能比较容易地掌握三维曲面绘制方法。建模案例的引入使学生能够将抽象的数学概念与实际问题相结合,培养他们解决实际挑战的能力。通过将问题转化为数学模型,并使用MATLAB工具进行求解,学生可以在真实情境中应用所学知识,培养实际应用的能力。
将建模案例融入MATLAB语言课程是一种富有前景的教学设计。通过这种设计,学生将在理论和实践中获得全面的培养,为他们未来的发展奠定坚实基础。同时,教师在教学过程中也可以不断探索和创新,为学生提供更具挑战性和启发性的案例。本文以优化建模案例为例,探讨将优化建模案例融入MATLAB语言课程的教学设计。通过精心设计和综合考虑,教师可以帮助学生克服教学重难点,达到更好的教学效果。
2. 优化建模教学案例及案例分析
通过将数学建模案例融入MATLAB课程,学生将能够学习到实际应用的数学建模技能,并具备使用MATLAB解决实际问题的能力。这种融合还能够加强学生的编程和计算能力,为他们未来在数学建模竞赛和职业发展打下坚实基础。
2.1. 教学案例
假设一家工厂生产三种产品:A、B和C。每种产品的需要不同的加工时间,不同数量的原材料和人力资源,并有不同的利润。生产每种产品的加工时间分别为3小时、4小时和2小时;需要的原材料分别为2 kg、3 kg和4 kg;需要的工人数量分别为1人、2人和1人;产品的利润分别为10元、15元和20元。此外,所有的产品必须100个小时内完成生产,参与生产的工人不超过60人。学生需要建立一个数学模型,以总利润最大化为目标,确定每种产品的生产数量。
2.2. 案例建模分析
涉及的知识点:案例综合考察了几类常见的最佳变长编码方法:香农、费诺、哈夫曼编码。
教学目标:
① 学会利用MATLAB定义的优化函数求解带有多种约束的优化问题,使用fmincon、linpro等优化函数进行求解。
② 理解线性等式约束、线性不等式约束在优化问题中的应用。
③ 掌握优化结果的分析和解释,进行敏感性分析。
④ 培养解决复杂实际问题的能力,发展编程和数学建模的创造力。
教学重点:
① 数学建模的转化:学生需要学会将实际问题抽象成数学模型,定义决策变量、目标函数和约束条件。这个过程需要培养学生的实际问题分析能力和数学抽象思维。
② 优化方法的选择:学生需要理解不同类型的优化方法,包括线性规划、非线性规划和整数规划等,在面对实际问题时能够选择合适的优化方法。
③ MATLAB编程:掌握MATLAB定义的优化函数的使用方法,以及如何利用MATLAB求解实际问题。
④ 结果分析与解释:学生需要学会分析和解释优化结果,理解最优解的意义以及各种约束对结果的影响。
教学难点:
① (混合)整数规划:整数规划问题在处理中可能较为复杂,需要理解整数规划的原理,掌握混合整数规划方法的应用。
② 参数调整和敏感性分析:在实际问题中,参数的调整和敏感性分析对最终结果有重要影响,需要学会如何进行这些分析。
③ 复杂实际问题的抽象:某些实际问题可能非常复杂,学生需要培养将问题简化和抽象的能力,以便应用优化建模方法。
重、难点突破:通过精心设计和综合考虑,教师可以帮助学生克服教学重难点,达到更好的教学效果。在教学过程中,及时提供指导和反馈,帮助学生克服困难,理解难点。逐步引导学生从简单问题到复杂问题,让学生逐渐熟悉建模和求解过程。通过实际案例和编程练习,让学生通过实际操作来理解和掌握优化建模方法。同时鼓励学生在小组中合作,共同解决问题,互相学习和讨论。
3. 教学过程设计
3.1. 案例建模过程
将问题转化为一个带有线性等式约束和线性不等式约束的优化问题。首先需要定义决策变量,令xa、xb和xc分别表示产品A、B和C的生产数量。接下来构建目标函数和约束条件:
(1) 目标函数:
z = 10xa + 15xb + 20xc (总利润z最大化)
(2) 约束条件:
① 原材料约束(等式约束):
2xa + 3xb + 4xc = 120 (原材料总量恰好为120)
② 人力资源约束(不等式约束):
xa + 2xb + xc ≤ 60 (人力资源不超过60)
③ 时间约束(不等式约束):
3xa + 4xb + 2xc ≤ 100 (生产时间不超过100)
3.2. MATLAB求解
本案例是求解最大值问题,但在MATLAB中,大部分优化函数实际上是求解最小值问题的。为了求解函数的最大值,可以通过将目标函数的符号取反,将最大值问题转化为等价的最小值问题。具体而言,现需要求解函数f(x)的最大值,可以通过以下步骤来转化为最小值问题:首先定义一个新的函数g(x) = −f(x),即将目标函数的符号取反。然后使用优化函数(如fminunc、fmincon、linprog、intlinprog等)来求解g(x)的最小值问题。最后,在求解完g(x)的最小值问题后,得到的结果就是函数f(x)的最大值的相反数。
接下来以fmincon函数为例,详细介绍其功能及使用,包括参数输入和输出,并给出求解的全部代码。
3.3. MATLAB编程实现
fun = @(x) -10*x(1) - 15*x(2) - 20*x(3); % 负目标函数
Aeq = [2 3 4]; % 线性等式约束系数矩阵
beq = 120; % 线性等式约束右侧向量
A = [1 2 1; 3 4 2]; % 线性不等式约束系数矩阵
b = [60; 100]; % 线性不等式约束右侧向量
lb = [0; 0; 0]; % 变量下界
options = optimoptions('fmincon', 'Display', 'iter');
[x, fval, exitflag] = fmincon(fun, lb, A, b, Aeq, beq, [], [], [], options);
注意到每种产品的生产数量应为整数,应考虑使用整数规划求解,MATLAB中定义整数规划问题,使用intlinprog函数进行求解。
f = [-10; -15; -12]; % 目标函数系数向量
Aeq = [2 3 4]; % 线性等式约束系数矩阵
beq = 120; % 线性等式约束右侧向量
A = [2 3 2; 3 4 2]; % 约束条件系数矩阵
b = [60; 100]; % 右侧约束向量
lb = [0; 0; 0]; % 变量下界
intcon = 1:3; % 整数变量的索引
[x, fval, exitflag] = intlinprog(f,intcon,A,b,Aeq,beq, lb,[]);
结果分析:可以通过x向量中的值来获取每种产品的生产数量,通过-fval来获取最大化的总利润。引导学生分析优化结果,解释每种产品的生产数量和总利润。
敏感性分析:引导学生可以尝试调整约束条件或目标函数,观察优化结果的变化,讨论不同条件对结果的影响。
教学效果:学会在MATLAB中定义带有多种约束的优化问题,使用fmincon等函数进行求解。理解线性等式约束、线性不等式约束在优化建模问题中的应用。
3.4. 实践练习
通过这个案例,学生将能够更深入地了解MATLAB的优化工具和数学建模在实际问题中的应用。引导学习使用MATLAB中定义的linprog函数求解上述案例。可以在让学生在课后解决其他类型的约束和更复杂的案例,帮助学生更全面地掌握优化问题的建模和求解方法。
4. 结束语
本教学设计详细介绍了将优化建模案例融入MATLAB课程教学的详细过程,包括问题描述、建模、MATLAB编程、结果分析和敏感性分析。学生将通过案例学会定义决策变量、构建目标函数和约束条件,运用MATLAB的优化函数(如linprog、fmincon和intlinprog)进行求解,并分析优化结果的合理性。通过这样的融合案例,学生将能够学习到建模和优化的实际应用技能,掌握使用MATLAB求解最优化问题的能力。这种综合性的学习将培养学生的问题解决能力、团队合作精神和科学研究思维。
基金项目
本文由湖南省教育厅教学改革研究项目资助:数学建模问题驱动的《Matlab语言基础》教学研究(HNJG-2021-0997)。