【摘 要】本文基于經典的優化算法——遺傳算法,對高中生合理安排自習的問題進行了問題的建立與優化結果的實現。在得到可靠的優化結果后建立了更為直觀的可視化界面,可以更為方便的對高中課程進行安排,從而提高了高中生的自習效率。
【關鍵詞】優化;遺傳算法;matlab
1.前言
在緊張的高中學習生活中,合理安排自習時間是非常必要的。在晚自習中,我經常會遇到在做一門課程的過程中遇到課間,因此學習的連貫性無法得到保障。也因此經常會出現正在思考一道難題而思路被打斷,這對于學習效率的提升是沒有好處的。但是,只要我們提前預計好每一門課程的學習時間,是可以通過合理的途徑安排好不同的課程作業的完成順序,這樣便能夠減少學習時間的“碎片化”,同時還可以進行一些細節的規劃。筆者利用平日里自學的算法方面的知識,在老師的幫助下學習了一些關于matlab的編程技巧,進而對這個與高中學習密切相關的問題進行了研究。
2.遺傳模型的建立
遺傳算法是一類借鑒生物界自然選擇機制的隨機搜索算法,與傳統搜索算法不同,遺傳算法從隨機產生的初始解開始搜索,通過一定的選擇、交叉、好壞用適應度值來衡量,從上一代選出一定數量的優秀個體,同時產生部分變異形成下一代群體。
首先是編碼問題,在本文中,主要研究的課程安排為我們平日里學習的九門:語文,數學,英語,物理,化學,生物,政治,歷史,地理。為了方便編程計算,將其簡稱為課程1~9,其對應關系為:語文1,數學2,英語3,物理4,化學5,生物6,政治7,歷史8,地理9。
每個個體便是由九門課程的不同排列順序組成,例如123456789便代表自習課上按照語文、數學順序至地理的方式來進行學習,由于每一個位置都有不同的可能性,因此最多會有種可能性,我們需要針對問題本身對這些可能性進行比較,得到最優的結果。
適應度的設置主要由以下幾個部分組成
1)由于可能會有課程被課間分成兩部分,取時間較小的一部分為自習碎片時間,由2~3節自習課產生的碎片時間總和來考慮該個體是否適應度高。
2)為了保證知識的連貫性,根據部分科目的相似性,將優先考慮幾種課程連續學習的個體,例如:語文同英語連續學習,數學與物理連續學習,這種個體的適應度也將提高。
3)對于大多數理科生來說,文科一直是比較頭疼的問題,因此最好將政治、歷史與地理分開自習,即盡量避免其連續學習的情況。
交叉操作是指從種群中隨機抽取兩個個體,在任意兩個位置中間進行編碼的互換,這樣可以保證個體的多樣性,為提高我們優化的效率提供保證。變異操作也是如此,我們將隨機選取一個個體并將其任意兩個位置上的編碼進行互換,類似于染色體的變異進程。
3.實際問題的建立與求解
基于我之前的立意以及自己的實際學習情況,要利用遺傳算法解決的問題具體描述如下:
假定每一節自習課的時長為50分鐘,還未進行自習,為了模擬時間的真實性,預計課程學習時間分別為:語文21分鐘,數學17分鐘,英語20分鐘,物理21分鐘,化學13分鐘,生物11分鐘,政治17分鐘,歷史10分鐘,地理5分鐘。
遺傳算法的設定條件為:
1)種群大小為30。
2)交叉概率為0.3。
3)變異概率為0.01。
4)最大遺傳代數為100。
代入編寫好的matlab程序進行求解,得到結果如下:
1.根據時間碎片隨遺傳迭代次數變化圖,我們發現從初始生成的種群已經有較為優異的個體(時間碎片僅有3分鐘),但是隨著幾十步的遺傳迭代優化,碎片時間進一步下降到1分鐘,這幾乎等于沒有受到課間的干擾,極大的增加了學習效率。
2.最佳的自習排列順序經過優化,得到的最佳順序是:語文,英語,歷史,數學,政治,生物,物理,地理,化學從上面結果可以看出,優化后結果還是比較理想的,語文與英語進行了連續學習,這樣可以保持一個較好的語言學習思維,同時政治、歷史、地理分開進行學習,達到了優化預期的效果。
4.程序的可視化
程序的主體已經基本上完成了,但是如果在平時的學習中每次都要運行這個程序進行計算的話會非常麻煩,因此我還建立了一個簡易的帶有界面的小程序,這樣可以方便我們即時進行查詢與參考。
利用matlab的graphic user interface(用戶界面程序)工具包, 可以在程序界面左邊的空白欄分別輸入九門課程的預計學習時間,輸入完畢后點擊按鈕“讓我學習更有效率!”便可自行調用優化程序進行計算,計算結果將在右邊欄“建議學習順序”進行顯示。由于遺傳算法的穩定性,其可以保證顯示的學習順序基本上滿足我們的優化要求。
5.總結
本文基于遺傳算法的思想,針對我們高中生平日里最重視的自習時間安排進行了合理的優化。“工欲善其事,必先利其器”,我們只有掌握了科學的方法,才能讓我們的自習不會變得盲目,從而提高我們的學習效率。
未來這個方法還可以在幾個方面進行改進,從而更加貼近我們的高中學習狀況,改進的方法主要有:
1)由于學習時間的不確定性,程序可以增加一個功能:實際完成了幾門課程的學習后可以進行一個更新,重新進行自習課程的優化,這樣可以避免由于偶然性而導致學習計劃出現問題,增加可實現性。
2)可以將每門課程的學習時間分為做作業與預習,可以在所有作業完成以后,再額外進行預習時間的安排,這樣可以保證課程作業的按時上交。
這次想法的實現大大的提升了我的邏輯思維能力,同時也培養了我的科學研究精神。智慧來源于生活,有時候多留心生活,勤思考的確會有很大的收獲。
【作者簡介】
李梓睿(1999年-),男,湖南長沙人,漢族,研究方向:理科。