寧雪梅 趙玉英 岳瑞鋒



[摘 要]文章對北京林業大學數學專業運籌學課程教學改革進行了總結,提出了在運籌學課程教學中增設實踐教學環節的教學方法。實踐教學環節主要是以實際案例講授了Matlab程序的編寫,建立了案例庫。通過增設實踐教學環節,讓學生親自上機實習,使他們能多角度、多方法地解決實際問題,既鞏固了理論知識,又提高了分析解決問題的能力,從而達到培養應用型人才的目的。
[關鍵詞]運籌學;實際案例;Matlab;實踐教學
[中圖分類號] O22;G642 [文獻標識碼] A [文章編號] 2095-3437(2020)10-0117-03
一、引言
運籌學是一門應用科學,它廣泛應用現有的科學技術知識和數學方法解決實際中提出的專門問題,為決策者選擇最優決策提供定量依據[1]。運籌學涉及的每一個問題都是從實踐中來,通過分析實際問題,建立相應的模型,再通過對模型的研究,得到相應的理論結果。“建模”過程是“實踐—認識—再實踐—再認識”這樣一個循環往復、螺旋式提高的認知過程,體現“從實踐中來,到實踐中去”的實踐論思想,是培養學生“創新實踐能力”的載體[2]。對模型的正確建立和求解是運籌學研究中的關鍵一步,是將實際問題、經驗、科學方法三者有機結合的創造性的工作[3]。
北京林業大學數學專業開設的運籌學課程是64學時,選用的教材是刁在筠等主編、高等教育出版社出版的《運籌學》[4]。受學時的限制,教師在講課時主要選講了線性規劃、整數規劃、非線性規劃、動態規劃、圖與網絡流、決策分析、對策論。以前,數學專業運籌學課程的教學主要是理論講解,沒有開設實驗課。但運籌學是一門應用的學科,在運籌學的教學過程中,不僅要講授理論知識,還要鍛煉學生建立模型、分析模型、求解模型的能力。因此,從 2017年開始,北京林業大學在數學專業開設的運籌學課程中增設了實踐教學環節,主要是講授Matlab程序的編寫[5-6]。通過增設實踐教學環節,讓學生親自上機實習,使他們能多角度、多方法地解決實際問題,既鞏固了理論知識,又提高了分析解決問題的能力。
二、運籌學課程增設實踐教學環節的具體實踐
增設實踐教學環節的主要手段是開設實驗課。實驗課的主要內容是根據實際問題建立模型、分析模型,并借助計算機軟件求解模型。目前比較成熟的求解運籌學模型的軟件有Matlab、Lingo、Lindo、WinQSB以及Excel。在教學實踐中,我們沒有單獨設立實驗課,而是將實驗課穿插在理論課里講解,主要是給學生介紹用Matlab軟件求解運籌學模型,主要設計了線性規劃(單純形法)、整數規劃(分支定界法)、非線性規劃(0.618法、Newton法等)的實驗課。對于非線性規劃問題,在用Matlab軟件進行求解時需要編程來實現,這特別有助于學生理解相應的算法。學生通過編寫程序,能夠很好地理解各種求解非線性規劃問題的算法的主要思想,更好地體會算法的精髓。另外,在對非線性規劃問題所涉及的算法進行考核時,我們發現這些算法不適合卷面考試,因為給定一個非線性規劃問題讓學生手動求解,步驟多、計算量大,容易出錯。如果通過讓學生編寫程序來實現,不僅能加深學生對算法的理解,還能提高學生借助計算機解決實際問題的能力。
(一)實驗課內容
實踐教學環節主要采取課上講算法、課下實踐,然后再回到課上討論的形式。在每個章節,教師講完各種算法之后,給出相應模型的案例,要求學生自己分析問題,建立模型,并編寫程序解決問題,然后再回到課上運行程序,對出現的問題進行討論,教師給予必要的指導。實驗課的基本內容如表1所示。
每個實驗包括基礎練習和應用實踐兩部分。基礎練習部分在課內完成,實踐部分在課外完成,上交實驗作業。實驗作業包括實驗報告、程序源代碼(要求能夠運行無誤),程序源代碼所用語言為Matlab。實驗作業上交后,學生要在實驗課上運行程序源代碼,對出現的問題進行討論,任課教師給予必要的指導。另外,實驗報告必須寫出詳細的建模步驟及對程序運行結果的分析、決策。實驗報告是期末考核的重要依據,解決了非線性規劃問題的算法不適合作為卷面考試的問題,具體安排如下文所示。
實驗1:線性規劃
實驗目的:(1)熟悉Matlab的基本操作方法,掌握在Matlab環境下求解簡單的線性規劃模型的方法。(2)掌握線性規劃模型解的情況。
實驗2:整數規劃
實驗目的:(1)掌握整數規劃的基本概念及數學模型。(2)掌握Matlab中操作函數的使用方法。
實驗3:非線性規劃
實驗目的:(1)掌握非線性規劃問題的算法原理。(2)能夠熟練地用Matlab語言編寫各個算法(0.618法、Newton法)的程序。
實驗4:綜合實驗
實驗目的:(1)對于實際案例,能夠分析建模。(2)根據所建立的模型,借助計算機軟件進行求解。
(二)實驗結果核驗
實驗結果核驗是分組實現的。我們將數學系16級2個班的學生分成8個組,平均每個組6~7個成員。在實驗課上,每個組指派一名成員來講解和運行程序。
(三)實驗案例
用分支定界法求解整數規劃:
(四)實驗課的效果及反思
從實驗案例我們可以看出,對于同一個模型,不同組別運行的程序是不同的。通過相互交流,學生可以掌握Matlab在編程時的不同處理手段。在這個案例中我們也發現了一些問題,例如,隨著計算機軟件不斷更新換代,Matlab也在不斷更新軟件包,在Matlab2014及以上版本都可以用命令函數intlinprog直接求解整數規劃模型,此次8個組中有7個組提交的實驗報告達不到實驗的效果,所以在以后的實驗課上我們應該對學生提出明確的要求。
我們通過對數學專業運籌學課程進行改革,增設實驗課,使學生掌握運籌學各主要分支的模型、基本概念與理論、主要算法與應用,并能夠在計算機上應用Matlab軟件包熟練地操作解決一些實際應用案例,切實提高學生動手解決實際問題的能力,從而為學生進一步的學習打下堅實的基礎。
三、總結
在運籌學課程增設實踐教學環節,增加實驗課,能加深學生對理論知識的理解,讓學生自己參與到分析問題、建立模型、求解模型到結果分析的整個過程中,從而培養學生解決實際問題的能力,達到培養應用型人才的教學目的。
[ 參 考 文 獻 ]
[1] 《運籌學》教材編寫組編.運籌學[M].3版.北京:清華大學出版社,2005.
[2] 張杰,郭麗杰,周碩,等.運籌學模型及其應用[M].北京:清華大學出版社,2012.
[3] 李珍萍,等.管理運籌學[M].北京:中國人民大學出版社,2011.
[4] 刁在筠,劉桂真,宿潔,等.運籌學[M].3版.北京:高等教育出版社,2007.
[5] 卓金武,等.MATLAB 在數學建模中的應用[M].2版.北京:北京航空航天大學出版社,2014.
[6] 余勝威.MATLAB 數學建模經典案例實戰[M].北京:清華大學出版社,2015.
[責任編輯:龐丹丹]