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