基于時(shí)間約束的資源調(diào)度問(wèn)題的空間排斥算法
【專利摘要】本發(fā)明屬于有限資源調(diào)度問(wèn)題運(yùn)算方法,本算法尤其對(duì)于基于時(shí)間約束的離散性資源的分配問(wèn)題,可以大幅縮減該問(wèn)題的計(jì)算時(shí)間。該發(fā)明對(duì)于已知資源供應(yīng)和消耗的總量與分量的情況下,求取一個(gè)基于時(shí)間序列的資源分配方案,具有較高的效率。本發(fā)明通過(guò)構(gòu)造一系列相互約束的數(shù)據(jù)結(jié)構(gòu),通過(guò)資源在時(shí)間序列的錯(cuò)位排列,即可完成資源的分配,將龐大的狀態(tài)空間的搜索縮減為對(duì)一個(gè)行的搜索,從而去除了對(duì)整個(gè)狀態(tài)空間的搜索和回溯帶來(lái)的繁復(fù)計(jì)算,大幅提高了算法的效率。
【專利說(shuō)明】
基于時(shí)間約束的資源調(diào)度問(wèn)題的空間排斥算法 一、
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于有限資源調(diào)度問(wèn)題運(yùn)算方法,本算法尤其對(duì)于基于時(shí)間約束的離散性 資源的分配問(wèn)題,可以大幅縮減該問(wèn)題的計(jì)算時(shí)間。 二、
【背景技術(shù)】
[0002] 有限資源調(diào)度問(wèn)題是在實(shí)際應(yīng)用中經(jīng)常遇到的問(wèn)題,如:運(yùn)輸物流系統(tǒng)的車輛調(diào) 度,自動(dòng)教師排課系統(tǒng),工業(yè)設(shè)備租賃等;所謂基于時(shí)間約束的資源調(diào)度問(wèn)題,是指在資源 調(diào)度問(wèn)題中,資源提供者和資源消費(fèi)者都具有時(shí)間互斥的特點(diǎn):即在同一個(gè)時(shí)刻任何一個(gè) 資源只可以被一個(gè)消費(fèi)者占用,同時(shí)資源消費(fèi)者在任何時(shí)刻只可以消費(fèi)一個(gè)資源。
[0003] 基于時(shí)間約束的資源調(diào)度問(wèn)題的空間排斥算法擬解決的問(wèn)題是:在已知資源供應(yīng) 和消費(fèi)的總量和分量的情況下,如何把資源分配給資源消費(fèi)者?當(dāng)這些資源的分配不受偏 序限制,但受制于時(shí)間序列的約束時(shí),在實(shí)際工作中資源供應(yīng)種類和數(shù)量、消費(fèi)實(shí)體數(shù)量巨 大的情況下,我們?nèi)绾瓮ㄟ^(guò)一種計(jì)算方法,由計(jì)算機(jī)軟件找到一個(gè)給定的資源對(duì)于預(yù)定的 消費(fèi)的基本分配方案。這是一個(gè)十分有意義的事情,因?yàn)樵诘玫揭粋€(gè)基本方案之后,我們可 以基于該方案進(jìn)行優(yōu)化和再排列,最終得到一個(gè)最接近要求的方案。
[0004] 這一類問(wèn)題應(yīng)用及其廣泛,尤其是在計(jì)算機(jī)信息系統(tǒng)中更是如此。該問(wèn)題理論上 涉及到運(yùn)籌學(xué)和組合數(shù)學(xué)等方面的內(nèi)容,應(yīng)用中又涉及到計(jì)算機(jī)軟件與數(shù)據(jù)結(jié)構(gòu)、算法設(shè) 計(jì),人工智能等方面的內(nèi)容;因此在實(shí)際中解決該問(wèn)題具有一定的難度。通常的軟件設(shè)計(jì)領(lǐng) 域,沒(méi)有充分地使用運(yùn)籌學(xué)思想,局限于某一個(gè)考慮問(wèn)題的角度。而從事作業(yè)調(diào)度研究的專 家學(xué)者,更加注重專業(yè)領(lǐng)域中的前緣和難點(diǎn),對(duì)于一些實(shí)際的應(yīng)用卻有較少的注意,這或許 是該問(wèn)題一直未有較好解決方案的原因。
[0005] 對(duì)于時(shí)間約束的資源調(diào)度問(wèn)題,當(dāng)前國(guó)內(nèi)外多數(shù)調(diào)度算法都基于帶回溯的狀態(tài)空 間深度優(yōu)先搜索方案;在排列空間上,不斷地進(jìn)行試探和回溯,對(duì)整個(gè)排列的狀態(tài)空間進(jìn)行 窮舉;其算法的優(yōu)化原則也是基于搜索空間的優(yōu)化,例如采用a剪枝策略。這些算法 在復(fù)雜的應(yīng)用環(huán)境中,當(dāng)狀態(tài)空間很大時(shí),仍然具有非常大的時(shí)間復(fù)雜度;即使采用各種優(yōu) 化算法,也很難從根本上減少計(jì)算量,這對(duì)于只希望找到一個(gè)解的應(yīng)用而言,計(jì)算的代價(jià)太 大。
[0006] 如果把上述問(wèn)題分為兩步來(lái)考慮,首先找到一個(gè)基本的符合要求的分配方案,然 后在此方案上進(jìn)行優(yōu)化,則可以化解復(fù)雜而費(fèi)時(shí)的搜索工作。
[0007] 可以使用本發(fā)明實(shí)現(xiàn)第一步,而采用其他方法進(jìn)行排列優(yōu)化。
[0008] 本發(fā)明沒(méi)有包括如何優(yōu)化調(diào)度的方法,這些方法可以借助人工智能領(lǐng)域的一些經(jīng) 典方法,如:遺傳算法等。 三、
【發(fā)明內(nèi)容】
[0009] 為了減少基于時(shí)間約束的資源調(diào)度問(wèn)題的巨大狀態(tài)空間搜索帶來(lái)的大量計(jì)算,本 算法通過(guò)構(gòu)造一個(gè)互斥的資源規(guī)劃空間,避免了對(duì)狀態(tài)空間的窮舉搜索,在調(diào)度過(guò)程中不 需要進(jìn)行大范圍回溯,從而較大地提高了計(jì)算效率。
[0010] 所謂空間排斥算法就是通過(guò)對(duì)資源供應(yīng)者和供給量的時(shí)間序列,構(gòu)造一個(gè)大的二 維狀態(tài)空間,通過(guò)對(duì)資源消費(fèi)實(shí)體按照時(shí)間順序錯(cuò)位排列的資源,從而最終完成整個(gè)資源 對(duì)消費(fèi)實(shí)體的分配。本發(fā)明對(duì)整個(gè)狀態(tài)空間的搜索過(guò)程壓縮為對(duì)單一資源的深度搜索過(guò) 程,并且沒(méi)有回溯,從而大幅度提高分配的速度。
[0011] 本發(fā)明將整個(gè)計(jì)算方法分為兩步,以下是表述算法的幾個(gè)約定
[0012] :表示定義的實(shí)體,內(nèi)容表示實(shí)體的必要特征,可以根據(jù)實(shí)際應(yīng)用拓展實(shí)體特征
[0013] []:表示實(shí)體集合
[0014] -:表示元素之間的依賴關(guān)系
[0015] 具體的計(jì)算方案如下:
[0016] 首先,定義需參與調(diào)度的各種數(shù)據(jù)結(jié)構(gòu)
[0017] 1、定義表示基本資源單元的數(shù)據(jù)結(jié)構(gòu):
[0018] resitemlresID,resTotal};①
[0019] resitem :資源單元resID :資源id resTotal :該資源可以提供的數(shù)量
[0020] 建立表示資源集合:resitem[]resitems ;
[0021] 2、定義資源消耗實(shí)體的數(shù)據(jù)結(jié)構(gòu):ex_resitem{ex_resID}②
[0022] ex_resitem :資源消耗實(shí)體ex_resID :資源消耗實(shí)體ID
[0023] 建立資源消耗實(shí)體集合:ex_resitem[]ex_resitems ;
[0024] 3、建立資源消耗實(shí)體對(duì)各種資源的需求量關(guān)系的數(shù)據(jù)結(jié)構(gòu):
[0025] rtoer : {ex_resID 一 [resID,resNumber]};③
[0026] resID:同①中說(shuō)明
[0027] resNumber :表示資源需求數(shù)量
[0028] [resID,resNumber]:表不 resID,resNumber 的集合
[0029] rtoer關(guān)系表示各個(gè)消耗實(shí)體對(duì)于每一個(gè)資源的需求量
[0030] 4、基于時(shí)間序列劃分資源量二維狀態(tài)空間:resMap_t : {resitem,h J ;④
[0031] resMapj需要將所有的資源按照時(shí)間序列編排成二維表,該表的行為resID,列 為最小需求的時(shí)間單元序列,交叉點(diǎn)為提供的資源量
[0032] tln:時(shí)間單元序列
[0033] ①②③④在實(shí)際應(yīng)用中通常是已知的條件,通過(guò)①②③,再加上各資源在時(shí)間序 列上的分布情況,就可以得到resMap_t數(shù)據(jù)結(jié)構(gòu)。
[0034] 5、定義基于時(shí)間序列劃分的資源消費(fèi)實(shí)體對(duì)資源要求的關(guān)系的數(shù)據(jù)結(jié)構(gòu):
[0035] ex_resMap_t : {ex_resitem,h n};⑤
[0036] ex_resMap_t將消費(fèi)實(shí)體在每一個(gè)時(shí)間單元的資源消費(fèi)量進(jìn)行記錄。該關(guān)系存放 本發(fā)明求取的結(jié)果。因此,初始化時(shí),該關(guān)系為空。
[0037] ④⑤數(shù)據(jù)結(jié)構(gòu)的時(shí)間序列應(yīng)該一致,這樣就為實(shí)施以下算法提供保障。
[0038] 其次,按照下面步驟實(shí)現(xiàn)計(jì)算方法:
[0039] 1、初始化 resitem、resitems、ex_resitem、ex_resitems、rtoer、resMap_t、ex_ resMap_t〇
[0040] 2、從ex_resitems中取出一個(gè)實(shí)體,根據(jù)該實(shí)體id從rtoer中獲取所需要的 resID和resNumber,如果ex_resitems取完,提示分配完畢信息,轉(zhuǎn)6,否則繼續(xù)。
[0041] 3、檢查resitems的相應(yīng)的resID是否具有可分配資源,如果存在,轉(zhuǎn)向resMap_t 查到欲分配的資源id,則按照一個(gè)resID在同一時(shí)間單元只被一個(gè)消費(fèi)者占用的原則(時(shí) 間約束,空間排斥法),在該資源的時(shí)間序列上進(jìn)行搜索分配,完成該消費(fèi)實(shí)體的資源分配; 分配后在resMap_t關(guān)系的相應(yīng)時(shí)間點(diǎn)上作上已分配標(biāo)記(表示該時(shí)間單元該資源不可 用);同時(shí)減少該resID的資源總量;繼續(xù)下一步。如果resMap_t在相應(yīng)的分量上無(wú)資源 可分,提示分配失敗信息,轉(zhuǎn)6.
[0042] 4、記錄和輸出該消耗實(shí)體資源分配數(shù)據(jù)
[0043] 5、回到步驟2
[0044] 6、結(jié)束
[0045] 由上述算法過(guò)程可以看出,該計(jì)算方法是按照時(shí)間序列完成一個(gè)分配方案,該方 案具備各種分配方案的基本特征。對(duì)于一個(gè)資源調(diào)度項(xiàng)目而言,可能存在多個(gè)分配方案;其 中有些方案可能更符合實(shí)際情況,另一些可能不能很好地適應(yīng)工作狀況。但無(wú)論哪一種方 案都具備相同的特征,因此尋找最優(yōu)分配可以在本發(fā)明的基礎(chǔ)上進(jìn)行方案優(yōu)化,這不屬于 本發(fā)明的范疇。 四、
【附圖說(shuō)明】
[0046] 圖1為整個(gè)算法的邏輯結(jié)構(gòu)圖,它與以上所述的算法過(guò)程具有同等效果,互相參 照閱讀將更加便于說(shuō)明本算法。
[0047] 圖2為實(shí)施案例中對(duì)于一個(gè)班級(jí)課程的部分搜索求解樹(shù)。 五、
【具體實(shí)施方式】
[0048] 為了使本發(fā)明所要解決的技術(shù)問(wèn)題、技術(shù)方案及有益效果更加清楚明白,以下結(jié) 合附圖及一個(gè)課程安排的具體實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)的說(shuō)明。應(yīng)當(dāng)說(shuō)明的是,此處所描 述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0049] 本例使用B表示班級(jí),C表示課程,P表示教師
[0050] 假設(shè)每班級(jí)每周可安排課程為10次,每教師每周的最大排課量為8次,P(Ci)表 示任第i門課程的教師數(shù)(每教師對(duì)應(yīng)一門課程),每一門課程的教師數(shù)量為(也就是課程 量):P(C1) = 2 P(C2) = 2 P(C3) = 2 P(C4) = 1,由此得到與課程相關(guān)的教師編號(hào):P11, P12, P21,P22, P31,P32, P41。其中Pll,P12表示任教C1課程的教師的序號(hào),其他標(biāo)號(hào)類 推;因此課程與教師的對(duì)應(yīng)關(guān)系為:
[0051] C1 - (Pll,P12) C2 - (P21,P22) C3 - (P31,P32) C4 - (P41)
[0052] 假設(shè)無(wú)特別情況下,各教師擔(dān)任的課程都按近似平均分配(如果不想平均分配, 可以調(diào)整),由此可以計(jì)算得到7個(gè)教師實(shí)體以及各實(shí)體的教師號(hào)和任課數(shù)量:
[0053] (Pll,8) (P12,7) (P21,8) (P22,8) (P31,7) (P32,5) (P41,8)
[0054] 各班級(jí)對(duì)于課程的需求表見(jiàn)表1 :
[0055] 表1班級(jí)對(duì)各課程需求表
[0056]
[0057] 建立教師安排記錄,見(jiàn)表2, T1-T10表示每班級(jí)10次課程,該表初始化為空。
[0058] 開(kāi)始算法:以班級(jí)數(shù)循環(huán),按照所需課程到teachers結(jié)構(gòu)中取任課教師(因?yàn)榻?師與課程有對(duì)應(yīng)關(guān)系),當(dāng)某一個(gè)教師的課程為〇時(shí),則取任教同一課程的下一位教師;由 于同一列上同一個(gè)教師不能出現(xiàn)兩次,因此在本行課程安排的算法(以B2為例)可以表述 為:B2所需課程為C2 (2)、C3 (4)、C4 (2),由課程教師對(duì)應(yīng)關(guān)系表以及teachers數(shù)據(jù)結(jié)構(gòu)可 取出P21 (2)、P31 (4)、P41 (2),接著在表2中找到P21、P31、P41三個(gè)行,由此對(duì)這三行建立 一個(gè)如圖2 (參見(jiàn)附圖)的搜索樹(shù)。然后對(duì)此三行的可編排時(shí)間進(jìn)行深度優(yōu)先搜索,即可找 出本班的課程安排;如此完成之后,再次修改表2和teachers數(shù)據(jù)結(jié)構(gòu)。照此方式,直到所 有班級(jí)的課程安排完成。
[0059] 表2教師時(shí)間安排記錄
[0060]
[0061] 按上述算法,可得到課程編排表3 :
[0062] 表3課程編排表
[0063]
[0064] 以上所述僅為本發(fā)明的一個(gè)實(shí)施案例,并不用于限制本發(fā)明,凡在本發(fā)明的原則 和精神之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均就包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1. 基于時(shí)間約束的資源調(diào)度問(wèn)題的空間排斥算法,由基本資源單元、資源消耗實(shí)體、消 耗實(shí)體對(duì)各種資源的需求量、基于時(shí)間序列劃分資源量二維狀態(tài)空間幾個(gè)相互約束的數(shù)據(jù) 結(jié)構(gòu)和分配算法構(gòu)成。2. 根據(jù)權(quán)利要求書(shū)1所述的基于時(shí)間約束的資源調(diào)度問(wèn)題的空間排斥算法,其特征在 于構(gòu)造了基于時(shí)間序列劃分資源量二維狀態(tài)空間resMap_t和資源在時(shí)間序列上的錯(cuò)位排 列方法?;跁r(shí)間序列劃分資源量二維狀態(tài)空間resMap_t確保尋找分配方案的過(guò)程中,將 搜索空間壓縮在一個(gè)行上;資源在時(shí)間序列上的錯(cuò)位排列方法確保了分配的可行性。
【文檔編號(hào)】G06F17/30GK105893727SQ201410741734
【公開(kāi)日】2016年8月24日
【申請(qǐng)日】2014年12月8日
【發(fā)明人】吳旭軍, 徐寶華, 張福元
【申請(qǐng)人】煙臺(tái)惠通網(wǎng)絡(luò)技術(shù)有限公司