本發(fā)明屬于離散制造行業(yè)生產(chǎn)排程應(yīng)用領(lǐng)域,尤其涉及基于改進(jìn)粒子群與啟發(fā)式策略的生產(chǎn)排產(chǎn)方法及系統(tǒng)。
背景技術(shù):
離散制造行業(yè)逐漸由傳統(tǒng)的單品種、大批量生產(chǎn)模式向“面向訂單”的多品種、小批量的生產(chǎn)模式轉(zhuǎn)化,生產(chǎn)過(guò)程仍普遍存在以下現(xiàn)象:a.生產(chǎn)計(jì)劃制定依賴于人工經(jīng)驗(yàn),無(wú)科學(xué)依據(jù)。b.實(shí)際生產(chǎn)過(guò)程中的插單現(xiàn)象影響生產(chǎn)進(jìn)度。c.隨著生產(chǎn)過(guò)程的進(jìn)行無(wú)法及時(shí)有效的評(píng)估剩余產(chǎn)能。d.存在嚴(yán)重的交貨期拖延現(xiàn)象。
上述生產(chǎn)過(guò)程問(wèn)題導(dǎo)致實(shí)際生產(chǎn)過(guò)程中的浪費(fèi)現(xiàn)象嚴(yán)重,增加了生產(chǎn)成本,降低了企業(yè)利潤(rùn)。能否迅速高效的對(duì)目標(biāo)訂單做出生產(chǎn)計(jì)劃排程,在考慮能力和設(shè)備的前提下,在物料數(shù)量一定的情況下,安排各生產(chǎn)任務(wù)的生產(chǎn)順序,優(yōu)化生產(chǎn)順序,優(yōu)化選擇生產(chǎn)設(shè)備,使得減少等待時(shí)間,平衡各機(jī)器和工人的生產(chǎn)負(fù)荷。從而優(yōu)化產(chǎn)能,提高生產(chǎn)效率,縮短生產(chǎn)生命周期,適應(yīng)市場(chǎng)變化及成本控制,這關(guān)系著企業(yè)利益及長(zhǎng)遠(yuǎn)發(fā)展。
目前已出現(xiàn)多種算法對(duì)生產(chǎn)計(jì)劃排程及生產(chǎn)調(diào)度進(jìn)行處理優(yōu)化,如數(shù)學(xué)規(guī)劃法、枚舉法、分枝定界法、遺傳算法等。數(shù)學(xué)規(guī)劃法實(shí)現(xiàn)起來(lái)雖簡(jiǎn)單,但規(guī)則定義單一,無(wú)法貼合實(shí)際生產(chǎn)過(guò)程。枚舉法只能處理簡(jiǎn)單問(wèn)題,對(duì)于實(shí)際生產(chǎn)中面對(duì)的大規(guī)模問(wèn)題無(wú)法在可以接受的時(shí)間內(nèi)獲得有指導(dǎo)意義的結(jié)果。分枝定界法在解決數(shù)據(jù)量龐大的生產(chǎn)問(wèn)題上既耗時(shí)又耗內(nèi)存。遺傳算法以生物進(jìn)化為原型,雖然具有收斂性高、魯棒性好等特點(diǎn),但算法實(shí)現(xiàn)過(guò)程中三個(gè)基本算子:選擇、交叉和變異的選擇依靠經(jīng)驗(yàn),嚴(yán)重影響解的品質(zhì)。
基于群體智能優(yōu)化方法的粒子群算法實(shí)現(xiàn)過(guò)程基于計(jì)算模型,調(diào)試參數(shù)基于粒子個(gè)體經(jīng)驗(yàn)與群體經(jīng)驗(yàn),可行解更可靠,該算法具有算法簡(jiǎn)單、收斂速度快、精度高、效率高等特點(diǎn)。但傳統(tǒng)的粒子群算法仍存在以下缺點(diǎn)與不足:a.當(dāng)粒子群算法運(yùn)行先期收斂速度過(guò)快時(shí),算法運(yùn)行后期容易陷入局部最優(yōu),無(wú)法獲得全局最優(yōu)解。b.粒子隨著生產(chǎn)過(guò)程工序的改變而產(chǎn)生的位置移動(dòng)會(huì)產(chǎn)生無(wú)效粒子,從而導(dǎo)致出現(xiàn)無(wú)解。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的就是為了解決上述問(wèn)題,提供基于改進(jìn)粒子群與啟發(fā)式策略的生產(chǎn)排產(chǎn)方法及系統(tǒng),它通過(guò)采用新型粒子編碼方式,加快了算法的計(jì)算速度,它能夠解決傳統(tǒng)粒子群優(yōu)化算法處理過(guò)程中出現(xiàn)的局部最優(yōu)問(wèn)題,極大程度的避免了不可行解現(xiàn)象的發(fā)生,實(shí)現(xiàn)生產(chǎn)排程的高效性與最優(yōu)性。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
基于改進(jìn)粒子群與啟發(fā)式策略的生產(chǎn)排產(chǎn)方法,包括以下步驟:
步驟(1):根據(jù)工單任務(wù)在工單加工過(guò)程中的時(shí)間先后邏輯關(guān)系和工單任務(wù)處理時(shí)間與處理工單任務(wù)的機(jī)器的可用時(shí)間段之間的關(guān)系提出約束條件;
步驟(2):按照工廠訂單加工交貨方式的不同分為兩種排產(chǎn)策略,兩種排產(chǎn)策略包括正排產(chǎn)策略和倒排產(chǎn)策略,如果是正排產(chǎn)策略就定義正排產(chǎn)策略的目標(biāo)函數(shù),如果是倒排產(chǎn)策略就定義倒排產(chǎn)策略的目標(biāo)函數(shù);目標(biāo)函數(shù)即適應(yīng)度函數(shù);
步驟(3)粒子種群初始化:通過(guò)隨機(jī)方式初始化種群粒子,粒子的初始位置和粒子的初始速度隨機(jī)均通過(guò)隨機(jī)方式生成,粒子的排序采用序編碼方式;所述序編碼方式是指按照工單任務(wù)上線順序進(jìn)行一維順序編碼;
步驟(4):迭代尋優(yōu):根據(jù)約束條件及適應(yīng)度函數(shù)計(jì)算每個(gè)粒子的適應(yīng)度值,根據(jù)粒子的初始位置更新粒子經(jīng)過(guò)的歷史最優(yōu)位置,根據(jù)粒子的適應(yīng)度值最小所對(duì)應(yīng)粒子的位置更新全局最優(yōu)位置,最終全局最優(yōu)位置對(duì)應(yīng)粒子的序列即為最優(yōu)工單排產(chǎn)方法;
步驟(5):設(shè)定迭代終止條件為最大迭代次數(shù),判斷是否達(dá)到迭代終止條件,若是則輸出全局最優(yōu)解;若否,跳轉(zhuǎn)至步驟(4)繼續(xù)尋找最優(yōu)解。
所述步驟(1)中約束條件:
所述步驟(1)中在選擇機(jī)器確定工單加工時(shí)間的過(guò)程中,考慮工單任務(wù)在工單加工過(guò)程中的時(shí)間先后邏輯關(guān)系,工單任務(wù)一旦開(kāi)始不能中斷,即單個(gè)工單任務(wù)不可跨機(jī)器的不可用時(shí)間分兩次加工,單臺(tái)機(jī)器同一時(shí)間僅可加工一個(gè)工單任務(wù),機(jī)器僅在可用的時(shí)間段內(nèi)加工工件。
所述步驟(2)中適應(yīng)度函數(shù)即目標(biāo)函數(shù)。
所述正排策略,期望加工的訂單盡早交貨。
所述倒排策略,是按照訂單交貨期進(jìn)行排產(chǎn),期望在交貨期前交貨,且加工完畢后盡量少的占用庫(kù)存。
所述正排策略的目標(biāo)函數(shù):
min∑所有工單(工單計(jì)劃結(jié)束時(shí)間-工單計(jì)劃開(kāi)始時(shí)間)(2)
所述倒排策略的目標(biāo)函數(shù):
min∑所有工單|工單計(jì)劃開(kāi)始時(shí)間-工單交貨期|+2|工單計(jì)劃結(jié)束時(shí)間-工單交貨期|(3)
適應(yīng)度值越小越好。
所述步驟(3)中初始種群粒子的生成采用隨機(jī)方式,對(duì)粒子的位置及速度通過(guò)隨機(jī)方式生成,粒子排序采用序編碼方式,即采用與工單任務(wù)上線順序?qū)?yīng)的順序進(jìn)行一維順序編碼方式。
所述步驟(3)中初始位置的生成方式,對(duì)于長(zhǎng)度為n的編碼,隨機(jī)生成長(zhǎng)度為n向量的序列作為單個(gè)粒子的初始位置。
所述步驟(3)中初始速度的生成方式,對(duì)于長(zhǎng)度為n的編碼,生成n個(gè)0至n-1之間的隨機(jī)數(shù),組成長(zhǎng)度為n的向量作為單個(gè)粒子初始速度。
所述步驟(4),包括以下步驟:
步驟(4-1):粒子的初始位置是每個(gè)粒子在運(yùn)動(dòng)初期的第一個(gè)位置,設(shè)為該粒子的初始最優(yōu)位置;根據(jù)約束條件及適應(yīng)度函數(shù)計(jì)算每個(gè)粒子的適應(yīng)度值,適應(yīng)度值最小對(duì)應(yīng)粒子所在位置即為全局最優(yōu)位置。
步驟(4-2):通過(guò)改進(jìn)的速度更新公式和位置更新公式對(duì)粒子飛行方向進(jìn)行修正;
改進(jìn)的速度更新公式如下:
vi=w(vi+ri)+c1r1(pbesti-xi)+c2r2(gbest-xi)(4)
其中,i代表粒子的個(gè)數(shù),設(shè)定i=200,xi代表粒子i的位置;vi代表粒子i的速度;ri代表粒子i與其他粒子之間的斥力,稱為斥力因子;w稱為是pso的自適應(yīng)因子,取值介于[0,1]區(qū)間,應(yīng)用中均采取自適應(yīng)的取值方法,一開(kāi)始令w=0.9,使得pso全局優(yōu)化能力較強(qiáng),隨著迭代的深入,參數(shù)w進(jìn)行遞減,從而使得pso具有較強(qiáng)的局部?jī)?yōu)化能力,當(dāng)?shù)Y(jié)束時(shí),w=0.1;參數(shù)c1和c2稱為是學(xué)習(xí)因子(learnfactor),設(shè)置為1.4961;而r1和r2為介于[0,1]之間的隨機(jī)概率值;pbesti代表粒子i的歷史最優(yōu)位置;gbest代表種群全局最優(yōu)位置。
所述斥力因子ri源于同性電荷間的相互作用原理。在現(xiàn)實(shí)世界中,粒子尤其是帶同性電荷的粒子之間存在著斥力(repulsion),其大小與粒子間距離的平方成反比,方向指向粒子相互分離的方向,這種斥力使得粒子趨向于均勻地分布在空間中。受此啟發(fā),本發(fā)明在傳統(tǒng)粒子群速度更新公式中,增加了粒子之間的斥力因子ri,改進(jìn)之后的粒子群算法,不再要求初始解均勻地分布于解空間中,進(jìn)一步增加了算法全局尋優(yōu)的能力。與慣性因子類似,斥力因子ri之前增加了自適應(yīng)因子w,從而使得pso具有較強(qiáng)的局部?jī)?yōu)化能力。
位置更新公式如下:
xi=xi+vi(6)
步驟(4-3):計(jì)算每個(gè)粒子的適應(yīng)度值。對(duì)單個(gè)粒子,將該粒子適應(yīng)值與其經(jīng)過(guò)歷史最優(yōu)位置pbest時(shí)的適應(yīng)度值作比較,如果當(dāng)前位置粒子的適應(yīng)度值小于pbest時(shí)的適應(yīng)度值,則將該粒子的當(dāng)前位置作為單個(gè)粒子的歷史最優(yōu)位置pbest;
對(duì)每個(gè)粒子,均將每個(gè)粒子適應(yīng)度值與粒子群全局最優(yōu)位置gbest作比較,如果某個(gè)粒子所在位置的適應(yīng)度值小于gbest時(shí)的適應(yīng)度值,則利用該粒子的當(dāng)前位置更新粒子群全局最優(yōu)位置gbest;否則不進(jìn)行更新;
根據(jù)公式(4)-(6)看出,根據(jù)速度更新公式更新粒子速度,根據(jù)位置更新公式更新粒子位置,通過(guò)評(píng)價(jià)每個(gè)粒子的適應(yīng)度,更新粒子經(jīng)過(guò)的歷史最優(yōu)位置與全局最優(yōu)位置,最終全局最優(yōu)位置對(duì)應(yīng)粒子的序列即為最優(yōu)工單排產(chǎn)方法。
所述步驟(4-3)中適應(yīng)度計(jì)算中采用的是帶時(shí)間窗的插空排產(chǎn)算法,在排產(chǎn)過(guò)程中,將時(shí)間看作一個(gè)維度,將所有被占用的機(jī)器資源看作容器,每臺(tái)機(jī)器對(duì)象帶有一個(gè)在設(shè)定有限時(shí)間內(nèi)可用的時(shí)間窗對(duì)象;所述時(shí)間窗對(duì)象根據(jù)工廠的機(jī)器開(kāi)機(jī)或加工日歷進(jìn)行初始化,包含一個(gè)或多個(gè)可用時(shí)間段,在每個(gè)可用時(shí)間段內(nèi)機(jī)器能夠加工一個(gè)工單任務(wù);
粒子群中的單個(gè)粒子的每一維度的數(shù)值對(duì)應(yīng)一個(gè)工單任務(wù),每個(gè)粒子相當(dāng)于當(dāng)前所有要排工單任務(wù)的順序;
適應(yīng)度計(jì)算實(shí)質(zhì)是將根據(jù)單個(gè)粒子值獲得工單任務(wù)在每個(gè)機(jī)器的加工上線及下線時(shí)間,也可稱之為根據(jù)粒子所給出的工單任務(wù)順序進(jìn)行排產(chǎn)的過(guò)程。其中加工時(shí)間由加工的機(jī)器型號(hào)以及工單任務(wù)的工單產(chǎn)品屬性確定,加工時(shí)間作為排產(chǎn)的已知信息傳入。
所述步驟(4-3)步驟如下:
(4-3-1):在粒子傳入后先要進(jìn)行解碼,即將傳入的單個(gè)粒子數(shù)值解析為工單任務(wù)的排產(chǎn)順序。
(4-3-2):按照得到的工單任務(wù)的排產(chǎn)順序,結(jié)合當(dāng)前工單的執(zhí)行程度,在工單任務(wù)可用機(jī)器列表中按照正排或倒排的原則選定機(jī)器,正排是按照第一個(gè)工序往后排產(chǎn),優(yōu)先選擇可最先加工完當(dāng)前工單任務(wù)的機(jī)器;倒排是從最后一個(gè)工序開(kāi)始,依次向前安排工序,機(jī)器選擇策略為選擇最晚開(kāi)始加工當(dāng)前任務(wù)的機(jī)器;
將工單任務(wù)所需的時(shí)間段插入選定機(jī)器的可行時(shí)間段,同時(shí)維護(hù)選定機(jī)器可用時(shí)間段。具體步驟如下:在正排策略下,按照當(dāng)前工單任務(wù)所屬工單已完成部分的截止時(shí)間和工單任務(wù)的最晚結(jié)束時(shí)間范圍內(nèi)遍歷所有可行的機(jī)器的可行時(shí)間段,并依次計(jì)算預(yù)計(jì)結(jié)束的時(shí)間,選出最早完成的機(jī)器為選擇出的機(jī)器和開(kāi)始結(jié)束時(shí)間,記錄到當(dāng)前工單任務(wù)的結(jié)果中,將已占用的區(qū)間在可行時(shí)間窗對(duì)象中置為不可用。
(4-3-3);依次重復(fù)步驟(4-3-2),直至當(dāng)前粒子對(duì)應(yīng)的工單任務(wù)全部安排完畢;至此單個(gè)粒子的排產(chǎn)過(guò)程完成,按照客戶的需求,計(jì)算適應(yīng)度返回粒子群的適應(yīng)度函數(shù)值。
(4-3-4)特殊情況處理:在所給的可用時(shí)間不足,有訂單無(wú)法安排生產(chǎn)的情況,則適應(yīng)度反饋為正無(wú)窮大。如果所有粒子在當(dāng)代粒子群的計(jì)算中都沒(méi)有排開(kāi),則會(huì)跳轉(zhuǎn)至算法開(kāi)頭,重新初始化粒子群,繼續(xù)尋優(yōu),直至到達(dá)停止條件,停止該次粒子群迭代。排產(chǎn)策略有兩類,一類是約束優(yōu)先,一類是結(jié)果優(yōu)先。約束優(yōu)先策略下,如果未排出結(jié)果,無(wú)論是正排還是倒排均返回時(shí)間不夠,排產(chǎn)失敗。在結(jié)果優(yōu)先的策略下,正排會(huì)按照客戶優(yōu)先級(jí)的順序,依次將截至?xí)r間置為正無(wú)窮,在該條件下重啟粒子群尋優(yōu),直至找到可行的排產(chǎn)策略;而倒排會(huì)記錄未排開(kāi)所缺的時(shí)間值,再未排開(kāi)情況發(fā)生時(shí),按照所缺少的時(shí)間,更新倒排工單結(jié)束時(shí)間,再重啟粒子群尋優(yōu)過(guò)程,直至找到可行的排產(chǎn)計(jì)劃。
所述步驟(5)每進(jìn)行一次粒子更新及時(shí)判定是否達(dá)到迭代終止條件,若是則結(jié)束,輸出全局最優(yōu)解;若否跳轉(zhuǎn)至步驟(4)繼續(xù)尋優(yōu)。
基于改進(jìn)粒子群與啟發(fā)式策略的生產(chǎn)排產(chǎn)系統(tǒng),包括:
約束條件設(shè)定模塊:根據(jù)工單任務(wù)在工單加工過(guò)程中的時(shí)間先后邏輯關(guān)系和工單任務(wù)處理時(shí)間與處理工單任務(wù)的機(jī)器的可用時(shí)間段之間的關(guān)系提出約束條件;
目標(biāo)函數(shù)設(shè)定模塊:按照工廠訂單加工交貨方式的不同分為兩種排產(chǎn)策略,兩種排產(chǎn)策略包括正排產(chǎn)策略和倒排產(chǎn)策略,如果是正排產(chǎn)策略就定義正排產(chǎn)策略的目標(biāo)函數(shù),如果是倒排產(chǎn)策略就定義倒排產(chǎn)策略的目標(biāo)函數(shù);目標(biāo)函數(shù)即適應(yīng)度函數(shù);
粒子種群初始化模塊:通過(guò)隨機(jī)方式初始化種群粒子,粒子的初始位置和粒子的初始速度均通過(guò)隨機(jī)方式生成,粒子的排序采用序編碼方式;所述序編碼方式是指按照工單任務(wù)上線順序進(jìn)行一維順序編碼;
迭代尋優(yōu)模塊:根據(jù)約束條件及適應(yīng)度函數(shù)計(jì)算每個(gè)粒子的適應(yīng)度值,根據(jù)粒子的初始位置更新粒子經(jīng)過(guò)的歷史最優(yōu)位置,根據(jù)粒子的適應(yīng)度值最小所對(duì)應(yīng)粒子的位置更新全局最優(yōu)位置,最終全局最優(yōu)位置對(duì)應(yīng)粒子的序列即為最優(yōu)工單排產(chǎn)方法;
迭代終止條件設(shè)定模塊:設(shè)定迭代終止條件為最大迭代次數(shù),判斷是否達(dá)到迭代終止條件,若是則輸出全局最優(yōu)解;若否,跳轉(zhuǎn)至粒子速度和位置更新模塊繼續(xù)尋找最優(yōu)解。
本發(fā)明的有益效果:
1對(duì)傳統(tǒng)的粒子群優(yōu)化算法進(jìn)引進(jìn)啟發(fā)式規(guī)則,采用獨(dú)特編碼和速度、位置更新對(duì)傳統(tǒng)粒子群算法進(jìn)行升級(jí)改進(jìn),應(yīng)用于離散制造生產(chǎn)排程領(lǐng)域,具有計(jì)算速度快、結(jié)果精度高等特點(diǎn)。
2對(duì)粒子采用獨(dú)特的啟發(fā)式策略,通過(guò)正排策略和倒排策略的雙重實(shí)施,使適應(yīng)度函數(shù)得以修改完善,貼合實(shí)際生產(chǎn)情況。
3對(duì)單個(gè)粒子的編碼采用依照工單任務(wù)上線順序的序編碼方式,保證了粒子更新后的有效性,避免出現(xiàn)不可行解的問(wèn)題。
4對(duì)粒子群的速度、位置公式引進(jìn)斥力因子ri,通過(guò)修正完善的速度位置更新公式,擺脫因前期收斂速度過(guò)快出現(xiàn)局部最優(yōu)的問(wèn)題,使系統(tǒng)跳出局部最優(yōu)解,增強(qiáng)了全局尋優(yōu)的能力,保證了系統(tǒng)全局最優(yōu)解的出現(xiàn)。
附圖說(shuō)明
圖1為本發(fā)明提供的基于改進(jìn)粒子群與啟發(fā)式策略的生產(chǎn)排產(chǎn)方法及系統(tǒng)的算法流程圖。
圖2為本發(fā)明提供的基于改進(jìn)粒子群與啟發(fā)式策略的生產(chǎn)排產(chǎn)方法及系統(tǒng)應(yīng)用場(chǎng)景正排效果示意圖。
圖3為本發(fā)明提供的基于改進(jìn)粒子群與啟發(fā)式策略的生產(chǎn)排產(chǎn)方法及系統(tǒng)應(yīng)用場(chǎng)景倒排效果示意圖。
具體實(shí)施方式
下面結(jié)合附圖與實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
如圖1所示,本發(fā)明基于改進(jìn)粒子群與啟發(fā)式策略的生產(chǎn)排產(chǎn)方法,包括以下步驟:
1.提出約束條件。通過(guò)調(diào)整工單的每個(gè)任務(wù)所選擇的機(jī)器、以及上線加工的時(shí)間,以獲得更優(yōu)目標(biāo)函數(shù)。在選擇機(jī)器,確定工單加工時(shí)間的過(guò)程中要考慮工單任務(wù)在工單加工過(guò)程中的先后的邏輯關(guān)系,工單任務(wù)一旦開(kāi)始不能中斷,即單個(gè)工單任務(wù)不可跨機(jī)器的不可用時(shí)間分兩次加工,單臺(tái)機(jī)器同一時(shí)間僅可加工一個(gè)工單任務(wù),機(jī)器僅在可用的時(shí)間段內(nèi)加工工件,以上約束由公式表示如下:
2.定義目標(biāo)函數(shù)即適應(yīng)度函數(shù)。按照工廠訂單加工交貨方式的不同,分為兩種排產(chǎn)策略,一種是正排策略,期望加工的訂單盡早交貨,另一種是倒排策略,是按照訂單交貨期進(jìn)行排產(chǎn),期望在交貨期前交貨,且加工完畢后盡量少的占用庫(kù)存。
正排目標(biāo):
min∑所有工單(工單計(jì)劃結(jié)束時(shí)間-工單計(jì)劃開(kāi)始時(shí)間)(2)
倒排目標(biāo):
min∑所有工單|工單計(jì)劃開(kāi)始時(shí)間-工單交貨期|+2|工單計(jì)劃結(jié)束時(shí)間-工單交貨期|(3)
適應(yīng)度值越小越好。
3.粒子種群初始化:通過(guò)隨機(jī)方式初始化種群粒子,包括位置、速度。粒子群中每個(gè)粒子對(duì)應(yīng)一個(gè)解,單個(gè)粒子每一個(gè)維度上的值是一個(gè)整數(shù)值,每個(gè)整數(shù)值對(duì)應(yīng)一個(gè)工單任務(wù),粒子整數(shù)數(shù)值的排列順序決定了每個(gè)工單任務(wù)的排產(chǎn)操作的順序。具體步驟如下:
3-1粒子排序采用序編碼方式,即采用與工單任務(wù)上線順序?qū)?yīng)的順序進(jìn)行一維順序編碼方式。
3-2初始種群粒子的生成采用隨機(jī)生成方式,對(duì)粒子的位置及速度通過(guò)隨機(jī)方式生成。對(duì)于長(zhǎng)度為n的編碼,隨機(jī)生成長(zhǎng)度為n向量的序列作為單個(gè)粒子的初始位置。對(duì)于長(zhǎng)度為n的編碼,生成n個(gè)0至n-1之間的隨機(jī)數(shù),組成長(zhǎng)度n的向量作為單個(gè)粒子初始速度。
4.粒子速度、位置更新,尋找最優(yōu)解。具體步驟如下:
4-1在初始位置時(shí),每個(gè)粒子在運(yùn)動(dòng)初期的第一個(gè)位置,就是該粒子的初始最優(yōu)位置。根據(jù)約束條件及適應(yīng)度函數(shù)計(jì)算每個(gè)粒子的適應(yīng)度值,適應(yīng)度值最小對(duì)應(yīng)粒子所在位置即為全局最優(yōu)位置。
4-2引入斥力因子ri對(duì)粒子速度、位置公式進(jìn)行更新改進(jìn),對(duì)粒子飛行方向進(jìn)行修正。
速度更新公式:vi=w(vi+ri)+c1r1(pbesti-xi)+c2r2(gbest-xi)(4)
斥力因子公式:
位置更新公式:xi=xi+vi(6)
4-3計(jì)算每個(gè)粒子的適應(yīng)度值。對(duì)單個(gè)粒子,將該粒子適應(yīng)值與其經(jīng)過(guò)最優(yōu)位置pbest時(shí)的適應(yīng)度值作比較,如果當(dāng)前位置粒子的適應(yīng)度值小于pbest時(shí)的適應(yīng)度值,則將該粒子的當(dāng)前位置作為單個(gè)粒子的歷史最優(yōu)位置pbest;對(duì)每個(gè)粒子,均將每個(gè)粒子適應(yīng)度值與粒子群全局最優(yōu)位置gbest作比較,如果某個(gè)粒子所在位置的適應(yīng)度值小于gbest時(shí)的適應(yīng)度值,則利用該粒子的當(dāng)前位置更新粒子群全局最優(yōu)位置gbest;否則不進(jìn)行更新;
所述4-3中適應(yīng)度計(jì)算中采用的是帶時(shí)間窗的插空排產(chǎn)算法,在排產(chǎn)過(guò)程中,將時(shí)間看作一個(gè)維度,將所有被占用的機(jī)器資源看作容器,每臺(tái)機(jī)器對(duì)象帶有一個(gè)在有限時(shí)間內(nèi)可用的時(shí)間窗對(duì)象。該時(shí)間窗對(duì)象根據(jù)工廠的機(jī)器開(kāi)機(jī)或加工日歷進(jìn)行初始化,包含一個(gè)或多個(gè)可用時(shí)間段,在每個(gè)可用時(shí)間段內(nèi)該機(jī)器可以用來(lái)加工一個(gè)工單任務(wù)。粒子群中的單個(gè)粒子的每一維度的數(shù)值對(duì)應(yīng)一個(gè)工單任務(wù),每個(gè)粒子相當(dāng)于當(dāng)前所有要排工單任務(wù)的順序。適應(yīng)度函數(shù)的計(jì)算實(shí)質(zhì)是將根據(jù)單個(gè)粒子值獲得工單任務(wù)在每個(gè)機(jī)器的加工上線及下線時(shí)間,也可稱之為根據(jù)粒子所給出的工單任務(wù)順序進(jìn)行排產(chǎn)的過(guò)程。其中加工時(shí)間由加工的機(jī)器型號(hào)以及工單任務(wù)的工單產(chǎn)品屬性確定,加工時(shí)間作為排產(chǎn)的已知信息傳入。具體步驟如下:
4-3-1在粒子傳入后先要進(jìn)行解碼,即將傳入的單個(gè)粒子數(shù)值解析為工單任務(wù)的排產(chǎn)順序。
4-3-2按照得到的工單任務(wù)順序,結(jié)合當(dāng)前工單的執(zhí)行程度,在工單任務(wù)可用機(jī)器列表中按照正排或倒排的原則選定機(jī)器,正排是按照第一個(gè)工序往后排產(chǎn),優(yōu)先選擇可最先加工完當(dāng)前工單任務(wù)的機(jī)器,正排效果如圖2所示。倒排是從最后一個(gè)工序開(kāi)始,依次向前安排工序,機(jī)器選擇策略為選擇最晚開(kāi)始加工當(dāng)前任務(wù)的機(jī)器,同一批工單的倒排效果如圖3所示。
將工單任務(wù)所需的時(shí)間段插入選定機(jī)器的可行時(shí)間段,同時(shí)維護(hù)選定機(jī)器可用時(shí)間段。具體步驟如下:在正排策略下,按照當(dāng)前工單任務(wù)所屬工單已完成部分的截止時(shí)間和工單任務(wù)的最晚結(jié)束時(shí)間范圍內(nèi)遍歷所有可行的機(jī)器的可行時(shí)間段,并依次計(jì)算預(yù)計(jì)結(jié)束的時(shí)間,選出最早完成的機(jī)器為選擇出的機(jī)器和開(kāi)始結(jié)束時(shí)間,記錄到當(dāng)前工單任務(wù)的結(jié)果中,將已占用的區(qū)間在可行時(shí)間窗對(duì)象中置為不可用。
4-3-3依次重復(fù)步驟4-3-2,直至當(dāng)前粒子對(duì)應(yīng)的工單任務(wù)全部安排完畢。此時(shí)單個(gè)粒子的排產(chǎn)過(guò)程完成,按照客戶的要求,計(jì)算適應(yīng)度返回粒子群的適應(yīng)度函數(shù)值。
4-3-4特殊情況處理:在所給的可用時(shí)間不足,有訂單無(wú)法安排生產(chǎn)的情況,則適應(yīng)度反饋為正無(wú)窮大。如果所有粒子在當(dāng)代粒子群的計(jì)算中都沒(méi)有排開(kāi),則會(huì)跳轉(zhuǎn)至算法開(kāi)頭,重新初始化粒子群,繼續(xù)尋優(yōu),直至到達(dá)停止條件,停止該次粒子群迭代。排產(chǎn)策略有兩類,一類是約束優(yōu)先,一類是結(jié)果優(yōu)先。約束優(yōu)先策略下,如果未排出結(jié)果,無(wú)論是正排還是倒排均返回時(shí)間不夠,排產(chǎn)失敗。在結(jié)果優(yōu)先的策略下,正排會(huì)按照客戶優(yōu)先級(jí)的順序,依次將截至?xí)r間置為正無(wú)窮,在該條件下重啟粒子群尋優(yōu),直至找到可行的排產(chǎn)策略;而倒排會(huì)記錄未排開(kāi)所缺的時(shí)間值,再未排開(kāi)情況發(fā)生時(shí),按照所缺少的時(shí)間,更新倒排工單結(jié)束時(shí)間,再重啟粒子群尋優(yōu)過(guò)程,直至找到可行的排產(chǎn)計(jì)劃。
5.設(shè)定迭代終止條件為最大迭代次數(shù),判斷是否達(dá)到迭代終止條件,若是則輸出全局最優(yōu)解;若否,跳轉(zhuǎn)至步驟4繼續(xù)尋找最優(yōu)解。
上述雖然結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行了描述,但并非對(duì)本發(fā)明保護(hù)范圍的限制,所屬領(lǐng)域技術(shù)人員應(yīng)該明白,在本發(fā)明的技術(shù)方案的基礎(chǔ)上,本領(lǐng)域技術(shù)人員不需要付出創(chuàng)造性勞動(dòng)即可做出的各種修改或變形仍在本發(fā)明的保護(hù)范圍以內(nèi)。