本發(fā)明涉及鋼廠天車調(diào)度,特別涉及基于匈牙利算法的鋼廠天車調(diào)度方法。
背景技術(shù):
1、無人天車運(yùn)輸作為冶金工業(yè)流程中重要的一環(huán),其運(yùn)輸效率對整體效率有著直接影響。傳統(tǒng)的無人天車調(diào)度由技術(shù)人員控制,通過對冶金區(qū)域分區(qū)、每區(qū)指派一定數(shù)量的天車來進(jìn)行管理。傳統(tǒng)的天車調(diào)度耗費(fèi)人力,同時(shí)效率低、出錯(cuò)率高。在此基礎(chǔ)上,無人天車智能調(diào)度問題及其算法設(shè)計(jì)對提高冶金效率有著重要意義。
2、無人天車由大車和小車兩個(gè)部分構(gòu)成,大車為一可移動(dòng)式杠桿,其中搭載著供小車移動(dòng)的軌道。小車為貨物的直接載體,在大車提供的軌道上運(yùn)行。若將冶金工廠簡化為一個(gè)長方形平面,并建立平面直角坐標(biāo)系,則天車調(diào)度問題可視為點(diǎn)與點(diǎn)之間的最短路徑問題,其中小車為控制點(diǎn),貨物為目標(biāo)點(diǎn),大車控制小車的x軸坐標(biāo),小車在大車上移動(dòng)從而控制自身的y軸坐標(biāo)。
3、針對煉鋼廠的無人天車調(diào)度,現(xiàn)有技術(shù)有專利《一種天車調(diào)度方法、裝置、設(shè)備及可讀存儲(chǔ)介質(zhì)》(cn116934059b)通過獲取調(diào)度信息直接生成移動(dòng)指令,簡化人工操作;專利《天車調(diào)度方法、系統(tǒng)、裝置、電子設(shè)備和存儲(chǔ)介質(zhì)》(cn116822864a)提出了一種解決同軌道多天車阻擋問題的辦法;專利《一種無人天車調(diào)度方法》(cn115099659a)給出了任務(wù)優(yōu)先級(jí)調(diào)度方法,避免天車長時(shí)間空閑或距離過近。
4、現(xiàn)有技術(shù)的缺點(diǎn)是缺乏有效的調(diào)度算法,導(dǎo)致天車和待調(diào)度任務(wù)之間的匹配不夠高效,可能出現(xiàn)資源利用不足或者調(diào)度效率低下的情況。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明目的之一在于提供了一種基于匈牙利算法的鋼廠天車調(diào)度方法,匈牙利算法能夠快速、準(zhǔn)確地確定最優(yōu)調(diào)度方案,從而減少調(diào)度時(shí)間,提高操作效率;通過合理分配任務(wù)和天車,最大化利用現(xiàn)有資源,減少空閑時(shí)間和資源浪費(fèi);最優(yōu)調(diào)度方案減少了調(diào)度沖突和設(shè)備閑置,從而降低了生產(chǎn)成本和運(yùn)營費(fèi)用;更好的調(diào)度管理允許鋼廠在面對生產(chǎn)變化時(shí)快速調(diào)整,提高生產(chǎn)靈活性和響應(yīng)能力。
2、本發(fā)明實(shí)施例提供的基于匈牙利算法的鋼廠天車調(diào)度方法,包括:
3、獲取煉鋼廠原始數(shù)據(jù);
4、基于匈牙利算法,根據(jù)所述煉鋼廠原始數(shù)據(jù),確定最優(yōu)的任務(wù)分配方案;
5、基于最優(yōu)的任務(wù)分配方案,進(jìn)行鋼廠天車調(diào)度。
6、可選地,所述基于匈牙利算法,根據(jù)所述煉鋼廠原始數(shù)據(jù),進(jìn)行鋼廠天車調(diào)度,包括:
7、步驟1:將煉鋼廠原始數(shù)據(jù)轉(zhuǎn)換為天車表tcrane、鋼卷表tcoil、操作表toperation;
8、步驟2:根據(jù)天車表tcrane、鋼卷表tcoil將天車和鋼卷分別抽象成天車結(jié)構(gòu)體和鋼卷結(jié)構(gòu)體,初始化所有天車結(jié)構(gòu)體和鋼卷結(jié)構(gòu)體:
9、步驟3:設(shè)定開始時(shí)間t0、結(jié)束時(shí)間t1、時(shí)間間隔t、當(dāng)前時(shí)間t,初始化t為t0;定義列表lcrane包含時(shí)間t+t前所有匹配狀態(tài)為未匹配的天車結(jié)構(gòu)體,列表lcoil包含時(shí)間t+t前所有匹配狀態(tài)為未匹配的鋼卷結(jié)構(gòu)體;
10、步驟4:重復(fù)步驟5至步驟9直到當(dāng)前時(shí)間t超過結(jié)束時(shí)間t1;
11、步驟5:根據(jù)當(dāng)前時(shí)刻t,更新列表lcrane:加入在t到t+t時(shí)間段內(nèi)匹配狀態(tài)由已匹配變?yōu)槲雌ヅ涞奶燔嚱Y(jié)構(gòu)體;從操作表toperation中讀取t到t+t時(shí)間段內(nèi)的調(diào)度信息,基于調(diào)度信息更新等待運(yùn)輸?shù)匿摼砹斜韑coil:加入t到t+t時(shí)間段內(nèi)需要運(yùn)輸?shù)匿摼斫Y(jié)構(gòu)體;
12、步驟6:定義矩陣a(i,j):矩陣a(i,j)為m×n維狀態(tài)矩陣,表示待求解的分配結(jié)果,其中每個(gè)元素aij為1時(shí)表示i號(hào)鋼卷結(jié)構(gòu)體分配j號(hào)天車結(jié)構(gòu)體,為0時(shí)表示i號(hào)鋼卷結(jié)構(gòu)體不分配j號(hào)天車結(jié)構(gòu)體;m表示當(dāng)前有m個(gè)鋼卷結(jié)構(gòu)體需要分配天車;n表示當(dāng)前有n個(gè)空閑天車結(jié)構(gòu)體;初始化矩陣a(i,j)為全0矩陣;
13、步驟7:定義距離矩陣q(i,j):矩陣q(i,j)為m×n維距離矩陣,其中每個(gè)元素qij表示j號(hào)天車結(jié)構(gòu)體移動(dòng)到i號(hào)鋼卷結(jié)構(gòu)體后天車臂移動(dòng)的距離;設(shè)n=max(m,n),dmax為q(i,j)中最大值,用dmax+1將q(i,j)填充為n×n維的距離矩陣;
14、步驟8:使用python的scipy.optimize庫,通過調(diào)用該庫中的linear_sum_assignment函數(shù),利用匈牙利算法對距離矩陣q(i,j)進(jìn)行計(jì)算,尋找最優(yōu)的任務(wù)分配方案a(i,j),以最小化天車移動(dòng)的總距離;
15、步驟9:將步驟8中得到的最優(yōu)的任務(wù)分配方案a(i,j)作為調(diào)度方案執(zhí)行,更新對應(yīng)移動(dòng)的天車結(jié)構(gòu)體和鋼卷結(jié)構(gòu)體的狀態(tài),將調(diào)度后的數(shù)據(jù)寫入至數(shù)據(jù)庫中,將已匹配的天車結(jié)構(gòu)體和鋼卷結(jié)構(gòu)體分別從列表lcrane和lcrane中移除;將當(dāng)前時(shí)間t增加間隔t,返回至步驟4。
16、可選地,每個(gè)天車結(jié)構(gòu)體和鋼卷結(jié)構(gòu)體中至少包含id、是否匹配的信息。
17、可選地,初始化所有天車結(jié)構(gòu)體和鋼卷結(jié)構(gòu)體包括:
18、從天車表tcrane和鋼卷表tcoil讀取初始天車狀態(tài)和鋼卷狀態(tài),基于初始天車狀態(tài)和鋼卷狀態(tài)將當(dāng)前空閑天車和未分配天車去運(yùn)輸?shù)匿摼淼钠ヅ錉顟B(tài)設(shè)為未匹配,已經(jīng)被調(diào)度的天車和已分配天車去運(yùn)輸?shù)匿摼淼钠ヅ錉顟B(tài)設(shè)為已匹配。
19、可選地,天車臂移動(dòng)的距離具體計(jì)算方法為:
20、d=α|x1-x2|+β|y1-y2|;
21、其中,(x1,y1)為天車臂移動(dòng)的起始坐標(biāo),(x2,y2)為天車臂移動(dòng)的終點(diǎn)坐標(biāo),α、β分別為天車小車和天車大車的能耗系數(shù)。
22、可選地,天車表tcrane至少包含天車id、天車x坐標(biāo)、天車y坐標(biāo)、是否夾有鋼卷、空閑時(shí)間;
23、鋼卷表tcoil至少包含鋼卷id、重量、生產(chǎn)完成時(shí)間、鋼卷x坐標(biāo)、鋼卷y坐標(biāo);
24、操作表toperation至少包含待調(diào)度鋼卷id、計(jì)劃調(diào)度時(shí)間、目標(biāo)地點(diǎn)id。
25、本發(fā)明實(shí)施例提供的基于匈牙利算法的鋼廠天車調(diào)度系統(tǒng),包括:
26、獲取模塊,用于獲取煉鋼廠原始數(shù)據(jù);
27、確定模塊,用于基于匈牙利算法,根據(jù)所述煉鋼廠原始數(shù)據(jù),確定最優(yōu)的任務(wù)分配方案;
28、調(diào)度模塊,用于基于最優(yōu)的任務(wù)分配方案,進(jìn)行鋼廠天車調(diào)度。
29、可選地,所述調(diào)度模塊基于匈牙利算法,根據(jù)所述煉鋼廠原始數(shù)據(jù),進(jìn)行鋼廠天車調(diào)度,包括:
30、步驟1:將煉鋼廠原始數(shù)據(jù)轉(zhuǎn)換為天車表tcrane、鋼卷表tcoil、操作表toperation;
31、步驟2:根據(jù)天車表tcrane、鋼卷表tcoil將天車和鋼卷分別抽象成天車結(jié)構(gòu)體和鋼卷結(jié)構(gòu)體,初始化所有天車結(jié)構(gòu)體和鋼卷結(jié)構(gòu)體:
32、步驟3:設(shè)定開始時(shí)間t0、結(jié)束時(shí)間t1、時(shí)間間隔t、當(dāng)前時(shí)間t,初始化t為t0;定義列表lcrane包含時(shí)間t+t前所有匹配狀態(tài)為未匹配的天車結(jié)構(gòu)體,列表lcoil包含時(shí)間t+t前所有匹配狀態(tài)為未匹配的鋼卷結(jié)構(gòu)體;
33、步驟4:重復(fù)步驟5至步驟9直到當(dāng)前時(shí)間t超過結(jié)束時(shí)間t1;
34、步驟5:根據(jù)當(dāng)前時(shí)刻t,更新列表lcrane:加入在t到t+t時(shí)間段內(nèi)匹配狀態(tài)由已匹配變?yōu)槲雌ヅ涞奶燔嚱Y(jié)構(gòu)體;從操作表toperation中讀取t到t+t時(shí)間段內(nèi)的調(diào)度信息,基于調(diào)度信息更新等待運(yùn)輸?shù)匿摼砹斜韑coil:加入t到t+t時(shí)間段內(nèi)需要運(yùn)輸?shù)匿摼斫Y(jié)構(gòu)體;
35、步驟6:定義矩陣a(i,j):矩陣a(i,j)為m×n維狀態(tài)矩陣,表示待求解的分配結(jié)果,其中每個(gè)元素aij為1時(shí)表示i號(hào)鋼卷結(jié)構(gòu)體分配j號(hào)天車結(jié)構(gòu)體,為0時(shí)表示i號(hào)鋼卷結(jié)構(gòu)體不分配j號(hào)天車結(jié)構(gòu)體;m表示當(dāng)前有m個(gè)鋼卷結(jié)構(gòu)體需要分配天車;n表示當(dāng)前有n個(gè)空閑天車結(jié)構(gòu)體;初始化矩陣a(i,j)為全0矩陣;
36、步驟7:定義距離矩陣q(i,j):矩陣q(i,j)為m×n維距離矩陣,其中每個(gè)元素qij表示j號(hào)天車結(jié)構(gòu)體移動(dòng)到i號(hào)鋼卷結(jié)構(gòu)體后天車臂移動(dòng)的距離;設(shè)n=max(m,n),dmax為q(i,j)中最大值,用dmax+1將q(i,j)填充為n×n維的距離矩陣;
37、步驟8:使用python的scipy.optimize庫,通過調(diào)用該庫中的linear_sum_assignment函數(shù),利用匈牙利算法對距離矩陣q(i,j)進(jìn)行計(jì)算,尋找最優(yōu)的任務(wù)分配方案a(i,j),以最小化天車移動(dòng)的總距離;
38、步驟9:將步驟8中得到的最優(yōu)的任務(wù)分配方案a(i,j)作為調(diào)度方案執(zhí)行,更新對應(yīng)移動(dòng)的天車結(jié)構(gòu)體和鋼卷結(jié)構(gòu)體的狀態(tài),將調(diào)度后的數(shù)據(jù)寫入至數(shù)據(jù)庫中,將已匹配的天車結(jié)構(gòu)體和鋼卷結(jié)構(gòu)體分別從列表lcrane和lcrane中移除;將當(dāng)前時(shí)間t增加間隔t,返回至步驟4。
39、可選地,每個(gè)天車結(jié)構(gòu)體和鋼卷結(jié)構(gòu)體中至少包含id、是否匹配的信息。
40、可選地,初始化所有天車結(jié)構(gòu)體和鋼卷結(jié)構(gòu)體包括:
41、從天車表tcrane和鋼卷表tcoil讀取初始天車狀態(tài)和鋼卷狀態(tài),基于初始天車狀態(tài)和鋼卷狀態(tài)將當(dāng)前空閑天車和未分配天車去運(yùn)輸?shù)匿摼淼钠ヅ錉顟B(tài)設(shè)為未匹配,已經(jīng)被調(diào)度的天車和已分配天車去運(yùn)輸?shù)匿摼淼钠ヅ錉顟B(tài)設(shè)為已匹配。
42、本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。
43、下面通過附圖和實(shí)施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。