自動排課算法分析
本文關(guān)鍵詞:排課算法,由筆耕文化傳播整理發(fā)布。
自動排課算法分析
1 緒 論
1.1課題背景與研究意義
1.2課題的應(yīng)用領(lǐng)域
1.3 課題的現(xiàn)狀
1.4解決NP問題的幾種算法及其比較
2 目前流行的幾種排課算法的介紹
2.1. 自動排課算法
2.2 基于優(yōu)先級的排課算法
3 基于時間片優(yōu)先級排課算法描述與分析
3.1排課中的基本原則
3.2排課的基本要求
3.3基于時間片優(yōu)先級排課算法描述
3.4算法分析
參 考 資 料
1 緒 論
1課題背景與研究意義
排課問題早在70年代就證明是一個NP完全問題,即算法的計算時間是呈指數(shù)增長的,這一論斷確立了排課問題的理論深度。對于NP問題完全問題目前在數(shù)學(xué)上是沒有一個通用的算法能夠很好地解決。然而很多NP完全問題目具有很重要的實際意義,例如。大家熟悉地路由算法就是很典型的一個NP完全問題,路由要在從多的節(jié)點中找出最短路徑完成信息的傳遞。既然都是NP完全問題,那么很多路由算法就可以運用到解決排課問題上,如Dijkstra算法、節(jié)點子樹剪枝構(gòu)造網(wǎng)絡(luò)最短路徑法等等。
目前大家對NP 完全問題研究的主要思想是如何降低其計算復(fù)雜度。即利用一個近似算法來代替,力爭使得解決問題的時間從指數(shù)增長化簡到多項式增長。結(jié)合到課表問題就是建立一個合適的現(xiàn)實簡約模型,利用該簡約模型能夠大大降低算法的復(fù)雜度,便于程序?qū)崿F(xiàn),這是解決排課問題一個很多的思路。
在高等院校中,培養(yǎng)學(xué)生的主要途徑是教學(xué)。在教學(xué)活動中,有一系列管理工作,其中,教學(xué)計劃的實施是一個重要的教學(xué)環(huán)節(jié)。每學(xué)期管理人員都要整理教學(xué)計劃,根據(jù)教學(xué)計劃下達(dá)教學(xué)任務(wù)書,然后根據(jù)教學(xué)任務(wù)書編排課程表。在這些教學(xué)調(diào)度工作中,既有大量繁瑣的數(shù)據(jù)整理工作,更有嚴(yán)謹(jǐn)思維的腦力勞動,還要填寫大量的表格。因此工作非常繁重。
加之,隨著教學(xué)改革的進(jìn)行及“211”工程的實施,新的教育體制對課表的編排提出了更高的要求。手工排課時,信息的上通下達(dá)是極其麻煩的,而采用計算機(jī)排課,教學(xué)中的信息可以一目了然,對于優(yōu)化學(xué)生的學(xué)習(xí)進(jìn)程,評估每位教師對教學(xué)的貢獻(xiàn),領(lǐng)導(dǎo)合理決策等都具有重要的意義,必將會大大推進(jìn)教學(xué)的良性循環(huán)。
2課題的應(yīng)用領(lǐng)域
本課題的研究對開發(fā)高校排課系統(tǒng)有指導(dǎo)作用。
排課問題的核心為多維資源的沖突與搶占,對其研究對類似的問題(特別是與時間表有關(guān)的問題:如考試排考場問題、電影院排座問題、航空航線問題)也是個參考。
3 課題的現(xiàn)狀
年代末,國外就有人開始研究課表編排問題。1962年,Gotlieb曾提出了一個課表問題的數(shù)學(xué)模型,并利用匈牙利算法解決了三維線性運輸問題。次后,人們對課表問題的算法、解的存在性等問題做了很多深入探討。但是大多數(shù)文獻(xiàn)所用的數(shù)學(xué)模型都是Gotlieb的數(shù)學(xué)模型的簡化或補(bǔ)充,而至今還沒有一個可行的算法來解決課表問題。
近40年來,人們對課表問題的計算機(jī)解法做了許多嘗試。其中,課表編排的整數(shù)規(guī)劃模型將問題歸結(jié)為求一組0-1變量的解,但是其計算量非常大。解決0-1線性優(yōu)化問題的分支一定界技術(shù)卻只適用也規(guī)模較小的課表編排,Mihoc和Balas(1965)將課表公式化為一個優(yōu)化問題,Krawczk則提出一種線性編程的方法。Junginger將課表問題簡化為三維運輸問題,而Tripathy則把課表問題視作整數(shù)線性編程問題并提出了大學(xué)課表的數(shù)學(xué)模型。
此外,有些文獻(xiàn)試圖從圖論的角度來求解排課表的問題,但是圖的染色問題也是NP完全問題,只有在極為簡單的情況下才可以將課表編排轉(zhuǎn)化為二部圖匹配問題,這樣的數(shù)學(xué)模型與實際相差太遠(yuǎn),所以對于大多數(shù)學(xué)校的課表編排問題來說沒有實用價值。
進(jìn)入九十年代以后,國外對課表問題的研究仍然十分活躍。比較有代表的有印度的Vastapur大學(xué)管理學(xué)院的ArabindaTripathy、加拿大Montreal大學(xué)的Jean Aubin和Jacques Ferland等。目前,解決課表方法的問題有:模擬手工排課法,圖論方法,拉格朗日法,二次分配型法等多種方法。由于課表約束復(fù)雜,用數(shù)學(xué)方法進(jìn)行描述時往往導(dǎo)致問題規(guī)模劇烈增大,這已經(jīng)成為應(yīng)用數(shù)學(xué)編程解決課表問題的巨大障礙。國外的研究表明,解決大規(guī)模課表編排問題單純靠數(shù)學(xué)方法是行不通的,而利用運籌學(xué)中分層規(guī)劃的思想將問題分解,將是一個有希望得到成功的辦法。
在國內(nèi),對課表問題的研究開始于80年代初期、具有代表性的有:南京工學(xué)院的UTSS(A University Timetable Scheduling System)系統(tǒng),清華大學(xué)的TISER(Timetable SchedulER)系統(tǒng),大連理工大學(xué)的智能教學(xué)組織管理與課程調(diào)度等,這些系統(tǒng)大多數(shù)都是模擬手工排課過程,以“班”為單位,運用啟發(fā)式函數(shù)來進(jìn)行編排的。但是這些系統(tǒng)課表編排系統(tǒng)往往比較依賴于各個學(xué)校的教學(xué)體制,不宜進(jìn)行大量推廣。
從實際使用的情況來看,國內(nèi)外研制開發(fā)的這些軟件系統(tǒng)在實用性上仍不盡如人意。一方面原因是作為一個很復(fù)雜的系統(tǒng),排課要想面面俱到是一件很困難的事;另一方面每個學(xué)校由于其各自的特殊性,自動排課軟件很難普遍實用,特別是在調(diào)度的過程中一個很小的變動,要引起全部課程的大調(diào)整,這意味著全校課程大變動,在實際的應(yīng)用中這是很難實現(xiàn)的事。
4解決NP問題的幾種算法及其比較
解決NP完全問題只能依靠近似算法,所以下面介紹幾種常用算法的設(shè)計思想,包括動態(tài)規(guī)劃、貪心算法、回溯法等。
動態(tài)規(guī)劃法是將求解的問題一層一層地分解成一級一級、規(guī)模逐步縮小的子問題,直到可以直接求出其解的子問題為止。分解成的所有子問題按層次關(guān)系構(gòu)成一顆子問題樹。樹根是原問題。原問題的解依賴于子問題樹中所有子問題的解。動態(tài)規(guī)劃算法通常用于求一個問題在某種意義下的最優(yōu)解。設(shè)計一個動態(tài)規(guī)劃算法,通常可按以下幾個步驟進(jìn)行:
1. 分析最優(yōu)解的性質(zhì),并刻劃其結(jié)構(gòu)特征。
2. 遞歸的定義最優(yōu)解。
3. 以自底向上的方式計算出最優(yōu)解。
4. 根據(jù)計算最優(yōu)解時得到的信息,構(gòu)造一個最優(yōu)解。
步驟1~3是動態(tài)規(guī)劃算法的基本步驟。在只需要求出最優(yōu)解的情形,步驟4可以省去。若需要求出問題的一個最優(yōu)解,則必須執(zhí)行步驟4。此時,在步驟3中計算最優(yōu)解時,通常需記錄更多的信息,以便在步驟4中,根據(jù)所記錄的信息,快速地構(gòu)造出一個最優(yōu)解。
(二)貪心算法
當(dāng)一個問題具有最優(yōu)子結(jié)構(gòu)性質(zhì)時,我們會想到用動態(tài)規(guī)劃法去解它,但有時會有更簡單、更有效的算法,即貪心算法。顧名思義,貪心算法總是做出在當(dāng)前看來最好的選擇。也就是說貪心算法并不是整體最優(yōu)上加以考慮,他所作出的選擇只是在某種意義上的局部最優(yōu)的選擇。雖然貪心算法不是對所有問題都能得到整體最優(yōu)解,但對范圍相當(dāng)廣的許多問題它能產(chǎn)生整體最優(yōu)解,如圖的算法中單源最短路徑問題,最小支撐樹問題等。在一些情況下,即使貪心算法不能得到整體最優(yōu)解,但其最終結(jié)果卻是最優(yōu)解的很好的近似解。
在貪心算法中較為有名的算法是Dijkstra算法。它作為路由算法用來尋求兩個節(jié)點間的最短路徑。Dijkstra算法的思想是:假若G有n個頂點,于是我們總共需要求出n-1條最短路徑,求解的方法是:初試,寫出V0(始頂點)到各頂點(終頂點)的路徑長度,或有路徑,則令路徑的長度為邊上的權(quán)值;或無路經(jīng),則令為∞。再按長度的遞增順序生成每條最短路徑。事實上生成最短路徑的過程就是不斷地在始頂點V何終頂點W間加入中間點的過程,因為在每生成了一條最短路徑后,,就有一個該路徑的終頂點U,那么那些還未生成最短路徑的路徑就會由于經(jīng)過U而比原來的路徑短,于是就讓它經(jīng)過U。
(三)回溯法
回溯法有“通用的解題法”之稱。用它可以求出問題的所有解或任一解。概括地說,回溯法是一個既帶有系統(tǒng)性又帶有跳躍性的搜索法。它在包含問題所有解的一顆狀態(tài)空間樹上,按照深度優(yōu)先的策略,從根出發(fā)進(jìn)行搜索。搜索每到達(dá)狀態(tài)空間樹的一個節(jié)點,總是先判斷以該節(jié)點為根的子樹是否肯定不包含問題的解。如果肯定不包含,則跳過對該子樹的系統(tǒng)搜索,一層一層地向它的祖先節(jié)點繼續(xù)搜索,直到遇到一個還有未被搜索過的兒子的節(jié)點,才轉(zhuǎn)向該節(jié)點的一個未曾搜索過的兒子節(jié)點繼續(xù)搜索;否則,進(jìn)入子樹,繼續(xù)按深度優(yōu)先的策略進(jìn)行搜索。回溯法在用來求問題的所有解時,要回溯到根,且根的所有兒子都已被搜索過才結(jié)束;而在用來求問題的任一解時,只要搜索到問題的一個解就可結(jié)束。
2 目前流行的幾種排課算法的介紹
2.1. 自動排課算法
1 .問題的描述
我們討論的自動排課問題的簡化描述如下:
設(shè)要安排的課程為{ C1 , C2 , ., Cn} ,課程總數(shù)為n , 而各門課程每周安排次數(shù)(每次為連續(xù)的2 學(xué)時) 為{ N1 , N2 , ., Nn} ;每周教學(xué)日共5 天,即星期一~ 星期五;每個教學(xué)日最多安排4 次課程教學(xué),即1 ~ 2 節(jié)、3 ~ 4 節(jié)、5 ~ 6 節(jié)和7 ~ 8 節(jié)(以下分別稱第1 、2 、3 、4 時間段) . 在這種假設(shè)下,顯然每周的教學(xué)總時間段數(shù)為5 ×4 = 20 ,并存在以下約束關(guān)系:
n ≤20 , (1)
N = 6n, i =1, Ni ≤20. (2)
自動排課問題是:設(shè)計適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)和算法, 以確定{ C1 , C2 , ., Cn } 中每個課程的教學(xué)應(yīng)占據(jù)的時間段,并且保證任何一個時間段僅由一門課程占據(jù).
2 .主要數(shù)據(jù)結(jié)構(gòu)
對于每一門課程,分配2 個字節(jié)的“時間段分配字”(無符號整數(shù)) :{ T1 , T2 , ., Tn} . 其中任何一個時間段分配字(假設(shè)為Ti ) 都具有如下格式:
Ti 的數(shù)據(jù)類型C 語言格式定義為:unsigned int . Ti 的最高位是該課程目前是否是有效的標(biāo)志,0 表示有效,1 表示無效(如停課等) ;其它各位稱為課程分配位, 每個課程分配位占連續(xù)的3 個位(bit) ,表示某教學(xué)日(星期一~ 星期五) 安排該課程的時間段的值,0 表示當(dāng)日未安排,1 ~ 4 表示所安排的相應(yīng)的時間段(超過4 的值無效) .
在這種設(shè)計下, 有效的時間段分配字的值應(yīng)小于32 768 (十六進(jìn)制8000) , 而大于等于32 768 的時間段分配字對應(yīng)于那些當(dāng)前無效的課程(既使課程分配位已設(shè)置好也如此) , 因此很容易實現(xiàn)停課/ 開課處理.
3 .排課算法
在上述假設(shè)下,自動排課算法的目標(biāo)就是確定{ C1 , C2 , ., Cn} 所對應(yīng)的{ T1 , T2 , ., Tn} .
從安排的可能性上看,共有20 !/ (20 - N) !種排法( N 的含義見(2) 式) . 如果有4 門課,每門課一周上2 次,則N = 8 ,這8 次課可能的安排方法就會有20 !/ (20 - 8) ! = 5 079 110 400 ,即50 多億種. 如果毫無原則地在其中選擇一種方案,將會耗費巨大量的時間. 所以排課的前提是必須有一個確定的排課原則. 我們采用輪轉(zhuǎn)分配法作為排課原則:從星期一第1 時間段開始按{ C1 , C2 , ., Cn} 中所列順序安排完各門課程之后(每門課安排1 次) ,再按該順序繼續(xù)向后面的時間段進(jìn)行安排,直到所有課程的開課次數(shù)符合{ N1 , N2 , ., Nn} 中給定的值為止. 在算法描述中將用{ C[1 ] , C[2 ] , ., C[ n ]} 表示{ C1 , C2 , ., Cn} , 對{ N1 , N2 , ., Nn}
和{ T1 , T2 , ., Tn} 也采用同樣的表示法.
算法1 排課算法
輸入 { C1 , C2 , ., Cn} 、{ N1 , N2 , ., Nn} .
輸出 { T1 , T2 , ., Tn} .
① 初始化:
星期值week = 1
時間段值segment = 1
{ T [1 ] , T [2 ] , ., T [ n ]} 中各時間段分配字清零
② 新一輪掃描課程:
置繼續(xù)處理標(biāo)志flag = 0
對課程索引值c-index = 1 ,2 , ., n 進(jìn)行以下操作:
如果N[c-index ] > 0 ,則做以下操作:
把segment 的值寫入T[c-index ]的第(week - 1) 3 3~week 3 3 - 1 位中 N[c-index ]的值減1
如果N[c-index ] > 0 ,則置flag = 1
如果week = 5 并且segment = 4
則:置flag = 1 并轉(zhuǎn)③
否則:如果segment = 4
則:置segment = 1 且week 增1
否則:segment 增1
檢測是否已全部安排完畢:
如果flag = 1
則:轉(zhuǎn)②
否則:轉(zhuǎn)③
③ 檢測是否成功:
如果flag = 1
則:開課次數(shù)過多
否則:課程安排成功
④ 算法結(jié)束
顯然,本算法的時間復(fù)雜度為O ( N) ( N 為每周總開課次數(shù), 見(2) 式) , 而存儲時間段分配字所用空間為2 n 個字節(jié)( n 為課程門數(shù)) .
4 .沖突檢測算法
有時在自動排課完畢后,需要人工調(diào)整某些課程的安排時間,如把第i 門課程在人工干預(yù)下改成星期數(shù)為week 、時間段為segment 的位置,則根據(jù)上述數(shù)據(jù)結(jié)構(gòu)需做如下運算:
T [ i ] = T [ i ] &(~ (7 << (week - 1) * 3) ) + (segment << (week - 1)*3) ,
其中&、~ 和n 分別為按位與、按位取反和按位左移運算符(下同) .
問題是如何判斷是否已有其它課程安排在同一個時間段上. 設(shè)人工調(diào)整的時間段分配
字為T[1 ] ,則該問題描述為:判斷時間段分配字T [1 ] 與{ T[2 ] , T [3 ] , ., T [ n ]} 中的某個分配字是否存在相同課程分配位上的相等的非零時間段值, 或者說{ T [2 ] , T [3 ] , .,T[ n ]} 中是否存在與T [1 ] 沖突的時間段分配字. 為簡化起見,在以下算法描述中假設(shè)所有時間段分配字的最高位為0.
算法2 沖突檢測算法
輸入 T1 和{ T2 , ., Tn} .
輸出 與T1 沖突的{ T2 , ., Tn} 中的時間段分配字.
① 對c-index = 2 ,3 , ., n 做以下操作:
初始化屏蔽字mask = 7
對星期值week = 1 ,2 ,3 ,4 ,5 做以下操作:
如果T[1] & mask 等于T[c-index] & mask ,而且二者不等于0
則: T[ 1 ]與T[c-index ]相沖突,轉(zhuǎn)①
mask 左移3 位(或乘8)
② 算法結(jié)束
本算法時間復(fù)雜度為O ( n) ( n 為課程門數(shù))
5.算法分析
此算法以課程為中心,進(jìn)行搜索匹配,取最先匹配的值;具有占有空間少,運算速度快的特點。但其未對數(shù)據(jù)進(jìn)行擇優(yōu)選取,所以不能對教學(xué)資源(教師、教室)合理分配,也不能滿足一些特殊要求(比如有些老師喜歡上午上課,有些老師偏向于集中式上課;有些課程安排到上午會更合適些,有些課程不能安排到上午等)。
2.2 基于優(yōu)先級的排課算法
從數(shù)學(xué)上講, 排課問題是一個在時間、教師、學(xué)生和教室四維空間, 以教學(xué)計劃和各種特殊要求為約束條件的組合規(guī)劃問題。其實質(zhì)就是解決各因素之間的沖突。在設(shè)計算法時, 為了降低課程調(diào)度的算法復(fù)雜性, 我們主要采用了化整為零的思想及優(yōu)先級算法:
1.排課的預(yù)處理
1.等價類的劃分
將具有共同聽課對象的任務(wù)劃分在同一等價類中, 在每個等價類之間只存在地點上的沖突, 而沒有時間上的沖突。 然后按照的大小, 從大到小進(jìn)行處理。 等價類的劃分可以先按年級分, 然后再按系別分, 如下 所示:
聽課對象等價類的劃分
自控系機(jī)械系化工系管理系.
99 級N 1 子類1 子類2 子類3 子類4 .
98 級N 2 子類5 子類6 子類7 子類8 .
97 級N 3 子類9 子類10 子類11 子類12 .
96 級N 4 子類13 子類14 子類15 子類16 .
這樣, 先按年級分為四個類: 99 級(N 1) , 98 級(N 2) , 97 級(N 3) , 96 級(N 4) , 而對每一個等價類N 1、N 2、N 3、N 4 又可以按院系分為若干個子類, 然后對每個子類分別進(jìn)行排課處理, 這樣做就可以大大降低算法的復(fù)雜性
2.教室分類
為了合理使用教室, 我們采用了教室分類的辦法, 以便盡可能在課程編排過程中避免上課人數(shù)少的課程盲目強(qiáng)占容量大的教室現(xiàn)象。
首先將教室按照其類型分為若干個等價類, 如下所示,然后, 根據(jù)教室的容量再分別對每個教室等價類進(jìn)行劃分: 如分為0~ 30 人、30~ 60 人、60~90 人、90~ 120 人、120~ 180 人等若干種
教室等價類的劃分:
教室類型等價類R 教室類型等價類R
普通教室R1 聽力教授R5
投影教室R2 物理實驗室R6
多媒體教室R3 化學(xué)實驗教室R7
制圖教室R4 計算機(jī)實驗教學(xué)R8
3.時間預(yù)處理
1) 構(gòu)造時間模式庫
時間模式是根據(jù)教務(wù)人員的經(jīng)驗, 為各種周學(xué)時數(shù)不同的課程指定的一種時間組合方式.例如, 一門課程的周學(xué)時數(shù)為4, 那么它的時間組合方式可以有:“11”,“41”; 表示該課程一周上兩次, 分別為周一的12 節(jié)和周四的12 節(jié)L同時, 為了達(dá)到較好的上課效果, 也要對這些時間模式進(jìn)行分級.如下 所示
時間模式分級舉例
周學(xué)時優(yōu)先級周一周二周三周四周五
4 1 11 41
∶ ∶
4 2 22 43
: :
其中, 將周一至周五用數(shù)字1~ 5 表示, 上課節(jié)次: 12 節(jié)、34 節(jié)、56 節(jié)、78 節(jié)、晚12 節(jié)、晚34 節(jié)分別用數(shù)字1~ 6 表示。 例如數(shù)字“42”表示周四的34 節(jié)
這個時間單元。這樣, 對于每種周學(xué)時數(shù), 可以將所有合理的時間組合形式存入模式庫中。以便進(jìn)行時間處理時可以用時間模式庫中的各種模式進(jìn)行匹配。
2) 時間數(shù)組
為了表示班級、教師、教室的可排課時間, 分別為他們建立一維數(shù)組L例如, 某位教師的初始可排課時間數(shù)組為(123456 123456 123456 123456 123456)。 其中共有五組數(shù)據(jù), 分別表示一周中的五天; 而一組數(shù)據(jù)共有6 個字符“1、2、3、4、5、6”分別表示一天中的六個時間單元。 當(dāng)為某位教師分配時間后, 相應(yīng)的那位字符就置為0L 例如, 某位教師的可排課時間數(shù)組為( 020456 103456 003456 120456 023456) , 則表示這位教師在周一的12 節(jié)和56 節(jié), 周二的34 節(jié), 周三的12 節(jié)和34 節(jié), 周四的56 節(jié), 周五的12 節(jié)已經(jīng)安排了課程, 如果要再安排課程的話, 就應(yīng)該安排在非0 的時間單元L對于班級和教室也可以進(jìn)行同樣的處理, 分別標(biāo)出可排課時間。
2. 每一子類的排課處理
在對每個子類的排課處理中, 我們結(jié)合了分治法、貪婪法、回溯法三者的思想L首先, 根據(jù)分治法的思想把整個排課過程分成時間分配和教室分配兩個階段。然后, 依據(jù)貪婪法的算法思想, 在時間分配時,總是在尚未分配的時間單元中選擇上課效果最好的
單元。而在時間分配發(fā)生死鎖時, 會向上回溯搜索到發(fā)生沖突的最近一個記錄, 然后對它進(jìn)行重排以解決沖突。 具體處理過程如下:
1.設(shè)定優(yōu)先級
對子類中的課程計算優(yōu)先級L設(shè)優(yōu)先級函數(shù)為:
D (g ) = J (g )*C1 + T (g ) * C2 + P (g ) * C3 ( 1 )
其中, J (g ) 表示課程級別, 選修課的課程級別設(shè)置為1, 必修課的課程級別設(shè)置為2; T (g ) 表示該課程的周學(xué)時數(shù); P (g ) 表示該課程的參與人數(shù); C1、C2、
C3 是可以調(diào)整的參數(shù)。 由式(1) 可以看出課程級別越高、周學(xué)時越多、參加人數(shù)越多的課程, 其D (g )值越大, 其優(yōu)先級也越高; 反之, D (g ) 值越小, 其優(yōu)先級越低。這樣, 就可以根據(jù)計算的優(yōu)先級的高低對課程進(jìn)行排序, 優(yōu)先級高的優(yōu)先調(diào)度。
2.查詢可用時間單元
第1 步, 初始化某門課程的最大可安排時間數(shù)組, 為( 123456 123456 123456 123456 123456)。第2 步, 找出參加該課程學(xué)習(xí)的所有班級。第3 步, 查詢每個班級的時間數(shù)組, 得到班級的已排課時間, 并將其與課程的最大時間數(shù)組相“與”, 從而得到該課程不能安排的時間單元。第4 步, 依次處理教師時間數(shù)組和相關(guān)教室時間數(shù)組, 這樣, 該課程最終的可安排時間數(shù)組就是班級、教師、教室可排課時
間的交集。
3.查找適當(dāng)?shù)臅r間模式
找到可排課時間后, 就應(yīng)根據(jù)課程的周學(xué)時數(shù)在時間模式庫中匹配適當(dāng)?shù)臅r間模式。完成以上工作后, 就確定了課程的上課時間和地點。如果在處理中發(fā)生死鎖, 則可根據(jù)回溯法的思想向上回溯搜索到發(fā)生沖突的最近一個記錄, 然后對它進(jìn)行重排以解決死鎖, 如果仍不能解決死鎖問題, 則可以將該課程信息輸出到?jīng)_突列表中。
3. 人工干預(yù)的處理
計算機(jī)自動排課也需要進(jìn)行人工干預(yù), 以便可以使得各個高校能夠根據(jù)自己的具體要求對排課算法中的一些參數(shù)進(jìn)行設(shè)置和調(diào)整, 并對計算機(jī)排出的課表進(jìn)行調(diào)整L本算法所設(shè)計的人工干預(yù)過程有:
等價類劃分中參數(shù)的設(shè)置, 教室類型的設(shè)置, 時間模式庫的設(shè)置, 優(yōu)先級函數(shù)中參數(shù)的設(shè)置。用戶可以根據(jù)自己的具體要求對這些參數(shù)和庫進(jìn)行設(shè)置。另外,對于計算機(jī)排出的課程表, 用戶也可以通過人機(jī)交互進(jìn)行適當(dāng)調(diào)整, 從而得到用戶滿意的課程表。
4.性能分析
此算法對班級及教室劃分等價類,對學(xué)校資源進(jìn)行了合理的利用。但對一些特殊要求還是無法具體體現(xiàn)出來。
3 基于時間片優(yōu)先級排課算法描述與分析
排課問題實質(zhì)上是時間、教師、班級、教室、課程這五維關(guān)系的沖突問題,要合理的解決這個問題首先要了解排課中的一些基本原則以及排課的一些基本要求。
3.1排課中的基本原則
在課程的編排中應(yīng)遵循一定的規(guī)則, 只有按照基本規(guī)則來進(jìn)行課程的編排才能夠減少沖突的發(fā)生, 這些基本規(guī)則主要有以下幾條:
1) 同一班級的學(xué)生在同一時間(某些特定的選修課時間除外) 不能安排兩門課程
2) 同一教師在同一時間不能安排兩門課程
3) 同一教室在同一時間不能安排兩門課程
4) 同一時間安排的課程總數(shù)不能大于所能提供的教室總數(shù)
5) 某一課程參加學(xué)習(xí)的總?cè)藬?shù)不應(yīng)大于所安排教室的座位數(shù)
6) 所提供教室的屬性與課程所需教室的屬性一致
在時間、教師、班級、教室、課程這五維關(guān)系中, 時間、教師、班級三者之間存在著緊密關(guān)系。相對而言, 教室與它們關(guān)系就不那么密切。
3.2排課的基本要求
課程的安排不是任意的, 為了達(dá)到最好的教學(xué)效果應(yīng)遵循一定的要求。這些要求主要有:
1) 要盡量為所排課程安排上該類課效果最好的時間
2) 課程在一周上多次時, 要有一定的間隔性
3) 公共課等涉及面廣、學(xué)時多的課程應(yīng)優(yōu)先處理
4) 對同一教師, 同一上課對象應(yīng)盡量選擇相對固定的幾個教室
5) 對同一個班級的課程應(yīng)選擇相對固定的教室
6) 連著的課的教室選擇不應(yīng)相隔太遠(yuǎn)
7)同一天有幾門課時盡量把課分散
8) 優(yōu)先滿足一些特殊要求(比如有些教室喜歡上上午的課,可以優(yōu)先滿足)
3.3基于時間片優(yōu)先級排課算法描述
在描述算法之前我們把一些概念先講清楚。在這里我們把從行政角度分的班叫自然班,把在同一個教室上課的班叫做排課班。在大學(xué)里有些公共課是幾個排課班通過多媒體來一起上的,我們把這個排課班的總和叫做公共班。班級、教室、教師、課程都維護(hù)著自己的一張課表。對課表的每個表元(如星期一的第一節(jié)課)在這里稱做時間片。
基于時間片優(yōu)先級排課算法以排課班為單位,圍繞著各對像(自然班、教室、教室)的時間表選擇合適的時間片。
本文關(guān)鍵詞:排課算法,由筆耕文化傳播整理發(fā)布。
本文編號:42885
本文鏈接:http://sikaile.net/wenshubaike/xindetihui/42885.html