專(zhuān)利名稱(chēng):一種應(yīng)用在生產(chǎn)排程系統(tǒng)的基于訂單結(jié)構(gòu)的遺傳操作算子的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種應(yīng)用在生產(chǎn)排程系統(tǒng)中的遺傳操作算子,用于處理多層次BOM結(jié)構(gòu)的復(fù)雜工藝的訂單排程問(wèn)題。
技術(shù)背景遺傳算法是一種基于基因?qū)W和遺傳學(xué)機(jī)理產(chǎn)生的直接搜索優(yōu)化方法,它通 過(guò)基因串的選擇、交叉、變異,來(lái)尋求最佳解決方案。近年來(lái),這種算法作為 一種通用的優(yōu)化算法,因其編碼技術(shù)和遺傳操作比較簡(jiǎn)單、優(yōu)化不受限制性條 件的約束、尤其是具有并行計(jì)算能力和全局解空間搜索能力,被廣泛的應(yīng)用在 各行各業(yè)。生產(chǎn)排程問(wèn)題——即如何合理利用有限的資源達(dá)到預(yù)期的生產(chǎn)目標(biāo), 也可以通過(guò)這種算法進(jìn)行優(yōu)化解決。應(yīng)用遺傳算法來(lái)解決生產(chǎn)排程問(wèn)題可以通過(guò)以下步驟來(lái)實(shí)現(xiàn)首先,對(duì)參 與排程的工單進(jìn)行置換編碼,生成初始化種群;然后,選擇優(yōu)秀個(gè)體作為父代種群,進(jìn)行交叉、變異,生成子代種群,再對(duì)子代種群進(jìn)行解碼操作,得到排程方案;再對(duì)排程方案進(jìn)行約束條件檢驗(yàn),保留優(yōu)秀個(gè)體;重復(fù)進(jìn)行以上選擇、 交叉、變異操作和約束條件檢驗(yàn)兩個(gè)步驟,直至最優(yōu)個(gè)體達(dá)到優(yōu)化目標(biāo)。在此過(guò)程中應(yīng)用遺傳算法來(lái)解決生產(chǎn)排程問(wèn)題實(shí)質(zhì)上是通過(guò)遺傳操作,即 選擇、交叉、變異操作,來(lái)不斷產(chǎn)生新的基因,并淘汰劣等基因、保持優(yōu)良基 因,逐步優(yōu)化完善方案的。因此遺傳操作的設(shè)計(jì)成為能否得到高質(zhì)量?jī)?yōu)化排程 方案的關(guān)鍵。Job Sh叩(車(chē)間)調(diào)度問(wèn)題是許多實(shí)際生產(chǎn)調(diào)度問(wèn)題的簡(jiǎn)化模型,是一典型的NP-hard問(wèn)題,是目前研究的最廣泛的一類(lèi)典型調(diào)度問(wèn)題。但針對(duì)傳統(tǒng)Job Shop調(diào)度問(wèn)題設(shè)計(jì)的遺傳算法,尤其是遺傳操作的設(shè)計(jì),在處理具有多層次B0M (Bill of Material,物料清單)結(jié)構(gòu)的工藝復(fù)雜的訂單時(shí)具有一定的局限性。 發(fā)明內(nèi)容本發(fā)明的目的在于提供一種應(yīng)用在生產(chǎn)排程系統(tǒng)的基于訂單結(jié)構(gòu)的遺傳操 作算子,對(duì)可行解池和不可行解池內(nèi)的解選擇性進(jìn)行選擇、交叉、變異操作, 得到各種遺傳解,為之后的排程優(yōu)化,提供一個(gè)基礎(chǔ)。在具體應(yīng)用遺傳算法解決排程問(wèn)題時(shí),遺傳操作是針對(duì)已有的遺傳基因串, 即排程方案解,進(jìn)行的。已生成的解可以根據(jù)是否符合約束條件,分作可行解 和不可行解,分別存入可行解池和不可行解池。為了避免無(wú)解狀況和增強(qiáng)多樣 性,遺傳算方法在這兩個(gè)解池的基礎(chǔ)上選擇優(yōu)秀個(gè)體,選擇性進(jìn)行交叉、變異 操作,生成下一代基因串,為排程方案解的優(yōu)勝劣汰提供基礎(chǔ),選擇、交叉、 變異操作包括以下特征-1. 選擇是通過(guò)設(shè)置選擇率^為閾值來(lái)實(shí)現(xiàn)的若可行解池中個(gè)體數(shù)目與種 群規(guī)模的比值小于AT,則可行解池中全部個(gè)體作為父代種群;若可行解池中解的數(shù)目與種群規(guī)模的比值大于^,則從可行解池中選擇種群規(guī)模的^倍的個(gè)體 作為父代種群,并從不可行解池中選擇部分個(gè)體補(bǔ)足所需種群規(guī)模,即使得不可行解池中選擇的個(gè)體數(shù)目與之前在可行解池選擇的個(gè)體數(shù)目之和達(dá)到種群規(guī)模;此處種群規(guī)模為計(jì)算前預(yù)定義的父代種群的大?。?. 交叉是從父代種群中選取一對(duì)代表排程方案的基因串個(gè)體,并選擇交叉 操作算子進(jìn)行交叉操作生成一對(duì)新的個(gè)體,存入子代種群,直至子代個(gè)數(shù)達(dá)到 交叉率所規(guī)定的足夠數(shù)目;3.變異是從父代種群中選取一個(gè)代表排程方案的基因串個(gè)體,并選擇變異 操作算子進(jìn)行變異操作生成一個(gè)新的個(gè)體,存入子代種群,直至子代個(gè)數(shù)達(dá)到 變異率所規(guī)定的足夠數(shù)目;所述1中的選擇率AT閾值設(shè)置的范圍為一; 3所述l中可行解池中解的數(shù)目與種群規(guī)模的比值大于^情況下對(duì)可行解池 中解的選擇,是通過(guò)按解適應(yīng)度值的高低作為其被選擇到的概率,由輪盤(pán)賭方 式來(lái)實(shí)現(xiàn)的。所述l中不可行解池中解的選擇,是按解的適應(yīng)度值由高至低的次序來(lái)選 擇的。所述2中的交叉操作算子,為三種交叉操作算子a.兩段式交叉操作算子 一父代基因串分兩段和另一父代基因串進(jìn)行比較、刪除、替換,生成子代基因 串;b.訂單位置不變交叉操作算子 一父代基因串保留同一訂單所涉及工單或 工序的基因位,其他基因位由另一父代基因串的非所述訂單所涉及工單或工序 的基因位進(jìn)行補(bǔ)充,生成子代基因串;C.訂單加工順序改變交叉操作算子一 父代基因串中同一訂單所涉及工單或工序的基因位由另一父代基因串的所述訂 單所涉及工單或工序的基因位進(jìn)行替換,生成子代基因串。其中,兩段式交叉 操作算子包括三種子算子保留父代基因串前段、或保留父代基因串后段、或 保留父代基因串較長(zhǎng)段。所述3中的變異操作算子包括以下兩種交變異操作算子a.產(chǎn)品加工順序 重排列變異算子父代基因串交換同一訂單所涉及工單或工序的基因位順序, 生成子代基因串;b.在可行范圍內(nèi)隨機(jī)插入變異算子父代基因串隨機(jī)選擇某個(gè)點(diǎn)插入到串中的不同隨機(jī)位置,而可插入的可行范圍受訂單加工順序的約束, 變異點(diǎn)多與等于一個(gè)。此外,當(dāng)連續(xù)進(jìn)行交叉、變異操作,選擇交叉算子、變異操作時(shí)交叉操 作算子選擇兩段式交叉算子時(shí),變異操作算子選擇在可行范圍內(nèi)隨機(jī)插入變異 算子;當(dāng)交叉操作算子選擇訂單位置不變交叉操作算子時(shí),變異操作算子選擇 在可行范圍內(nèi)隨機(jī)插入變異算子;當(dāng)交叉操作算子選擇加工順序重排列改變交 叉操作算子時(shí),變異操作算子選擇產(chǎn)品加工順序重排列變異算子。本發(fā)明的有意效果是通過(guò)交叉變異方式能夠處理多層次B0M結(jié)構(gòu)的復(fù)雜工藝的訂單排程問(wèn)題,在遺傳操作過(guò)程中,維持產(chǎn)品B0M結(jié)構(gòu),拓展了遺傳算法在生產(chǎn)排程領(lǐng)域中的應(yīng)用,使遺傳算法的設(shè)計(jì)簡(jiǎn)單,優(yōu)化不受限制性條件的約束,具有并行計(jì)算能力和全局解空間搜索能力的優(yōu)點(diǎn)在選定排程過(guò)程中得到顯現(xiàn)。而選擇算子在遺傳算法中表現(xiàn)為優(yōu)良個(gè)體在下一代群體中具有較強(qiáng)的繁殖能力,而劣質(zhì)個(gè)體則逐漸被淘汰,群體的整體品質(zhì)得以提高。并且通過(guò)對(duì)劣解的適當(dāng)選擇,防止群體成熟前收斂,或者遺傳算法搜索引向局部極值點(diǎn)。在很大程度上提升了遺傳算法收斂性的效果和速度。從而為得到一個(gè)最優(yōu)化排程方案奠定了良好的基礎(chǔ),最終提高了企業(yè)生產(chǎn)資源的使用效率,降低了成本,增加了企業(yè)的競(jìng)爭(zhēng)力。
圖1遺傳算法選擇操作流程圖。圖2遺傳算法交叉操作流程圖。圖3遺傳算法變異操作流程圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)一步說(shuō)明。應(yīng)用在生產(chǎn)排程系統(tǒng)的基于訂單結(jié)構(gòu)的遺傳操作算子,包括包括選擇、交叉、 和變異,在實(shí)際實(shí)施時(shí)可以酌情選擇實(shí)施以上三種操作一種或兩種,本最佳實(shí) 施例將就三種操作都進(jìn)行仔細(xì)闡述,具體設(shè)計(jì)如下1. 選擇從可行解池和不可行解池中選擇優(yōu)秀個(gè)體作為父代種群,流程請(qǐng)參閱圖1, 即遺傳算法選擇操作流程圖,具體包括以下步驟1) 設(shè)置選擇率^,所述A:的取值范圍為f1;2) 判斷可行解池中個(gè)體數(shù)目是否小于種群規(guī)模的^倍如果是,執(zhí) 行步驟3,否則執(zhí)行步驟4;3) 可行解池中全部個(gè)體插入父代種群,執(zhí)行步驟5;4) 可行解池中按解的適應(yīng)度值的高低作為其被選擇到的概率,由輪盤(pán)賭方式選擇種群規(guī)模種群規(guī)模的^倍的個(gè)體插入父代種群;5) 在不可行解池中按照適應(yīng)度值高低順序選擇剩余解插入父代種群,使得總的父代種群達(dá)到種群規(guī)模。2. 交叉父代種群之間進(jìn)行交叉操作生成子代種群個(gè)體,流程請(qǐng)參閱圖2, 即遺傳算法交叉操作流程圖,具體包括以下步驟1) 計(jì)算交叉次數(shù);2) 從父代種群中隨機(jī)選擇兩個(gè)個(gè)體;3) 根據(jù)迭代次數(shù),確定交叉算子兩段式交叉方式,或訂單位置不 變交叉方式,或訂單加工順序改變交叉方式;4) 根據(jù)選定的交叉方式兩個(gè)父代基因串進(jìn)行交叉,設(shè)兩個(gè)父代基因串為《、/>2,生成的子代基因串為2,、込a) 兩段式交叉方式將輸入的父代基因串A分為兩段,其中一段直接保留賦值給子代基因串G,并將該段與父代基因串尸2比 較,刪除戶(hù)2中相同的基因位,將g中剩余基因賦值給子代基因 串2,空值基因位,生成子代基因串G。交換^、尸2,并執(zhí)行同 樣操作,生成子代基因串込。兩段式交叉方式中,有三種子方式保留父代基因串前段、 保留父代基因串后代、保留父代基因串較長(zhǎng)的一段。我們將子代個(gè)體的產(chǎn)生分為三部分,分別用這三種方式。b) 訂單位置不變交叉方式在父代基因串^中隨機(jī)査找一個(gè)基因位,由此得到該基因位對(duì)應(yīng)的工單。由該工單找到對(duì)應(yīng)的需 要加工的訂單。在基因串《中查找所有屬于該訂單的所有工單 的所有工序,并賦值給子代基因串^中相同的基因位。父代 基因串P2中刪除所有屬于該訂單的所有工單的所有工序,并將 剩余的基因依次賦值給2,中空值基因位。生成子基因串0。 交換A、 S,并執(zhí)行同樣操作,生成子代基因串込。C)訂單加工順序改變交叉方式在父代基因串^中隨機(jī)査找一個(gè) 基因位,由此得到該基因位對(duì)應(yīng)的工單。由該工單找到對(duì)應(yīng) 的需要加工的訂單。在基因串A中查找所有屬于該訂單的所有 工單的所有工序,在 2中查找所有屬于該訂單的所有工單的所 有工序。^中所有屬于該訂單的所有工單的所有工序用A中所 有屬于該訂單的所有工單的所有工序所代替,產(chǎn)生子代基因 串Q,。交換^、尸2,并執(zhí)行同樣操作,生成子代基因串込。5) 將新生成的子代基因串個(gè)體G、込插入子代種群;6) 是否達(dá)到目標(biāo)交叉次數(shù)如是,結(jié)束交叉操作;如否,回到步驟2; 3.父代種群之間進(jìn)行變異操作生成子代種群個(gè)體,流程請(qǐng)參閱圖3,即遺傳算法變異操作流程圖,具體包括以下步驟1) 計(jì)算變異次數(shù);2) 從種群中隨機(jī)選擇一個(gè)體;3) 根據(jù)己選擇的交叉算子,確定變異算子產(chǎn)品加工順序重排列變 異算子或在可行范圍內(nèi)隨機(jī)插入變異算子;4) 根據(jù)選定的變異方式對(duì)給定基因串進(jìn)行變異a) 產(chǎn)品加工順序重排列變異算子在基因串中隨機(jī)査找一個(gè)基因位,由此得到該基因位對(duì)應(yīng)的工單。由該工單找到對(duì)應(yīng)的需要 加工的訂單。在基因串中查找所有屬于該訂單的所有工單的所 有工序。保留這些工序在原基因串中的位置不變,但是改變這 些工序之間的先后順序,由此產(chǎn)生新基因串。b) 在可行范圍內(nèi)隨機(jī)插入變異算子:在基因串中隨機(jī)査找一個(gè)基 因位,由此得到該基因位對(duì)應(yīng)的工單。由該工單找到對(duì)應(yīng)的需 要加工的訂單中該工單的所有上層工單集合和下層工單集合。 從該基因位起向左遍歷,第一個(gè)值屬于下層工單集合的基因位 作為該基因位的左結(jié)點(diǎn)。從該基因位起向右遍歷,第一個(gè)值屬 于上層工單集合的基因位作為該基因位的右結(jié)點(diǎn)。將該基因位刪除并在左右結(jié)點(diǎn)范圍之間隨機(jī)插入來(lái)實(shí)現(xiàn)變異。該過(guò)程可重 復(fù)進(jìn)行多次,直到滿(mǎn)足該新個(gè)體與原個(gè)體相比,有足夠的差異度。5) 將新生成的基因串個(gè)體插入子代種群;6) 是否達(dá)到目標(biāo)變異次數(shù)如是,結(jié)束交叉操;如否,回到步驟2; 綜上所述僅為發(fā)明的較佳實(shí)施例而已,并非用來(lái)限定本發(fā)明的實(shí)施范圍。即凡依本發(fā)明申請(qǐng)專(zhuān)利范圍的內(nèi)容所作的等效變化與修飾,都應(yīng)為本發(fā)明的技 術(shù)范疇。
權(quán)利要求
1.一種應(yīng)用在生產(chǎn)排程系統(tǒng)的基于訂單結(jié)構(gòu)的遺傳操作算子,包括選擇、和/或交叉、和/或變異,其特征在于①選擇是通過(guò)設(shè)置選擇率κ為閾值來(lái)實(shí)現(xiàn)的若可行解池中個(gè)體數(shù)目與種群規(guī)模的比值小于κ,則可行解池中全部個(gè)體作為父代種群;若可行解池中解的數(shù)目與種群規(guī)模的比值大于κ,則從可行解池中選擇種群規(guī)模的κ倍的個(gè)體作為父代種群,并從不可行解池中選擇部分個(gè)體補(bǔ)足所需種群規(guī)模,即使得不可行解池中選擇的個(gè)體數(shù)目與之前在可行解池選擇的個(gè)體數(shù)目之和達(dá)到種群規(guī)模;此處種群規(guī)模為計(jì)算前預(yù)定義的父代種群的大小;②交叉是從父代種群中選取一對(duì)代表排程方案的基因串個(gè)體,并選擇交叉操作算子進(jìn)行交叉操作生成一對(duì)新的個(gè)體,存入子代種群,直至子代個(gè)數(shù)達(dá)到交叉率所規(guī)定的足夠數(shù)目;③變異是從父代種群中選取一個(gè)代表排程方案的基因串個(gè)體,并選擇變異操作算子進(jìn)行變異操作生成一個(gè)新的個(gè)體,存入子代種群,直至子代個(gè)數(shù)達(dá)到變異率所規(guī)定的足夠數(shù)目;
2. 根據(jù)權(quán)利要求1所述的應(yīng)用在生產(chǎn)排程系統(tǒng)的基于訂單結(jié)構(gòu)的遺傳操作算 子,其特征在于所述①中的選擇率^閾值設(shè)置的范圍為<formula>formula see original document page 2</formula>。
3. 根據(jù)權(quán)利要求1所述的應(yīng)用在生產(chǎn)排程系統(tǒng)的基于訂單結(jié)構(gòu)的遺傳操作算子,其特征在于所述①中可行解池中解的數(shù)目與種群飄模的比值大于瞎況下對(duì)可行解池中 解的選擇,是通過(guò)按解適應(yīng)度值的高低作為其被選擇到的概率,由輪盤(pán)賭方式來(lái)實(shí)現(xiàn)的。
4. 根據(jù)權(quán)利要求1所述的應(yīng)用在生產(chǎn)排程系統(tǒng)的基于訂單結(jié)構(gòu)的遺傳操作算 子,其特征在于所述①中不可行解池中解的選擇,是按解的適應(yīng)度值由高至低的次序來(lái)選擇 的。
5. 根據(jù)權(quán)利要求1所述的應(yīng)用在生產(chǎn)排程系統(tǒng)的基于訂單結(jié)構(gòu)的遺傳操作算 子,其特征在于所述②中的交叉操作算子,為三種交叉操作算子a.兩段式交叉操作算子 一父代基因串分兩段和另一父代基因串進(jìn)行比較、刪除、替換,生成子代基 因串;b.訂單位置不變交叉操作算子 一父代基因串保留同一訂單所涉及工 單或工序的基因位,其他基因位由另一父代基因串的非所述訂單所涉及工單 或工序的基因位進(jìn)行補(bǔ)充,生成子代基因串;c.訂單加工順序改變交叉操作 算子 一父代基因串中同一訂單所涉及工單或工序的基因位由另一父代基因 串的所述訂單所涉及工單或工序的基因位進(jìn)行替換,生成子代基因串。
6. 根據(jù)權(quán)利要求5所述的應(yīng)用在生產(chǎn)排程系統(tǒng)的基于訂單結(jié)構(gòu)的遺傳操作算 子,其特征在于所述的兩段式交叉操作算子包括三種子算子保留父代基因串前段、或保留 父代基因串后段、或保留父代基因串較長(zhǎng)段。
7. 根據(jù)權(quán)利要求1所述的應(yīng)用在生產(chǎn)排程系統(tǒng)的基于訂單結(jié)構(gòu)的遺傳操作算 子,其特征在于所述③中的變異操作算子包括以下兩種交變異操作算子a.產(chǎn)品加工順序重 排列變異算子父代基因串交換同一訂單所涉及工單或工序的基因位順序, 生成子代基因串;b.在可行范圍內(nèi)隨機(jī)插入變異算子父代基因串隨機(jī)選擇 某個(gè)點(diǎn)插入到串中的不同隨機(jī)位置,而可插入的可行范圍受訂單加工順序的 約束,變異點(diǎn)多與等于一個(gè)。 8.根據(jù)權(quán)利要求7所述的應(yīng)用在生產(chǎn)排程系統(tǒng)的基于訂單結(jié)構(gòu)的遺傳操作算 子,進(jìn)行交叉、變異操作,選擇交叉算子、變異操作時(shí),其特征在于 當(dāng)交叉操作算子選擇兩段式交叉算子時(shí),變異操作算子選擇在可行范圍內(nèi)隨 機(jī)插入變異算子;當(dāng)交叉操作算子選擇訂單位置不變交叉操作算子時(shí),變異 操作算子選擇在可行范圍內(nèi)隨機(jī)插入變異算子;當(dāng)交叉操作算子選擇加工順 序重排列改變交叉操作算子時(shí),變異操作算子選擇產(chǎn)品加工順序重排列變異 算子。
全文摘要
本發(fā)明提供了一種應(yīng)用在生產(chǎn)排程系統(tǒng)的基于訂單結(jié)構(gòu)的遺傳操作算子,對(duì)可行解池和不可行解池內(nèi)的解選擇性進(jìn)行選擇、交叉、變異操作,得到各種遺傳解,為之后的排程優(yōu)化,提供一個(gè)基礎(chǔ)。此種遺傳操作算子通過(guò)交叉變異方式處理多層次BOM結(jié)構(gòu)的復(fù)雜工藝的訂單排程問(wèn)題,在遺傳操作過(guò)程中,維持產(chǎn)品BOM結(jié)構(gòu),使遺傳算法的設(shè)計(jì)簡(jiǎn)單,優(yōu)化不受限制性條件的約束。而選擇算子使群體進(jìn)行了優(yōu)勝劣汰的進(jìn)化,使整體品質(zhì)得以提高,并對(duì)劣解的適當(dāng)選擇,防止群體成熟前收斂,或者遺傳算法搜索引向局部極值點(diǎn),在很大程度上提升了遺傳算法收斂性的效果和速度。
文檔編號(hào)G06Q10/00GK101256648SQ20081003577
公開(kāi)日2008年9月3日 申請(qǐng)日期2008年4月9日 優(yōu)先權(quán)日2008年4月9日
發(fā)明者杰 陳, 顧永明 申請(qǐng)人:永凱軟件技術(shù)(上海)有限公司