• 沒有找到結果。

第三章 系統架構與實作

3.4 使用 JaCoP 進行限制條件處理

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

48

3.4 使用 JaCoP 進行限制條件處理

在研究的過程當中,章節 3.1 的 CSP 問題處理部分我們利用 JaCop 來完成其 限制條件處理。JaCoP 是由兩位程式設計師 Krzysztof Kuchcinski 和 Radoslaw Szymanek 於 2001 年所開發的一項專門處理 CSP 的工具。經過十多年的更新,9 萬多行的程式碼,目前的版本已到 4.0。JaCoP 本身亦是使用 Java API 所開發,

和我們的 Groovy 能夠有效結合。有鑒於其成熟度以及可擴充性,我們使用 JaCoP 來做為我們的限制條件解決工具。透過 JaCoP 的工具我們可以找出符合硬性限制 條件的所有可能解。在章節 3.1 所有關於排課的限制條件中,我們都使用 JaCoP 來進行問題描述並做進一步處理。關於 JaCoP 如何描述本系統排課限制部分,我 們已收錄程式碼於附錄之中。

處理校園課表編排問題時,使用限制條件排程(Constraint Satisfaction Programming) 的方式來解決排課問題有許多好處。其中一個就是可以將描述問 題的模型以及尋找答案的搜尋演算法分開,這樣使得使用者在更改排課問題的實 際限制條件或資料時,只需要針對問題模型的部分做修改,而不用連帶影響到搜 尋演算法。除此之外,一旦現有的搜尋演算法無法提供有效幫助時,也可以直接 修改搜尋演算法的部分,不需去更動到排課問題的模型。這對於維護並簡化系統 上有非常大的幫助。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

49

第四章 使用範例

當系統完成排課結果搜尋後,我們以 XSLT 的方式來呈現排課結果,其中包 括一週課程安排的課表、個別教室的課表、個別教師的課表以及個別課程描述的 表格。我們也將各位教師的喜好以及厭惡與課表的交叉比對結果安排進課表中。

其中,紅色字代表該課程安排之時間或教室為該課程老師的喜好,而藍色字則代 表該課程安排之時間或教室為該課程老師所厭惡。另外,需要注意的是,指定安 排時段或教室的課程將不給與加權值的增減,在結果顯示上也將不會標記顏色。

在範例的使用中、我們採用政大資科系以及企管系兩系所的某學期資料進行 測試。並且也同時測試在 Course TimeTabling 競賽網站[28]中的相關課程範例。

4.1 政大資科系範例

我們使用國立政治大學資訊科學系(含碩士及博士班) 102 學年度第一學期 的課表做為實驗用資料,並使用 CPU 處理器 Pentium Dual-Core E5200 @ 2.50GHz、

4GB RAM、64 位元系統的電腦進行排課結果測試。在給予 100 秒搜尋時間以及最 高加權解 20 筆的限制條件下,我們可以找出 23075 種可能解,並選擇其中最佳 的 20 筆隨機資料。另外在給予一小時 (3600 秒) 搜尋時間的情況下則可找出 668667 種可能解。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

50

圖 4.1:總排課結果週顯示

圖 4.2:總排課結果個別課程顯示

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

51

除此之外,為了增加課表解讀的方便性。依照每位教師的不同,我們也提供 各教師的獨立課表,方便使用者更快的找到他們想要的資料。如圖 4.3。在課程 資訊的修課年級欄位中表示該課程的授課對象。其中包含學級以及年級資訊。例 如學 4 碩 12 表示該課程授課對象為學士班四年級與碩士班一、二年級。

圖 4.3:個別教師排課結果顯示

同時,我們也提供各間教室的獨立課表,藉由教室獨立課表的資訊提供,我 們可以得知這間教室的一週使用情況。如圖 4.4 所示。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

52

圖 4.4:個別教室排課結果顯示

4.2 CCT 範例

系統結果的測試,在 Curriculum-Based Course TimeTabling (CCT) [28]

的競賽網站中也提供了相當多來自各地的實際範例。雖然該競賽網站的目的不在 於教師個人的喜好,但我們仍採用其中的範例 EA08 課程問題描述[30] ( 123 堂 課,14 間教室,一週 5 天,一天 10 時段) 來進行系統測試,得到的結果如圖 4.5 所示。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

53

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

54

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

55

圖 4.5:EA08 排課結果範例

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

56

第五章 結論與研究建議

5.1 結論

在市面上這麼多的校園排課協助程式中,我們希望提供一個不同,並且以大 學教師需要作為排課出發點的排課系統。我們了解到,在條件不會過度限制的情 況下,輸入的教師、課程或較室的資料越多,排課結果的可能數量越可觀。因此,

我們將教師的排課需求作為我們排課結果篩選的最主要參考依據,希望能替各系 所在每學期的開課時提供一個排課結果的參考。

我們的系統主要透過幾個方式進行排課結果的篩選。依序可以分為以下幾個 步驟:

1. 收集每學期課程、教室、以及教師喜好厭惡的相關資料。

2. 進行排課的初步資料輸入,其中包含兩種方法:DSL 輸入,或是 GUI 方式輸 入。在 DSL 以及 GUI 的模式中,使用者都可以隨時切換資料的設定,並且儲 存成檔案。在本系統 GUI 的模式中,資料的儲存會產生兩種檔案類型,XML 黨以及 YYC 檔。我們另外搭配 BaseX,可以使的每學期的排課資料提供外界 做為參考。

3. 在 DSL 以及 GUI 模式下的資料設定完成後,JaCoP 將會開始將資料進行處理,

並且找出能符合所有限制條件的可能解。由於可能解的數量眾多,可能超出

度,未來研究方向也可考慮將第一次的課表編排結果編寫成 Incremental mode,

讓使用者直接在系統上再做第二次課程編排的前置設定,增加系統的服務效能。

在處理 TimeTabling 問題時,本系統的經驗也可應用於其他類似系統的快速 開發,例如: 中小學排課,工廠或醫院排班,考試的時間與教室安排,具限制條 件的餐飲調配。

[1] School 課表. (2011) From http://en.wikipedia.org/wiki/School_課表.

[2] Groovy Builders. Retrieved March, (2012). From http://groovy.codehaus.org/Builders.

[3] JaCop. (2003) From http://bach.istc.kobe-u.ac.jp/JaCop/.

[4] @ONE 爸爸的隨想手札. (2007) From

http://aone.blog.ithome.com.tw/post/284/9782.

[5] Venkat Subramaniam. (2008) Programming Groovy: Dynamic Productivity for the Java Developer. The Pragmatic Bookshelf.

[6] Fergal Dearle. (2010) Groovy for Domain-Specific Languages. Packt publishing.

[7] Dierk Konig. (2007) Groovy in Action. Manning Publications Co.

[8] Constraint satisfaction problem. Retrieved (2012) From

http://en.wikipedia.org/wiki/Constraint_satisfaction_problem

[9] Schaerf A (1995). “A survey of automated timetabling”. Artificial Intelligence Review, vol.13, pp.87-127.

[10] Carter M. W., Laprorte G (1998). “Recent Developments in Practical Course timetabling”. In[11] pp.3-19.

[11] Burke E. K., Carter M. (Eds.) (2000). The Practice and Theory of Automated timetabling

[12] Carter M. W., Laprorte G (1998). “Recent Developments in Practical Course Timetabling”. In[11] pp.3-19..

[13] Even S., Itai, A. and Shamir, A. (1975). “On the Complesity of 課表 and

Multi-commodity Flow Problem”, 16th IEEE Annual Symposium on foundations of Computer Science, pp. 184-193

[14] 謝昆霖,沈進成,周君妍,鄭丞君(2004)。基因演算法應用於顧客旅遊行程 路徑最適化模式之研究。旅遊管理研究,第四卷,第一期,頁 53-66。

[15] 陳奕憲(2011)。基因演算法在國民中學排課問題之最佳化研究。南華大學資 訊管理學系,碩士論文。

[16] A. Schaerf (1996). Tabu search techniques for large high-school timetabling problems. In Proc. of AAAI-96, pp. 363–368. AAAI Press/MIT Press

[17] T. Duong (2004). Combining constraint programming and simulated annealing on university exam timetabling, Research Informatics Vietnam and Francophone, pp. 205–210.

[18] H. Asmuni, E.K. Burke and J. Garibaldi (2005). Fuzzy multiple ordering criteriafor examination timetabling

[19] Borning A., Duisberg R., Freeman Benson B., Kramer A., Woolf M.. (1987).

Constraint Hierarchies. Proceedings of the 1987 ACM Conference on Object Oriented Programming Systems, Languagesand Applications. Pp. 48-60 [20] Freuder E. C., Wallace R. J.. (1992). Partial Constraint Satisfaction. Artifical

Intelligence

[21] Bluenight 專欄. Retrieved July (2012). From

http://blog.csdn.net/chl033/article/details/4020334.

[22] Groovy Home Page. Retrieved April (2014). From http://groovy.codehaus.org/

[23] Domain Specific Language. Retrieved April (2014). From

http://en.wikipedia.org/wiki/Domain-specific_language

[24] International Timetabling Competition Retrieved April (2014). From

http://www.cs.qub.ac.uk/itc2007/

[25] JavaFX: Getting Started with JavaFX Retrieved April (2014). From

http://docs.oracle.com/javase/8/javafx/get-started-tutorial/jfx-overview.htm#JFX ST784

[26] MetaObject Protocol Retrieved April (2014). From

http://en.wikipedia.org/wiki/Metaobject

[27] MeteProgramming Retrieved April (2014). From

http://en.wikipedia.org/wiki/Metaprogramming

[28] Curriculum-Based Course TimeTabling Retrieved April (2014). From

http://tabu.diegm.uniud.it/ctt/index.php

[29] Constraint Programming Retrieved May (2014). From

http://en.wikipedia.org/wiki/Constraint_programming

[30] CTT EA08 Example Retrieved April (2014). From

http://tabu.diegm.uniud.it/ctt/index.php?page=stats&name=EA08

[31] 王子夏(2007)。應用基因演算法於大專院校教師派課問題之研究。崑山科技 大學資訊管理系,2007 年資訊科技國際研討會論文集。

[32] MBAlib, Retrieved (2012) From

http://wiki.mbalib.com/zh-tw/%E6%A8%A1%E7%B3%8A%E6%8E%A7%E5%88%B 6

[33] MBAlib, Retrieved (2012) From

http://wiki.mbalib.com/zh-tw/%E7%A6%81%E5%BF%8C%E6%90%9C%E7%B4%A 2%E7%AE%97%E6%B3%95

[34] 模擬退火法, Retrieved (2012) From

http://jjcommons.csie.isu.edu.tw/research/download/SA.pdf

[35] Guide to Constraint Programming. (1998) From

http://ktiml.mff.cuni.cz/~bartak/constraints/pcsp.html.

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

61

[36] Metropolis, N., Rosenbluth, A., Rosenbluth, M., Teller, A., and Teller, E.,

“Equation of state calculations for fast computing machines,” Journal of Chemical Physics, Vol. 21, pp. 1087-1092, 1953.

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

62

附錄

JaCoP 描述附錄 1:

1. 同教師的不同課程不得時段安排不得重疊

2. 不同教師的課程不得安排於同一時間的同一教室 3. 同一課程的不同節次於同一天內連續上課

JaCoP 描述附錄 2:

1. 同一年級的必修課不得安排於同一時段

2. 同一年級的必修與選修課不得安排於同一時段

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

63

JaCoP 描述附錄 3:

單一課程的不安排上課時段

JaCoP 描述附錄 4:

教師的不安排上課時段

JaCoP 描述附錄 5:

所有課程的日不安排上課區段

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

64

JaCoP 描述附錄 6:

1. 課程的日指定上課時段 2. 課程的週指定上課日

3. 所有課程的一週固定不安排上課時段

JaCoP 描述附錄 7:

教室的不開放上課時段

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

65

JaCoP 描述附錄 8:

教室的可容納人數須滿足課程的上課人數

JaCoP 描述附錄 9:

教室的資源是否支援課程需要

JaCoP 描述附錄 10:

課程的不安排教室

JaCoP 描述附錄 11:

課程的指定上課教室

相關文件