摘要:該文根據(jù)目前高校的實驗課的二級排課管理模式,以實驗室資源使用優(yōu)化為目標,利用貪心策略設(shè)計了實驗室排課算法。采用WCF技術(shù)將實驗室排課算法封裝成Web服務(wù),實現(xiàn)排課業(yè)務(wù)與實驗室管理系統(tǒng)平臺的集成。
關(guān)鍵詞:實驗室,Web服務(wù),面向服務(wù)
中圖分類號:TP39;G647 文獻標識碼:A 文章編號:1009-3044(2014)17-4024-04
Laboratory Automatic Course Arranging Based on WCF Service Design and Realization
HONG Wen-zhen
(Guangdong AIB Polytechnic College, Guangzhou 510507, China)
Abstract:Articles based on current University course scheduling two-level management model of experimental course, lab resources use optimization as the goal, greedy strategy design lab course scheduling algorithm. Course scheduling algorithm using WCF technology laboratory are packaged as Web service, realize the integration of course scheduling operations and laboratory management system platform.
Key words:laboratory; web service; service oriented architecture
目前高校的實驗室排課管理存在兩種模式,一種是統(tǒng)一編排模式,另一種是二級編排模式。統(tǒng)一編排是由教務(wù)處統(tǒng)一安排實驗課程的理論課和實驗(實訓(xùn))課。二級編排模式是由教務(wù)處編排完部分課程及相關(guān)的理論課,剩下的實驗課程由實驗(實訓(xùn))中心進行二次編排。由于各高校的實驗室建設(shè)存在時間差,越早建設(shè)的實驗室其實驗資源越是落后,普遍存在各種實驗資源參差不齊的情況。為此,在開展實驗室課程編排時,需要以資源使用優(yōu)化為目的,務(wù)必將實驗室資源最大化的利用。因此,該文針對二級編排模式的高校實驗室排課情況,利用貪心策略,以實驗室硬件資源充分利用為基礎(chǔ),并結(jié)合課程實驗教學(xué)要求的優(yōu)先級思想,設(shè)計實驗室自動排課方法。采用面向服務(wù)的開發(fā)模式,利用WCF技術(shù)將實驗室排課功能實現(xiàn)為Web服務(wù),對原有的系統(tǒng)架構(gòu)模式進行改造。
1 實驗室排課設(shè)計
實驗室排課思路以實驗課程為主線,找出所有滿足約束條件的時間片并利用優(yōu)化函數(shù)計算出各個時間片上的優(yōu)化值,然后將優(yōu)先級最高的課程編排到時間片段最優(yōu)上,通過迭代進行,直到全部實驗課編排完畢。
1.1算法參數(shù)設(shè)置
根據(jù)貪心策略的思想定義算法需要的幾個參數(shù),分別是:排課單元K元素,時間效果系數(shù)和時間字符串?dāng)?shù)組,具體設(shè)置如下:
K元素是實驗課集合為進行排課而拆分的待排課隊列的單元[1]。K是根據(jù)授課計劃信息來構(gòu)造,并根據(jù)周學(xué)時來進行拆分。當(dāng)周學(xué)時數(shù)為2時,則該門實驗課作為一個課程元素K;當(dāng)周學(xué)時數(shù)為4時,則該門實驗課拆分為兩個課程元素K,以此類推。
時間效果系數(shù)的設(shè)定如表1所示,是通過觀察學(xué)生周一至周五每天1到12節(jié)的上課的心里狀態(tài)及人的精神狀況,為了達到較好的上課效果,并且讓實驗課編排更加集中,對待排時間片進行設(shè)置效果數(shù)值。
時間字符串?dāng)?shù)組定義了待排課的K元素所選某個實驗室的課表,長度為30個元素,相當(dāng)于周一至周五的實驗室課表,如圖1所示。作為查找課程元素K可用時間片集合的臨時存儲區(qū),同時也是用來存儲每個可用時間片的優(yōu)化值。其目的是為目標評價函數(shù)選取最大優(yōu)化值的時間片服務(wù)。數(shù)組中每個元素的取值范圍是{0、優(yōu)化值},含義是:“0”表示該點已經(jīng)按排了課程,“優(yōu)化值”表示所對應(yīng)的時間片是空閑可用。
1.2算法函數(shù)定義
根據(jù)貪心算法的思想需要定義3個幫助算法實現(xiàn)的函數(shù),分別是:課程優(yōu)先級計算函數(shù)、時間片優(yōu)化計算函數(shù)和選取可用最優(yōu)時間片的目標評價函數(shù)[2]。
優(yōu)先級函數(shù)[fpriority(x)=TEH]。T是表示實驗課類型條件的優(yōu)先級權(quán)值,取值范圍是{專業(yè)課:60、基礎(chǔ)課:20};E是表示課程實驗硬件要求條件的優(yōu)先級權(quán)值,根據(jù)硬件要求其取值范圍是{高:80,中:40,低:20};H是表示課程可用時間條件的優(yōu)先級權(quán)值,取值范圍是{可用時間≤10個時間片:60,可用時間≤20個時間片:40,可用時間≤30個時間片:20}。確保權(quán)值大的K元素比權(quán)值小的K元素優(yōu)先排課,降低排課沖突量及算法的復(fù)雜性。
時間片優(yōu)化函數(shù)[Fcount_T(CT,K,T)=CMD],表示在[CT]條件下,待排課程元素K在可用時間片T下的優(yōu)化值。[CT]是當(dāng)前已經(jīng)被編排部分課程的課表;K是將要排課的元素;T是當(dāng)前被可用的時間片;C是表示一個常數(shù),值為10000;M是表示時間模式中每個時間片的效果系數(shù);D是表示課程安排間隔效果系數(shù),當(dāng)待編排課程的周學(xué)時為2時,D的值為“1”,如果周學(xué)時大于2時,具體設(shè)定系數(shù)值如表2所示。
表2 實驗課安排間隔效果系數(shù)表
[間隔時間\&同一天\&第二天\&第三、四天\&第五天\&效果值\&0.1\&0.6\&0.9\&0.3\&]
目標評價函數(shù)[Fcount_T(CTj,Ki,T)],用于選取在所有可用時間片[Fcount_T(CTj,Ki,T)]中最大的一個,并將它對應(yīng)的時間片作為滿足排課需要的時間,這是整個貪心策略在選擇排課時間點的一個評價函數(shù)。endprint
1.3算法流程設(shè)計
在定義了相關(guān)函數(shù)和參數(shù)的基礎(chǔ)上,根據(jù)貪心策略的思想設(shè)計實驗室排課算法,具體算法實現(xiàn)流程如下:
步驟1:根據(jù)教學(xué)計劃表得到實驗課的待排課集合;
步驟2:根據(jù)實驗課的優(yōu)先級函數(shù)[fpriority(x)=TEH]得到待排課隊列;
步驟3:判斷待排課隊列是否為空,如果為空生成課表并退出排課,否則進入下一步驟;
步驟4:從待排課隊列中取出一個待排課元素K;
步驟5:選取課程實驗要求的相應(yīng)實驗室(即教務(wù)處已編排的實驗室課表);
步驟6:計算當(dāng)前課表可用的所有時間片;
步驟7:判斷可用時間表是否為空,如果為空進入下一步驟,否則追加到待排課隊列;
步驟8:利用時間片優(yōu)化函數(shù)[Fcount_T(x)]計算每個可用時間片的優(yōu)化值;
步驟9:利用目標評價函數(shù)[FEvaluate(x)]選擇可用時間片安排K;
步驟10:返回步驟3,循環(huán)執(zhí)行步驟3至步驟9,直到生成課表,并退出排課。
2基于WCF的服務(wù)實現(xiàn)
2.1 WCF概述
WCF(Windows Communication Foundation)是微軟開發(fā)的基于面向服務(wù)體系結(jié)構(gòu)的分布式應(yīng)用程序編程架構(gòu),是.NET Framework 3.5的重要組成部分。WCF整合了ASMX、Net Remoting、Enterprise Service、WSE以及MSMQ等現(xiàn)有技術(shù)的優(yōu)點。WCF通過一種面向服務(wù)的新型編程模型簡化了關(guān)聯(lián)應(yīng)用程序的開發(fā),根據(jù)用戶及企業(yè)的IT需求,提供一個跨平臺的安全、可靠和支持事務(wù)處理的企業(yè)級分布式應(yīng)用解決方案[3]。
一個基于WCF的應(yīng)用系統(tǒng)必須包括:服務(wù)類(Service class),端點(Endpoint)以及宿主( host)和客戶端(client)等幾個要素[4]。
1) 服務(wù)類是 WCF的核心,一個 WCF 服務(wù)類提供了若干個用于遠程調(diào)用的服務(wù)方法,在實際應(yīng)用中必須實現(xiàn)服務(wù)接口,便于部署。定義一個 WCF 服務(wù)類時,需要定義服務(wù)契約[ServiceContract]和操作契約[OperationContract]。
2) 端點(endpoint)由地址(Address)、綁定(Binding)和契約(Contract)三個元素組成[]。Address代表了服務(wù)位置,Binding 封裝了傳輸協(xié)議、通信模式、安全性等通信特征的集合,客戶端調(diào)用時必須采用與服務(wù)端完全相同的綁定。Contract用于公開服務(wù)并描述服務(wù)功能。
3) 宿主用于托管WCF服務(wù),可以采用IIS托管、自托管和WAS托管三種方式,客戶端通過端點訪問并調(diào)用WCF。
2.2開發(fā)實現(xiàn)
在Visual Studio中選擇WCF服務(wù)應(yīng)用程序,創(chuàng)建實現(xiàn)排課算法的WCF服務(wù)類。Visual Studio自動生成3個文件,分別是WCF配置文件(Web.Config),ICourseSchedulingService.cs(WCF服務(wù)接口類文件)和CourseSchedulingService.svc(WCF服務(wù)實現(xiàn)類文件)。
在文件CourseSchedulingService.cs文件中定義了WCF的服務(wù)契約,操作契約、數(shù)據(jù)契約,從而設(shè)定實驗室排課服務(wù)對外提供的服務(wù)以及操作,其接口設(shè)計代碼如下:
namespace CourseScheduling//命名空間
{[ServiceContract]//定義服務(wù)契約
public interface ICourseSchedulingService//服務(wù)名稱
{[OperationContract] //操作契約
String CourseQueue( );//生成待排課隊列方法
Boolean QueueJudge( );//判斷待排課隊列是否為空
[OperationContract]
String FindFreeTime(TimeString() As Object,K As Object,Lab As Object);
//查找待排課程元素K的空閑時間方法
[OperationContract]
String WeightCalculation(K As Object,TimeString() As Object);
//計算時間片優(yōu)化值方法
[OperationContract]
String MaximumTimeSlice(TimeString() As Object); //選擇最大時間片方法
[OperationContract]
String AutomaticTimetable( ); //生成實驗室課表方法}
[DataContract] //定義數(shù)據(jù)契約
public class K{…} //待排課K元素
public class TimeString{…} //時間字符串?dāng)?shù)組
public class PlanQueue{…} //待排課K元素隊列
public class Lab{…} //待排課實驗室集合}
在CourseSchedulingService.svc文件中通過繼承服務(wù)接口的方式,實現(xiàn)“public class CourseSchedulingService : ICourseSchedulingService”,并且進一步對已經(jīng)定義的各個服務(wù)操作契約的業(yè)務(wù)邏輯進行編碼實現(xiàn),算法實現(xiàn)的具體過程如圖2所示。endprint
圖2 實驗室自動排課實現(xiàn)
把服務(wù)指定到WCF服務(wù)庫對應(yīng)的dll文件中的Services.CourseSchedulingService服務(wù)類上。把WCF服務(wù)對外終結(jié)點的Contract設(shè)為WCF服務(wù)庫的CourseSchedulingService.dll中的Services.ICourseSchedulingService服務(wù)契約上。為服務(wù)添加一個通信的端點(endpoint),設(shè)置Address=basic、Binding=basicHttpBinding 、Contract=Services.ICourseSchedulingService。采用IIS托管方式,在實驗室服務(wù)器的IIS建立Web應(yīng)用程,指向WCF服務(wù)站點所在的目錄,然后在IIS中發(fā)布的WCF服務(wù),如圖3所示。
2.3運行測試
利用已有的實驗室管理系統(tǒng)平臺[5]作為排課服務(wù)運行的測試平臺。對原來的實驗室管理系統(tǒng)的課程編排業(yè)務(wù)邏輯進行改造,將其作為WCF服務(wù)的調(diào)用客戶端。通過訪問已經(jīng)發(fā)布在IIS服務(wù)器上的CourseSchedulingService服務(wù)地址,調(diào)用實驗室排課服務(wù)。為了更好的測試實驗室排課服務(wù)的可行性,以某高校過去3個學(xué)期的實驗課編排數(shù)據(jù)作為測試用例,如表3所示,通過課程編排對排課服務(wù)的邏輯功能進行測試,服務(wù)執(zhí)行的測試界面如圖4所示。
3 結(jié)束語
本文根據(jù)高等院校的實驗室排課管理的二級編排模式,利用貪心算法,以局部求優(yōu)的思想,通過定義授課計劃單元K元素、時間片字符串、課程優(yōu)先級計算函數(shù)、時間片優(yōu)化計算函數(shù)和選取可用最優(yōu)時間片的目標評價函數(shù),進行實驗室課程編排算法設(shè)計。采用面向服務(wù)架構(gòu)的開發(fā)模式,對實驗室排課算法進行編碼實現(xiàn)。利用WCF技術(shù)將排課業(yè)務(wù)封裝成一個通用的Web服務(wù)類,以實驗室服務(wù)器的IIS作為服務(wù)宿主,進行WCF服務(wù)發(fā)布托管。實現(xiàn)實驗室排課功能模塊與實驗室管理平臺系統(tǒng)進行集成,對原來的系統(tǒng)架構(gòu)模式進行改造,降低了業(yè)務(wù)邏輯模塊與系統(tǒng)平臺間的耦合性,有利于實驗室管理平臺系統(tǒng)今后的維護和升級。
參考文獻:
[1] 梁立,陳玉華,徐敏.基于貪心法的排課算法[J].云南師范大學(xué)學(xué)報,2005,25(3):9-12.
[2] 洪文圳.高職院校計算機實訓(xùn)室排課系統(tǒng)研究與設(shè)計[D].廣州:華南理工大學(xué),2009.
[3] 趙海寧,李洋.基于WCF構(gòu)架的應(yīng)用與研究[J].電腦知識與技術(shù),2010,6(1):77-79.
[4] 吳清壽.基于WCF 的分布式系統(tǒng)模型研究與實現(xiàn)[J].吉林師范大學(xué)學(xué)報,2012,8(3):61-64.
[5] 洪文圳,李冬睿,李梅.基于WebService實訓(xùn)中心管理平臺的設(shè)計與實現(xiàn)[J].科技和產(chǎn)業(yè),2013,13(7):159-166.
圖2 實驗室自動排課實現(xiàn)
把服務(wù)指定到WCF服務(wù)庫對應(yīng)的dll文件中的Services.CourseSchedulingService服務(wù)類上。把WCF服務(wù)對外終結(jié)點的Contract設(shè)為WCF服務(wù)庫的CourseSchedulingService.dll中的Services.ICourseSchedulingService服務(wù)契約上。為服務(wù)添加一個通信的端點(endpoint),設(shè)置Address=basic、Binding=basicHttpBinding 、Contract=Services.ICourseSchedulingService。采用IIS托管方式,在實驗室服務(wù)器的IIS建立Web應(yīng)用程,指向WCF服務(wù)站點所在的目錄,然后在IIS中發(fā)布的WCF服務(wù),如圖3所示。
2.3運行測試
利用已有的實驗室管理系統(tǒng)平臺[5]作為排課服務(wù)運行的測試平臺。對原來的實驗室管理系統(tǒng)的課程編排業(yè)務(wù)邏輯進行改造,將其作為WCF服務(wù)的調(diào)用客戶端。通過訪問已經(jīng)發(fā)布在IIS服務(wù)器上的CourseSchedulingService服務(wù)地址,調(diào)用實驗室排課服務(wù)。為了更好的測試實驗室排課服務(wù)的可行性,以某高校過去3個學(xué)期的實驗課編排數(shù)據(jù)作為測試用例,如表3所示,通過課程編排對排課服務(wù)的邏輯功能進行測試,服務(wù)執(zhí)行的測試界面如圖4所示。
3 結(jié)束語
本文根據(jù)高等院校的實驗室排課管理的二級編排模式,利用貪心算法,以局部求優(yōu)的思想,通過定義授課計劃單元K元素、時間片字符串、課程優(yōu)先級計算函數(shù)、時間片優(yōu)化計算函數(shù)和選取可用最優(yōu)時間片的目標評價函數(shù),進行實驗室課程編排算法設(shè)計。采用面向服務(wù)架構(gòu)的開發(fā)模式,對實驗室排課算法進行編碼實現(xiàn)。利用WCF技術(shù)將排課業(yè)務(wù)封裝成一個通用的Web服務(wù)類,以實驗室服務(wù)器的IIS作為服務(wù)宿主,進行WCF服務(wù)發(fā)布托管。實現(xiàn)實驗室排課功能模塊與實驗室管理平臺系統(tǒng)進行集成,對原來的系統(tǒng)架構(gòu)模式進行改造,降低了業(yè)務(wù)邏輯模塊與系統(tǒng)平臺間的耦合性,有利于實驗室管理平臺系統(tǒng)今后的維護和升級。
參考文獻:
[1] 梁立,陳玉華,徐敏.基于貪心法的排課算法[J].云南師范大學(xué)學(xué)報,2005,25(3):9-12.
[2] 洪文圳.高職院校計算機實訓(xùn)室排課系統(tǒng)研究與設(shè)計[D].廣州:華南理工大學(xué),2009.
[3] 趙海寧,李洋.基于WCF構(gòu)架的應(yīng)用與研究[J].電腦知識與技術(shù),2010,6(1):77-79.
[4] 吳清壽.基于WCF 的分布式系統(tǒng)模型研究與實現(xiàn)[J].吉林師范大學(xué)學(xué)報,2012,8(3):61-64.
[5] 洪文圳,李冬睿,李梅.基于WebService實訓(xùn)中心管理平臺的設(shè)計與實現(xiàn)[J].科技和產(chǎn)業(yè),2013,13(7):159-166.
圖2 實驗室自動排課實現(xiàn)
把服務(wù)指定到WCF服務(wù)庫對應(yīng)的dll文件中的Services.CourseSchedulingService服務(wù)類上。把WCF服務(wù)對外終結(jié)點的Contract設(shè)為WCF服務(wù)庫的CourseSchedulingService.dll中的Services.ICourseSchedulingService服務(wù)契約上。為服務(wù)添加一個通信的端點(endpoint),設(shè)置Address=basic、Binding=basicHttpBinding 、Contract=Services.ICourseSchedulingService。采用IIS托管方式,在實驗室服務(wù)器的IIS建立Web應(yīng)用程,指向WCF服務(wù)站點所在的目錄,然后在IIS中發(fā)布的WCF服務(wù),如圖3所示。
2.3運行測試
利用已有的實驗室管理系統(tǒng)平臺[5]作為排課服務(wù)運行的測試平臺。對原來的實驗室管理系統(tǒng)的課程編排業(yè)務(wù)邏輯進行改造,將其作為WCF服務(wù)的調(diào)用客戶端。通過訪問已經(jīng)發(fā)布在IIS服務(wù)器上的CourseSchedulingService服務(wù)地址,調(diào)用實驗室排課服務(wù)。為了更好的測試實驗室排課服務(wù)的可行性,以某高校過去3個學(xué)期的實驗課編排數(shù)據(jù)作為測試用例,如表3所示,通過課程編排對排課服務(wù)的邏輯功能進行測試,服務(wù)執(zhí)行的測試界面如圖4所示。
3 結(jié)束語
本文根據(jù)高等院校的實驗室排課管理的二級編排模式,利用貪心算法,以局部求優(yōu)的思想,通過定義授課計劃單元K元素、時間片字符串、課程優(yōu)先級計算函數(shù)、時間片優(yōu)化計算函數(shù)和選取可用最優(yōu)時間片的目標評價函數(shù),進行實驗室課程編排算法設(shè)計。采用面向服務(wù)架構(gòu)的開發(fā)模式,對實驗室排課算法進行編碼實現(xiàn)。利用WCF技術(shù)將排課業(yè)務(wù)封裝成一個通用的Web服務(wù)類,以實驗室服務(wù)器的IIS作為服務(wù)宿主,進行WCF服務(wù)發(fā)布托管。實現(xiàn)實驗室排課功能模塊與實驗室管理平臺系統(tǒng)進行集成,對原來的系統(tǒng)架構(gòu)模式進行改造,降低了業(yè)務(wù)邏輯模塊與系統(tǒng)平臺間的耦合性,有利于實驗室管理平臺系統(tǒng)今后的維護和升級。
參考文獻:
[1] 梁立,陳玉華,徐敏.基于貪心法的排課算法[J].云南師范大學(xué)學(xué)報,2005,25(3):9-12.
[2] 洪文圳.高職院校計算機實訓(xùn)室排課系統(tǒng)研究與設(shè)計[D].廣州:華南理工大學(xué),2009.
[3] 趙海寧,李洋.基于WCF構(gòu)架的應(yīng)用與研究[J].電腦知識與技術(shù),2010,6(1):77-79.
[4] 吳清壽.基于WCF 的分布式系統(tǒng)模型研究與實現(xiàn)[J].吉林師范大學(xué)學(xué)報,2012,8(3):61-64.
[5] 洪文圳,李冬睿,李梅.基于WebService實訓(xùn)中心管理平臺的設(shè)計與實現(xiàn)[J].科技和產(chǎn)業(yè),2013,13(7):159-166.