目前流行的幾種排課算法的介紹_第1頁
目前流行的幾種排課算法的介紹_第2頁
目前流行的幾種排課算法的介紹_第3頁
目前流行的幾種排課算法的介紹_第4頁
目前流行的幾種排課算法的介紹_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、2 目前流行的幾種排課算法的介紹21. 自動排課算法1 .問題的描述我們討論的自動排課問題的簡化描述如下:1 , C2 , ., Cn ,課程總數(shù)為n , 而各門課程每周安排次數(shù)(每次為連續(xù)的2 學(xué)時) 為 N1 , N2 , ., Nn 教學(xué)日最多安排4 次課程教學(xué),即1 2 節(jié)、3 4 節(jié)、5 6 節(jié)和7 8 節(jié)(以下分別稱第1 、2 、種假設(shè)下,顯然每周的教學(xué)總時間段數(shù)為5 ×4 = 20 ,并存在以下約束關(guān)系:n 20 , (1)? N = 6n, i =1, Ni 20. (2)適當?shù)臄?shù)據(jù)結(jié)構(gòu)和算法, 以確定 C1 , C2 , ., Cn 中每個課程的教學(xué)應(yīng)占據(jù)的時間段,

2、并且保證任何一個時據(jù).2 .主要數(shù)據(jù)結(jié)構(gòu)配2 個字節(jié)的“時間段分配字”(無符號整數(shù)) : T1 , T2 , ., Tn . 其中任何一個時間段分配字(假設(shè)為Ti 格式定義為:unsigned int . Ti 的最高位是該課程目前是否是有效的標志,0 表示有效,1 表示無效(如停課等)占連續(xù)的3 個位(bit) ,表示某教學(xué)日(星期一 星期五) 安排該課程的時間段的值,0 表示當日未安排,1 時間段(超過4 的值無效) .時間段分配字的值應(yīng)小于32 768 (十六進制8000) , 而大于等于32 768 的時間段分配字對應(yīng)于那些當前無配位已設(shè)置好也如此) , 因此很容易實現(xiàn)停課/ 開課處理

3、.3 .排課算法在上述假設(shè)下,自動排課算法的目標就是確定 C1 , C2 , ., Cn 所對應(yīng)的 T1 , T2 , ., Tn .共有(即有A(20,(N-20))20 !/ (20 - N) !種排法( N 的含義見(2) 式) . 如果有4 門課,每門課一周上就會有20 !/ (20 - 8) ! = 5 079 110 400 ,即50 多億種. 如果毫無原則地在其中選擇一種方案,將會耗費巨確定的排課原則. 我們采用輪轉(zhuǎn)分配法作為排課原則:從星期一第1 時間段開始按 C1 , C2 , ., Cn 中所列 ,再按該順序繼續(xù)向后面的時間段進行安排,直到所有課程的開課次數(shù)符合 N1 ,

4、N2 , ., Nn 中給定的值用 C1 , C2 , ., 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ù)處理標志flag = 0對課程索引值c-index = 1 ,2 , ., n 進行以下操作:如果Nc-index &g

5、t; 0 ,則做以下操作:把segment 的值寫入Tc-index 的第(week - 1) 3 3week 3 3 - 1 位中 Nc-index 的值減如果Nc-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) 式

6、) , 而存儲時間段分配字所用空間為2 n 個字節(jié)( n4 .沖突檢測算法后,需要人工調(diào)整某些課程的安排時間,如把第i 門課程在人工干預(yù)下改成星期數(shù)為week 、時間段為segment據(jù)結(jié)構(gòu)需做如下運算:T i = T i &( (7 << (week - 1) * 3) ) + (segment << (week - 1)*3) ,其中&、 和n 分別為按位與、按位取反和按位左移運算符(下同) .問題是如何判斷是否已有其它課程安排在同一個時間段上. 設(shè)人工調(diào)整的時間段分配描述為:判斷時間段分配字T 1 與 T2 , T 3 , ., T n 中的某個分

7、配字是否存在相同課程分配, 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 做以下操作:如果T1 & mask 等于Tc-index & mask ,而且二者不等于0則: T 1 與Tc-index 相沖突,轉(zhuǎn)mask 左移3 位(或乘8) 算法結(jié)束本算法時間復(fù)

8、雜度為O ( n) ( n 為課程門數(shù))5.算法分析,進行搜索匹配,取最先匹配的值;具有占有空間少,運算速度快的特點。但其未對數(shù)據(jù)進行擇優(yōu)選取,所也不能滿足一些特殊要求(比如有些老師喜歡上午上課,有些老師偏向于集中式上課;有些課程安排到上程不能安排到上午等)。22 基于優(yōu)先級的排課算法是一個在時間、教師、學(xué)生和教室四維空間, 以教學(xué)計劃和各種特殊要求為約束條件的組合規(guī)劃問題。其實的沖突。在設(shè)計算法時, 為了降低課程調(diào)度的算法復(fù)雜性, 我們主要采用了化整為零的思想及優(yōu)先級算法:1排課的預(yù)處理1等價類的劃分任務(wù)劃分在同一等價類中, 在每個等價類之間只存在地點上的沖突, 而沒有時間上的沖突。 然后按

9、照的大小等價類的劃分可以先按年級分, 然后再按系別分, 如下 所示:聽課對象等價類的劃分自控系機械系化工系管理系.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 又個子類, 然后對每個子類分別進行排課處理, 這樣做就可以大大降低算法的復(fù)雜性2教室分類用教室, 我們采用了教室分類的辦法, 以便盡可能在課程編排過程中避免上課人數(shù)少的課程盲目強占容量大的分為若干個等價類, 如下所示,然后,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論