本發(fā)明涉及車間調(diào)度控制技術(shù)領(lǐng)域,尤其涉及一種基于多智能體的車間多目標協(xié)同優(yōu)化調(diào)度方法。
背景技術(shù):
作為先進制造技術(shù)和現(xiàn)代管理技術(shù)中的核心技術(shù),有效的車間調(diào)度是解決當今制造環(huán)境訂單多樣化、信息復雜化的必要舉措,因此,如何建立一種分布、開放、高效的智能調(diào)度方法,在當今的制造環(huán)境下顯得尤為必要。多智能體技術(shù)(multiagentsystem,mas)的發(fā)展為上述問題提供了一種行之有效的解決方法。然而,傳統(tǒng)多智能體方法求解作業(yè)車間調(diào)度問題(job-shopproblem,jsp)時卻存在以下問題:(1)傳統(tǒng)多智能體方法求解作業(yè)車間動態(tài)調(diào)度問題,一般以單一的完工時間作為優(yōu)化目標,實際的調(diào)度中,不僅要考慮時間指標,還要綜合考慮能耗、成本等生產(chǎn)指標,多目標性是車間調(diào)度問題的一個基本屬性,忽略生產(chǎn)系統(tǒng)調(diào)度多目標性的要求造成了傳統(tǒng)多智能體調(diào)度研究與現(xiàn)實應(yīng)用的差距;(2)傳統(tǒng)多智能體方法求解作業(yè)車間調(diào)度問題時,往往引入市場上的招投標機制作為智能體之間的協(xié)商策略,由此造成單個智能體為會盡可能多地完成自身設(shè)定的任務(wù)目標而忽略彼此任務(wù)之間的協(xié)同優(yōu)化關(guān)系,即體現(xiàn)為單個智能體的“自私性”、“自私性”,無“全局觀”;(3)傳統(tǒng)多智能體方法通過招投標機制來實現(xiàn)智能體之間的任務(wù)分配與優(yōu)化,然而此機制下智能體之間的任務(wù)優(yōu)化分配本質(zhì)上是單步、局部性質(zhì)的優(yōu)化,優(yōu)化區(qū)間過小導致對系統(tǒng)整體調(diào)度性能的提升非常有限。總而言之,當前的多智能體方法求解車間調(diào)度問題時存在優(yōu)化目標單一、單個智能體無全局觀和優(yōu)化區(qū)間過小的問題,由此造成理論研究與現(xiàn)實應(yīng)用的差距。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于通過一種基于多智能體的車間多目標協(xié)同優(yōu)化調(diào)度方法,來解決以上背景技術(shù)部分提到的問題。
為達此目的,本發(fā)明采用以下技術(shù)方案:
一種基于多智能體的車間多目標協(xié)同優(yōu)化調(diào)度方法,其包括如下步驟:
s101、建立基于多智能體的生產(chǎn)車間調(diào)度模型:將實際生產(chǎn)車間中的倉庫、加工中心、工件分別物理映射為倉庫智能體、設(shè)備智能體和工件智能體,將負責多目標優(yōu)化計算的模塊功能映射為規(guī)劃智能體;
s102、工件智能體依據(jù)自身工序加工任務(wù)向規(guī)劃智能體提出作業(yè)調(diào)度請求:
s1021、工件智能體根據(jù)工序加工工藝要求,獲取滿足工藝加工要求的設(shè)備智能體名單列表;
s1022、工件智能體將工序加工信息封裝打包發(fā)送給所述設(shè)備智能體名單列表上的設(shè)備智能體,其中,所述工序加工信息包括工藝類型和額定加工時間;
s1023、設(shè)備智能體查詢數(shù)據(jù)庫中自身對應(yīng)的狀態(tài)信息表,獲取自身加工狀態(tài)信息,并計算出完成此工序加工任務(wù)花費的加工時間、成本和能耗,最后將上述所有加工相關(guān)信息打包發(fā)送給工件智能體,其中,所述自身加工狀態(tài)信息包括最早加工時間、當前累計功耗、當前累計負載及當前累計加工成本;
s1024、工件智能體接收到設(shè)備智能體名單列表上所有設(shè)備智能體返回的加工信息數(shù)據(jù)包后,提取各個數(shù)據(jù)包包含的加工信息并封裝打包發(fā)送給規(guī)劃智能體,針對本工序提出作業(yè)調(diào)度請求;
s103、規(guī)劃智能體插入時間周期窗口,對該時間周期窗口內(nèi)收到的作業(yè)調(diào)度請求進行基于時間、負載、成本和能耗的多目標優(yōu)化調(diào)度:
s1031、規(guī)劃智能體在收到第一個作業(yè)調(diào)度請求后插入一個時間周期窗口;
s1032、規(guī)劃智能體提取工件智能體發(fā)送的數(shù)據(jù)包中的工藝加工信息;
s1033、若時間周期窗口滿,則轉(zhuǎn)至步驟s1034,否則繼續(xù)等待、接收工件智能體發(fā)送的工序調(diào)度請求,并重復步驟s1032至步驟s1033;
s1034、規(guī)劃智能體以提取、匯總的工藝加工信息為約束,以時間、負載、成本和能耗為優(yōu)化目標,根據(jù)其內(nèi)部封裝的多目標優(yōu)化算法,求解得出針對各作業(yè)請求的最優(yōu)調(diào)度方案即使得式(1)所表示的多目標優(yōu)化函數(shù)值最小的調(diào)度方案:
minf=min[f1,f2,f3,f4](1)
其中,f為多目標優(yōu)化函數(shù),f1,f2,f3,f4分別為時間、成本、負載和能耗函數(shù);
s104、規(guī)劃智能體依據(jù)得出的最優(yōu)調(diào)度方案向相應(yīng)設(shè)備智能體釋放工序加工任務(wù),設(shè)備智能體完成工序加工任務(wù),并通知工件智能體釋放下一道工序:
s1041、設(shè)備智能體接收規(guī)劃智能體發(fā)送的工序加工任務(wù);
s1042、設(shè)備智能體訪問自身加工任務(wù)緩存列表,若當前無正在加工或待加工的任務(wù),則立即進行此工序的加工任務(wù),否則將此工序加工任務(wù)插入任務(wù)緩存列表等待加工;
s1043、設(shè)備智能體完成工序加工任務(wù)后更新自身狀態(tài)信息表,并通知相應(yīng)的工件智能體釋放下一道工序加工任務(wù)。
特別地,所述步驟s1034中多目標優(yōu)化算法具體包括如下步驟:
s10341,規(guī)劃智能體從每個工件智能體發(fā)送的數(shù)據(jù)包中抽取一條可行加工方案,組成針對所有工序的可行調(diào)度方案;
s10342,針對所述可行加工方案計算出其對應(yīng)的f值,記錄在數(shù)據(jù)庫中;
s10343,若該可行調(diào)度方案中存在同一機床加工不同工件工序的情況,交換各工序在該機床上的加工順序,得出另一種可行調(diào)度方案,并重復步驟s10342至s10343,否則轉(zhuǎn)步驟s10344;
s10344,重新抽取,遍歷所有的可行調(diào)度方案,得出其f值,并記錄在數(shù)據(jù)庫中;
s10345,比較各個f值,找出最小f值對應(yīng)的可行調(diào)度方案,并將此可行調(diào)度方案作為最優(yōu)調(diào)度方案發(fā)布,完成本輪工件智能體的作業(yè)調(diào)度請求。
特別地,所述步驟s1034中求解多目標優(yōu)化函數(shù)最小值的過程如下:求解多目標優(yōu)化函數(shù)最小值的具體表達式如下式(2)
其中,由于四個優(yōu)化目標f1,f2,f3,f4之間量綱之間的差異,且彼此數(shù)值相差較大不具可比性,需對四個優(yōu)化目標進行去量綱處理,即先對四個目標單獨進行10次優(yōu)化,取優(yōu)化過程中的最大值ftmax和最小值ftmin,去量綱后的多目標優(yōu)化函數(shù)由上述式(1)轉(zhuǎn)化為式(2);wt=(w1,w2,w3,w4)為多目標函數(shù)中各優(yōu)化目標的權(quán)重因子;各優(yōu)化目標的具體數(shù)學表達式如下:
f1=max(etij),i∈n,j∈p(3)
f2=mc+pc(4)
f3=tlm(5)
式中:
stij——工序oij的開始加工時間
etij——工序oij的加工結(jié)束時間
mci——工件i的原料成本
mc——全部工件的原料成本
pc——全部設(shè)備的加工成本
tlm——全部設(shè)備的負載
eak——設(shè)備k運轉(zhuǎn)消耗能量
m——一個正數(shù)
上式(12)到式(15)為約束條件,上式(12)、(13)確保設(shè)備k同一時刻只能加工一個工件;上式(14)表示一道工序只能在一臺設(shè)備上加工;上式(15)表示同一工件各工序的加工順序要求,即同一工件的某道工序,只有前道工序加工完畢之后才能加工該工序。
附圖說明
圖1為本發(fā)明實施例提供的基于多智能體的車間多目標協(xié)同優(yōu)化調(diào)度方法流程圖;
圖2為本發(fā)明實施例提供的工件智能體的工作流程圖;
圖3為本發(fā)明實施例提供的規(guī)劃智能體封裝的多目標優(yōu)化算法流程圖;
圖4為本發(fā)明實施例提供的設(shè)備智能體的工作流程圖。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明作進一步說明??梢岳斫獾氖牵颂幩枋龅木唧w實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部內(nèi)容,除非另有定義,本文所使用的所有技術(shù)和科學術(shù)語與屬于本發(fā)明的技術(shù)領(lǐng)域的技術(shù)人員通常理解的含義相同。本文中所使用的術(shù)語只是為了描述具體的實施例,不是旨在于限制本發(fā)明。
請參照圖1所示,圖1為本發(fā)明實施例提供的基于多智能體的車間多目標協(xié)同優(yōu)化調(diào)度方法流程圖。本實施例中基于多智能體的車間多目標協(xié)同優(yōu)化調(diào)度方法具體包括如下步驟:
s101、建立基于多智能體的生產(chǎn)車間調(diào)度模型:將實際生產(chǎn)車間中的倉庫、加工中心、工件分別物理映射為倉庫智能體、設(shè)備智能體和工件智能體,將負責多目標優(yōu)化計算的模塊功能映射為規(guī)劃智能體。具體包括:一、搭建java環(huán)境:jdk1.8.0;配置多智能體開發(fā)平臺:jade4.3.3;二、在步驟一的基礎(chǔ)上編寫java代碼創(chuàng)建各智能體,包括1個倉庫智能體、10個設(shè)備智能體,一個源工件智能體(由倉庫智能體依據(jù)源工件智能體代碼動態(tài)創(chuàng)建多個工件智能體并依次進入調(diào)度模型)和1個規(guī)劃智能體;三、創(chuàng)建智能體運行依賴數(shù)據(jù)庫,庫中包含以下數(shù)據(jù)表,具體為:machine_lce:保存各個設(shè)備智能體截止當前的成本、能耗和本設(shè)備負載;machinegantt:保存各個設(shè)備智能體正在加工和待加工的工序加工任務(wù);machinegantt1:保存各個設(shè)備智能體已經(jīng)完成的工序加工任務(wù);machine_info:保存各個設(shè)備智能體的工藝加工能力信息,如可加工的工藝類型、各個可加工的工藝類型對應(yīng)的加工系數(shù)、工時成本、單位能耗等;originalplanset:保存所有已生成的工件智能體的所有工序信息;originalplanset_backup:數(shù)據(jù)表originalplanset的備份數(shù)據(jù)表;machine_lce:保存當前設(shè)備智能體的總負載、加工總成本和總能耗;record_maxec:保存各個設(shè)備智能體完成一個可行調(diào)度方案中后的的能耗、成本時間和負載;machinegantt_temp:保存一個時間周期窗口內(nèi)各個可行調(diào)度方案及其對應(yīng)的、規(guī)劃智能體計算獲得的目標函數(shù)(1)的函數(shù)值;四、通過本體開發(fā)工具protégé創(chuàng)建、注冊通信ontology以封裝數(shù)據(jù)庫查詢結(jié)果,實現(xiàn)智能體之間基于本體的通信,該本體包含以下類:originalplanset類——封裝originalplanset數(shù)據(jù)表的查詢結(jié)果;nextorder類——釋放下道工序消息;machineinfo類——封裝machine_info數(shù)據(jù)表查詢結(jié)果;rlist類——封裝機床針對某一工序的加工信息;enc_list類——封裝所有機床針對某道工序返回的rlist類;machinegantt類——封裝machinegantt數(shù)據(jù)表查詢結(jié)果;fjspontology類——所有本體類的父類,用于在智能體中注冊該本體。
s102、工件智能體依據(jù)自身工序加工任務(wù)向規(guī)劃智能體提出作業(yè)調(diào)度請求,如圖2所示,具體包括如下步驟:
s1021、工件智能體根據(jù)工序加工工藝要求,獲取滿足工藝加工要求的設(shè)備智能體名單列表,列表信息封裝在machineinfo中。
s1022、工件智能體將工序加工信息封裝打包成originalplanset發(fā)送給所述設(shè)備智能體名單列表上的設(shè)備智能體,其中,所述工序加工信息包括工藝類型和額定加工時間。
s1023、設(shè)備智能體查詢數(shù)據(jù)庫中自身對應(yīng)的狀態(tài)信息表,獲取自身加工狀態(tài)信息,并計算出完成此工序加工任務(wù)花費的加工時間、成本和能耗,最后將上述所有加工相關(guān)信息打包發(fā)送給工件智能體,其中,所述自身加工狀態(tài)信息包括最早加工時間、當前累計功耗、當前累計負載及當前累計加工成本;具體過程如下:設(shè)備智能體對工件智能體發(fā)來的originalplanset信息進行處理與回復;s10231、設(shè)備智能體提取originalplanset中的信息,包擴工藝加工類型、額定加工時間;s10232、依據(jù)提取的信息查詢machine_info獲取對應(yīng)該工藝的加工系數(shù)、工時成本和單位能耗;s10233、計算完成該工序加工任務(wù)所需的時間、成本和能耗;s10234、查詢machine_lce,獲取設(shè)備智能體當前最早加工時間、累計功耗、累計負載和當前累計加工成本計算出完成此工序加工任務(wù)后的完工時間、總成本、總負載和總能耗,最后將上述加工信息打包成rlist發(fā)送給工件智能體。
s1024、工件智能體接收到設(shè)備智能體名單列表上所有設(shè)備智能體返回的加工信息數(shù)據(jù)包rlist后,提取各個數(shù)據(jù)包rlist包含的加工信息并封裝打包為enc_list發(fā)送給規(guī)劃智能體,針對本工序提出作業(yè)調(diào)度請求。
s103、規(guī)劃智能體插入時間周期窗口(通過設(shè)置計時器實現(xiàn)),對該時間周期窗口內(nèi)收到的作業(yè)調(diào)度請求進行基于時間、負載、成本和能耗的多目標優(yōu)化調(diào)度,如圖1所示,具體包括如下步驟:
s1031、規(guī)劃智能體在收到第一個作業(yè)調(diào)度請求后插入一個時間周期窗口;
s1032、規(guī)劃智能體提取工件智能體發(fā)送的數(shù)據(jù)包enc_list中的工藝加工信息;
s1033、若時間周期窗口滿,則轉(zhuǎn)至步驟s1034,否則繼續(xù)等待、接收工件智能體發(fā)送的工序調(diào)度請求,并重復步驟s1032至步驟s1033;
s1034、規(guī)劃智能體以提取、匯總的工藝加工信息為約束,以時間、負載、成本和能耗為優(yōu)化目標,根據(jù)其內(nèi)部封裝的多目標優(yōu)化算法,求解得出針對各作業(yè)請求的最優(yōu)調(diào)度方案即使得式(1)所表示的多目標優(yōu)化函數(shù)值最小的調(diào)度方案:
minf=min[f1,f2,f3,f4](1)
其中,f為多目標優(yōu)化函數(shù),f1,f2,f3,f4分別為時間、成本、負載和能耗函數(shù);
所述步驟s1034中多目標優(yōu)化算法具體包括如下步驟:
s10341、規(guī)劃智能體從每個工件智能體發(fā)送的數(shù)據(jù)包enc_list中抽取一條rlist作為可行加工方案,各個rlist組成針對所有工序的可行調(diào)度方案;
s10342、針對上述可行調(diào)度方案,計算出各個設(shè)備智能體完成此方案后對應(yīng)的負載、能耗、時間和成本并記錄record_maxec中,從record_maxec中選取最大的時間、能耗、負載和成本,計算該調(diào)度方案對應(yīng)的f值,記錄在數(shù)據(jù)庫machinegantt_temp中;
s10343、若該可行調(diào)度方案中存在同一機床加工不同工件工序的情況,交換各工序在該機床上的加工順序,得出另一種可行調(diào)度方案,并重復步驟s10342至s10343,否則轉(zhuǎn)步驟s10344;
s10344、重新抽取,遍歷所有的可行調(diào)度方案,得出其f值,并記錄在數(shù)據(jù)庫中;
s10345、比較各個f值,找出最小f值對應(yīng)的可行調(diào)度方案,并將此可行調(diào)度方案作為最優(yōu)調(diào)度方案發(fā)布,完成本輪工件智能體的作業(yè)調(diào)度請求。
求解多目標優(yōu)化函數(shù)最小值的具體表達式如下式(2)
其中,由于四個優(yōu)化目標f1,f2,f3,f4之間量綱之間的差異,且彼此數(shù)值相差較大不具可比性,需對四個優(yōu)化目標進行去量綱處理,即先對四個目標單獨進行10次優(yōu)化,取優(yōu)化過程中的最大值ftmax和最小值ftmin,去量綱后的多目標優(yōu)化函數(shù)由上述式(1)轉(zhuǎn)化為式(2);wt=(w1,w2,w3,w4)為多目標函數(shù)中各優(yōu)化目標的權(quán)重因子;各優(yōu)化目標的具體數(shù)學表達式如下:
f1=max(etij),i∈n,j∈p(3)
f2=mc+pc(4)
f3=tlm(5)
式中:
stij——工序oij的開始加工時間
etij——工序oij的加工結(jié)束時間
mci——工件i的原料成本
mc——全部工件的原料成本
pc——全部設(shè)備的加工成本
tlm——全部設(shè)備的負載
eak——設(shè)備k運轉(zhuǎn)消耗能量
m——一個正數(shù)(例如無窮大)
上式(12)到式(15)為約束條件,上式(12)、(13)確保設(shè)備k同一時刻只能加工一個工件;上式(14)表示一道工序只能在一臺設(shè)備上加工;上式(15)表示同一工件各工序的加工順序要求,即同一工件的某道工序,只有前道工序加工完畢之后才能加工該工序。
s104、規(guī)劃智能體依據(jù)得出的最優(yōu)調(diào)度方案向相應(yīng)設(shè)備智能體釋放工序加工任務(wù),設(shè)備智能體完成工序加工任務(wù),并通知工件智能體釋放下一道工序,如圖4所示,具體包括如下步驟:
s1041、設(shè)備智能體接收規(guī)劃智能體發(fā)送的工序加工任務(wù);
s1042、設(shè)備智能體訪問自身加工任務(wù)緩存列表,若當前無正在加工或待加工的任務(wù),則立即進行此工序的加工任務(wù),否則將此工序加工任務(wù)插入任務(wù)緩存列表等待加工;
s1043、設(shè)備智能體完成工序加工任務(wù)后更新自身狀態(tài)信息表,并通知相應(yīng)的工件智能體釋放下一道工序加工任務(wù)。
本發(fā)明的技術(shù)方案在保持多智能體技術(shù)求解車間調(diào)度問題智能性與分布式處理特性等特性的基礎(chǔ)上,通過引入時間周期窗口的概念,建立多目標優(yōu)化數(shù)學模型、設(shè)計多目標優(yōu)化算法并封裝至規(guī)劃智能體之中,實現(xiàn)了多目標優(yōu)化調(diào)度及生產(chǎn)資源在一段時間窗口內(nèi)的全局分配,解決了傳統(tǒng)多智能體方法求解車間調(diào)度問題的各項不足,能夠取得近優(yōu)的性能,提升了系統(tǒng)的整體調(diào)度優(yōu)化性能,設(shè)備智能體按照分配結(jié)果組織生產(chǎn),實現(xiàn)了動態(tài)敏捷的生產(chǎn)調(diào)度。本發(fā)明克服現(xiàn)有基于多智能體的車間調(diào)度方法存在的優(yōu)化目標過于單一、單個智能體缺乏全局觀和優(yōu)化區(qū)間過小的問題,通過在規(guī)劃智能體中設(shè)計、封裝多目標優(yōu)化算法,并插入長度可調(diào)的時間周期窗口,對本窗口內(nèi)收到的作業(yè)調(diào)度請求進行全局集中規(guī)劃調(diào)度,擴大了優(yōu)化區(qū)間,提升了系統(tǒng)的整體調(diào)度性能,實現(xiàn)了多目標優(yōu)化調(diào)度。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(read-onlymemory,rom)或隨機存儲記憶體(randomaccessmemory,ram)等。
以上結(jié)合具體實施例描述了本發(fā)明的技術(shù)原理。這些描述只是為了解釋本發(fā)明的原理,而不能以任何方式解釋為對本發(fā)明保護范圍的限制?;诖颂幍慕忉?,本領(lǐng)域的技術(shù)人員不需要付出創(chuàng)造性的勞動即可聯(lián)想到本發(fā)明的其它具體實施方式,這些方式都將落入本發(fā)明的保護范圍之內(nèi)。