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