❶ 論文「計算機自動排課系統的設計與實現」的開題報告怎麼寫
方案名稱:智能排課系統。
方案目的:利用計算機替代傳統的繁瑣的手工排課方法。
方案闡述:本系統受游戲設計中A星演算法中的廣度搜索法啟發,結合手中的文獻,總結出來的一種排課方式。本方案先採用採用信息收集的方式,收集信息。然後利用回逆演算法進行智能排課。最後,再進行適當的人為調整,即可生成符合要求的課表。
方案詳解:當需要生成課表時,用戶需先設定排課條件。基本條件有:周課時設置,課程信息,班級信息,教師信息,場地信息,教學計劃(即那些老師教那些班級、可以選擇的空教室、是否有合班課等信息)。將所有信息存入資料庫。自動排課,即系統自動調用資料庫收集的信息然後利用設定的演算法進行排課。最後,將系統生成的課表進行差錯檢查,分別在班級信息,教師信息,場地信息表中檢測其有無沖突。然後進行查看和手工調課。最後生成所需求的課表。
演算法詳解:
回溯是一種優先搜索法。它按優先條件向前搜索,以達到目標,但當搜索到某一步時,發現原先的選擇並不優或達不到目標,就退回一步重新選擇。這種走不通就退回的技術為回溯法,而滿足回溯條件的某個狀態點稱之為回溯點。
具體到計算機智能排課系統中,選優條件即為排課數學模型中的約束條件群(需求集中的元素特徵與資源集中的元素特徵相互作用形成的數學關系)。換言之,若不滿足約束條件群,該選擇即為不優或達不到目標。當遍歷該步驟的所有可能仍未滿足約束條件群,則該狀態滿足了回溯條件,該狀態點即為回溯點。下圖即為回溯演算法排課流程。
值得指出的是,當得到第一次滿足選優條件的排課結果後,可以將課表輸出到屏幕上,由系統管理員直接審視排課結果,若感覺不滿意,則可回到第一次得出的排課結果,將該狀態設為回溯點,繼續運行該演算法,可以得到另一種排課結果,直至程序管理員滿意為止。
當然,也有可能使用該法遍歷了所有的可能,仍無滿足選優條件之排課結果,此時,計算機就根據反饋的結果,自動放寬約束條件,重新進行排課。
該排課系統已在實際應用,排課結果較為理想,並且充分發揮了運算速度快的特點。
計算機自動排課也需要進行人工干預,以便可以使得各個高校能夠根據自己的具體要求對排課演算法中的一些參數進行設置和調整,並對計算機排出的課表進行調整.本演算法所設計的人工干預過程有:等價類劃分中參數的設置,教室類型的設置,時間模式庫的設置,優先順序函數中參數的設置.用戶可以根據自己的具體要求對這些參數和庫進行設置.另外,對於計算機排出的課程表,用戶也可以通過人機交互進行適當調整,從而得到用戶滿意的課程表.
參考文獻:《高校智能排課系統文獻綜述》
作者,日期不詳。
《以代理人為基礎的中學排課系統研究》
台灣高雄師大學 楊錦潭 歐文性
PS: 本人經過幾天了解和獲得老師的指點,覺得該系統如何能使用數據結構圖和離散數學中的圖論解決會能具有可操作性和智能性。另外,本人認為可以設計一個信息採集的介面,用於採集一些教師的需求信息(例如:不想上某個時段的課程。)這樣可以使整個信息更加人性化,但實現起來也比較有難度。知識水平有限,只能在我所能想到的范圍進行思考。
❷ c++如何實現排課系統的演算法
我的想法是……
1.首先把最難弄的老師排上,就是說她教的班多,限制多。(這步的實際操作就是把排課順序按照班數排序)
2.隨機安排課(當然要根據人類習慣,您總不能讓他一天上七節課),安排方式為先滿足部分人需求(當然不太公平),然後剩下的補空
3.這剩下的部分人可能因為班級的關系出現重課的問題,沒有關系,先把他安排上去,用repeat循環逐層更改被沖突對象的課節(最後可以選把美術音樂等老師,他們安排到下午的話上午比較好換)
具體跟據實際來定。。……我亂講講。這是我的想法模型。
❸ 智能排課系統
這個就是會員功能,用戶表裡有個欄位代表經驗值,登錄成功的時候獲取用戶信息同時也獲取到這個欄位瞭然後用當前時間去判斷上一次登錄時間是不是同一天,如果是同一天就不增加,如果不是同一天就加上要給的經驗值,做任務也是一樣都是動作的同時多寫一步加經驗就行啦,增刪改查中的
❹ c++排課系統的演算法
這個不是排列組合題目吧?如果不是,那就很簡單。大致說下思路,自己實現吧。
把學校機房的課時按每小時或者按幾個小時為單位編成一個數據結構。這個具體看學校怎麼安排上機課,如果最小單位為2小時,當然以2小時為單位,如果有班級只上半小時的上機課當然以半小時為單位。比如一周5天每天10小時我們可以把它編成50個單位的一個數據結構。可以為數組,可以為鏈表,當然也可以為更復雜的結構,看你的需要。簡單的機房上機課時結構基本子元素為:起止時間、已安排班級(若未安排則為空)、已安排老師
把班級和老師也儲存在一個數據結構里。然後確定班級排上機課的原則。比如是平均分配機時,那麼將每個班級增加一個計數器。那麼班級的數據結構每個元素至少要有這么幾個子元素:班級標識、班級計數器、班級空閑時間表。排上機課的時候,首先取出機房上機課時的數據結構,取出第一個元素,然後遍歷存儲班級信息的數據結構,優先取出班級計數器最小的班級,查看這個班級這時是否有課,無課則插入到上機課時的數據結構中,同時將班級計數器加一,有課則選擇下一個計數器數字最小的元素。(計數器只是表示班級安排了多少上機課,也可以用一個數字代替,僅僅表示權重,比如計算機系的班級權重就可以調高。建議將整個鏈表中計數器數字的最小值保存在這個鏈表的某處,使得訪問者一開始就能得到而不用訪問所有元素)。重復上述過程,直到所有上機課時都被分配。
老師的分配過程和上述班級分配類似。
看來是新手,加油!
❺ ,誰有排課系統的自動排課演算法的相關代碼啊急求。我的開發環境是jsp。請大俠們指教啊,給個思路也可以。
首先要配置好不同課程的權重,以免出現副科多安排的現象。其次配置每天分別有幾個課時,最後通過資料庫按不同課程的權重隨機調取記錄就能實現自動排課啦。
❻ 自動排課系統的一些演算法思想,高手指教啊
排課演算法的重點就是課程合理安排的問題,這裡面最要的部分應該是正確的使用演算法實現數學中排列組合。
比如寫規定好某某課不能放在第幾節,某某課一天不能超過幾節,某某課屬於某個老師,同一個老師的課同一時間只能安排一節,然後根據這些先決條件進行排列組合就可以了。
good luck.
❼ 自動排課系統的一些演算法思想, 寫出一些關於自動排課的演算法思想,講述明白一點.
排課演算法的重點就是課程合理安排的問題,這裡面最要的部分應該是正確的使用演算法實現數學中排列組合.
比如寫規定好某某課不能放在第幾節,某某課一天不能超過幾節,某某課屬於某個老師,同一個老師的課同一時間只能安排一節,然後根據這些先決條件進行排列組合就可以了.
good luck.
❽ 教師自動排課系統用C++實現
這個程序需要很多的代碼啊 外包還得100+元呢 你用100積分就想得到? 有可能嗎?
❾ 排課系統的實現方法
要編寫一個實用排課系統,最主要解決兩個問題。第一是避免課程沖突,完成所有的課程編排。這個問題可通過設計完善的排課演算法實現。第二個問題是編排的課程要合理,使學校、教師、甚至班級學生滿意。這點不能通過演算法簡單實現的。因為我們面對的不是一個規則,而是面對不同的教師要求,不同的學校環境。解決這個問題最好辦法是軟體提供有效的前期條件設置和後期課程調整,才能確保課程編排合理。
❿ 怎麼用java實現自動排課系統他的思想演算法是什麼
eclipse 只是個開發工具,你可以理解為功能比較豐富的 notepad ...