過勁勁 曲立國



摘 要 在以往的實驗室管理中,實驗課程的安排都是通過人工的方式實現,隨著專業種類、學生人數的增多,實驗科目也逐漸增多,無疑這種排課手段是非常落后的,以至于龐大的課時、復雜的實驗室信息令實驗室的管理人員無法合理、迅速、高效地制定出相應的排課計劃,本文針對目前實驗室排課技術落后、效率低下等問題,提出基于Microsoft Excel開發平臺,采用Microsoft Excel VBA、VB等技術,實現對年級專業、實驗課程的合理分配,滿足實驗室管理人員使用要求的實驗課程排課系統。
【關鍵詞】時間表問題 排課系統 Microsoft Excel VBA 算法 排列組合
1 引言
在高校中,實驗課程的編排是一項十分繁重而復雜的工作,由于近些年的擴招,實驗室不能完全容納班級人數,在這種情況下,就必須要對專業、實驗課程、學生人數進行合理的組織安排,純手工排課不僅效率低下而且還經常有出錯的可能,通常都要修改三四次左右才可以將之公布給學生,既耗時又費力,種種難題難免給實驗室管理人員帶來極大的挑戰。排課問題不僅是教學管理工作中必須面對的問題,而且也是運籌學中研究的一個問題--時間表問題(Time Table Problems,簡記TTPS)。隨著計算機技術的不斷發展,并且在各領域得到了充分的應用,計算機有著手工管理所無法比擬的優點,其優點是能夠極大地提高實驗教學管理工作的效率,也是實現教育信息現代化的重要組成部分。因此應用計算機技術開發一個智能排課系統,既可以降低實驗室管理人員的工作量又可以節省了時間,為教學工作帶來方便,利用計算機輔助手段編排課表是實驗室管理實現科學化、現代化、規范化的重要研究課題之一。
對于解決排課問題,相關人員已經采用了很多算法算法,如:FP-Growth關聯規則算法,遺傳算法,模擬退火算法,禁忌搜索算法,以及多種智能算法相結合的混合算法。這些算法都能在一定程度上解決排課問題,但也存在著一些不足:如對合班的情況考慮比較少。本文在相關理論知識的指導下,提出了一個適用于我校的實驗教學排課系統的設計方法,并對一些具體的問題給出相應解決方案。
2 排課系統的設計與實現
排課系統就所要實現的功能而言,其結構功能如圖1,該系統考慮了上課時間多樣性、上課時間多變性、實驗課程多樣性及專業人數分組的多樣性,使用了自動讀取數據庫管理模塊信息、自動分類打印、可手動調節等動態管理。
2.1 實驗課程排課規則
實驗室課表安排就是根據理論課及實驗課的教學計劃,對一學期的每門實驗課程進行規劃,由于實驗室人數的限制,將一個專業劃分為數組,每一組是由在一起上課的部分學生組成的臨時的上課單位。排課的過程實質上就是對上課單位與實驗課程分配的過程。在實際應用中我們可以把排課問題看做是一個有約束的、多目標的、難解的組合而成的優化問題。因此在排課的過程中,必須遵守以下四條基本原則:
(1)每位教師在一個時間段內最多只能進行一門課的教學;
(2)每組的學生在一個時間段內最多只能進行一門實驗課;
(3)每個實驗室在一個時間段內最多只能有一組學生上課;
(4)每組的學生要在規定的時間內上完規定的實驗課程。
也就是說,每個實驗室在一個時間段內最多只能安排一個實驗課程。此外,每個實驗課程還必須與每組同學一一對應,并且所安排的課時數與教學計劃中課程時數一致。為了使課表更加準確、合理,排課時還要考慮以下一些因素:
(1)實驗課程的開設盡量安排到理論課進行完之后;
(2)盡可能使每一組的學生每天進行的實驗課程趨于平衡;
(3)盡可能將實驗課程安排到合理的時間,滿足該專業的需求;
(4)盡可能的按照組號的順序進行實驗課程;
(5)實驗課的安排應與其他教學活動時間沒有沖突。
2.2 數據庫的設計與實現
將數據庫管理模塊的每個屬性內容按照專業的需求性,不需要填寫的屬性可以空出,不用填寫,不會對系統造成任何影響,如圖2,完成填寫,之后按下排課按鍵,則在對應專業的顯示界面中顯示這一學期的實驗課程排課情況,如圖3。
課表就是將專業學生、實驗課程、實驗時間組合成一種新的關系,課表可以用這種關系代數表示。實現計算機自動排課的前提條件是將排課問題轉化為數學模型。具體地,定義數個基本信息:專業信息關系:Major{M1,M2,M3,...,Mn}n個專業;課程信息關系:Course{C1, C2, C3,...,Cm}m個實驗課程;時間信息關系:Time{T1,T2, T3,...,Tk}k個時間.(每個字母表示某個專業或某個課程或某個時間的所有排課的信息)定義一個產生的新關系:TimeTable{TT1, TT2,TT3,...}每個字母表示相關時段的課程信息。
3 排課系統分析
3.1 功能分析
排課系統是一個龐大而復雜的系統,在排課的整個過程中,始終伴隨著元素的層次掃描和元素從舊集合到新集合的遷移。本論文所設計的排課系統具有如下基礎功能:
(1)年級專業基礎數據錄入功能,包括:專業名稱、專業分組數的相關信息的錄入。
(2)實驗基礎數據錄入功能:錄入各專業實驗名稱、實驗代碼、實驗數量信息等。
(3)實驗時間安排的數據錄入功能:根據專業的空余時間和實驗數量錄入合適的起始時間和結束時間。
(4)個別實驗課程進行特殊設置:如,優先級設置,連續排課設置。
(5)特殊情況設置功能:能根據具體情況設置實驗課程的排課。如:遇到節假日需要修改實驗課程時間、教師有特殊情況需要調整試驗時間等。
(6)在完成上述信息輸入后,按下排課按鈕能實現自動排課功能。
(7)在自動排課結束后可以人為手動地對排課情況進行調整,提高課表的滿意度。
(8)查詢功能:使用者利用Excel的基本操作能査詢所需的相關信息。如:任意班級實驗課表等。
3.2 結構分析
本排課系統是基于C/S的環境,把排課和數據庫資源管理、課表輸入模塊結合在一起,排課工作計劃具體到各個年級專業。各個年級專業在客戶機上完成自己的課程計劃,再通過互聯網發到服務器中,服務器選擇性的根據這些排課計劃完成排課,把生成的課表再發放到各個年級專業中,各個年級專業可根據具體情況進行補課、調課等。
工具的便利性和語言的伸縮性是密不可分的,只有便利和工具,卻沒有伸縮性和語言支撐,許多個性化的處理動作必需要消耗更多的工夫來處理完成。因此針對如何選擇一個合適的開發工具尤為關鍵。而本排課系統用的是Microsoft VBA開發語言,該語言容易學習,調試也相對簡單,當前的計算機硬件配置也完全能滿足開發的需求,因此在技術上是絕對可行的;軟件方面:為了減少系統設計時環境安裝的復雜性,因此選擇大家都熟悉的辦公軟件的 Excel實現該系統,這樣可以免除熟悉軟件環境的過程,而且可靠性能高、成本低,完全能滿足系統的需求,操作上并沒有太高的難度,所以在運行上是可行性的,而且本系統的開發,主要是對現有數據的處理,及數據的各種組合形式的輸出,已無技術上的問題。本系統建成之后將為今后學院安排實驗課程提供很大的方便。
4 排課工作流程與算法分析
在分析其他高校的排課算法的同時結合我院的實驗室課程安排情況,設計了適用于我院實驗課程安排的排課算法,充分考慮到了多種情況,該算法編程容易,易于實現。結果表明,該算法可以滿足排課的各種規則,排出的課表較為合理,具有一定的實用性。
4.1 一般情況排課算法分析
應用計算機來實現自動排課需要解決的問題有:一如何決定實驗課程次序,即優先開始哪些課程,才能使沖突的概率出現最小;二是如何為每門實驗課程合理分配時間。
本系統采用優化窮舉算法進行排課,首先計算出所有排課情況將眾多排課情況劃分優先級,先采用優先級高情況,若出現沖突,再選擇其他情況直至完成排課。本系統以分階段的形式進行排課,即把一學期分為幾個階段排課,以一周為一個階段,即在時間上我們是按一周為單位來進行排課。將一天以兩節課為單位劃分成數個單元,每個單元或者被占用或者不被占用。根據數據庫管理模塊,讀取所要安排實驗課程的起始時間,即可確定第一個實驗的位置,為了便于表示,我們將每門實驗課程所做的實驗用一串代碼(甲、乙、丙...)表示,將實驗代碼與分組號一一匹配安排在相應的Excel的單元格中,如圖3,為了實現上述功能,將Excel的單元格定義成一個結構體二維數組time_day(wk,dy)二維數組的下標wk表示所在的周,dy表示所在的某一天的第幾節課,根據課程表格我們可以看出,具體時間可用一個二維坐標表示,
如(4,3)表示第四周周一的第1-2節課,此外我們在結構體里定義了兩個數組class_zu(t)、class_sy(t),其中class_zu(t)用來存放組號;class_sy(t)用來存放實驗代碼。為了減少窮舉法的時間復雜度,本系統將組號按照順序安排設為最高優先級,即下一個組號為上一個組號加1。排課有多種情況,可能一個單元格只有一個實驗代碼和組號的連接,也可能有兩個實驗代碼和組號的連接,不同情況分別有著不同的排課過程,所以需要前提判斷是否已經排過實驗了。其大致流程如圖4,實驗代碼:
For wk = 起始周 To 結束周
For dy = 起始課時 To 結束課時
If 已經排了一門實驗課程Then
time_day(wk, dy).class_zu(t1) = “已經排的組號 + 1”
time_day(wk, dy).class_sy(t1) = “實驗代碼”
flag1 = flag1 + 1
If 組號 = 分組數 Then
“組號初始化為1”
End If
If flag1 = 分組數 Then
flag1 = 0
“實驗代碼++”
End If
Else
time_day(wk, dy).class_zu(t1) = “組號”
time_day(wk, dy).class_sy(t1) = “實驗代碼”
“組號++”
If 組號 = 分組數+1 Then
“組號初始化為1”
“實驗代碼++”
End If
End If
Next dy
Next wk
4.2 節假日的情況的排課算法分析
本系統還考慮了節假日等特殊情況需要調節上課時間的功能,假若因某一周放假,實驗課停課一周,則只需在規定的開始周設置為第七周即可,針對這種情況,本系統首要是判斷規定的開始周是否為空,若不為空,則考慮節假日,并且接著節假日之前的排課記錄繼續進行,若為空,則正常進行循環排課,實驗代碼:
If 有節假日 Then
For wk = 節假后的起始周To 節假后的結束周
For dy = 節假后的起始課時To節假后的結束課時
time_day(wk, dy).class_zu(t1) = “節假日之前的組號 + 1”
time_day(wk, dy).class_sy(t1) = “實驗代碼”
“按照上述幾種情況正常排課”
Next dy
Next wk
End If
4.3 分時進行實驗情況
如圖3,分時進行兩種實驗,針對這種情況,是因為專業分組數比較多,而另一個實驗課時不多,但是為了滿足實驗課盡量在理論課進行完之后進行,所以將第二個實驗一周只安排一個半天,第二門課的實驗同樣要保持每一組都要進行,這樣不像前面所述的那種情況,兩門課程同時進行后一門實驗安排的組號僅僅是前一門實驗組號加1即可,此類情況就不能單純的采用前述的算法,即第二門課程實驗的組號不能再是前一門實驗組號加1,這時需要窮舉出所有排列的情況,然后需要進行沖突檢測,所以本系統在采用優化窮舉法的基礎上拓展了排列組合的算法,統計出所有的分組數的排列組合將其放入二維數組b(ai,aj)中,其核心思想是首先記錄前一門實驗另一個半天的組號賦給zu_jishu_shuzu1(xb1),然后將其與b(ai,aj)一一比較,將符合條件的組號賦給zu_jishu_shuzu2(xb2),最后再放入第二個實驗的class_zu(t)即可。實驗代碼:
For wk = 節假后的起始周To 節假后的結束周
For dy = 節假后的起始課時To節假后的結束課時
zu_jishu_shuzu1(xb1) = “第一個實驗的組號”
xb1 = xb1 + 1
組號++
If 組號=分組是 Then
“組號初始化為1”
End If
Next dy
Next wk
For ai = 0 To 119
For aj = 0 To 分組數- 1
If b(ai, aj) = zu_jishu_shuzu1(xb1) Then
xb1 = (xb1 \ 分組數) * 分組數
xb2 = (xb2 \ 分組數) * 分組數
aj = 分組數 - 1
Else
zu_jishu_shuzu2(xb2) = b(ai, aj)
xb2 = xb2 + 1
xb1 = xb1 + 1
Next aj
Next ai
5 結語
在以前實驗室管理人員需要花費幾個星期來完成實驗課程的排課,運用本系統進行排課,能使實驗室管理員的工作量大大減少。本實驗室排課系統是基于Microsoft Excel平臺采用VBA編程語言來實現,充分考慮到專業的人數的多樣性、實驗課程數量的多樣性以及實驗安排時間多樣性以及可變性等問題,滿足實驗室管理人員的使用要求。
本排課系統主要有如下優點:
(1)對軟硬件的要求不高,研發本系統的過程開銷不高,極大的程度上節約成本。
(2)本系統操作簡單方便,為后續的升級留有一定的擴展余量。
(3)本系統的適應能力強,考慮因素多。
參考文獻
[1]李富星.自動排課系統的設計與實現[J].西安電子科技大學學報,2010,36(05):199-202.
[2]章玉政,李世杰,李慶男,劉甲第.實驗中心排課系統的設計與實現[J].實驗室科學,2011,14(06):131-133.
[3]何巍.FP-Growth關聯規則算法在高校排課系統設計中的應用研究[J].電子技術與軟件工程,2014(06):194.
[4]Minh K N T T,Thanh N D T,Trang K T,et al.Using tabu search for solving a high school timetabling problem[M]//Studies in computational intelligence,2010:305-313.
[5]Jat S N,Yang S.A hybrid genetic algorithm and tabu search approach for post enrolment course timetabling[J].Journal of Scheduling,2011,14(06):617-637.
[6]張赫男,張紹文.采用改進的混合遺傳算法求解高校排課問題[J].計算機工程與應用,2015,51(05):240-247.
[7]馬玉芳,張海娜,邵杰.遺傳算法在高校排課系統中研究與實現[J].計算機系統應用,2014,23(05):112-115.
[8]顧治程,蔣艷.基于FDD算法的高校排課系統設計與實現[J]軟件導刊,2016,15(01):110-112.
[9]崔妍,王權,王康,車玉軍.排課問題的數學模型[J].沈陽工程學院學報(自然科學版),2016,12(03):276-279.
[10]陸靜.華北科技學院計算機專業實驗室排課系統的設計與實現[D].成都:電子科技大學,2011.
[11]鄭杰,周曉宏.基于VBA的輔助排課系統的實現[J].現代計算機,2014,36(19):67-70.
作者簡介
過勁勁(1996-),男,大學。主要研究領域為計算機信息處理,身份證:341224199607121338。
曲立國(1979-),男,副教授/碩士。主要研究領域:智能控制及智能信息處理。身份證:220283197901133519。
作者單位
安徽師范大學 安徽省蕪湖市 241000