1.一種連續(xù)配料料倉(cāng)加料作業(yè)延遲自動(dòng)調(diào)整方法,其特征在于,包括以下步驟:
1)收集參數(shù);參數(shù)信息包括:料倉(cāng)的料位上限lmax、料倉(cāng)最小加料停止線l+min、料倉(cāng)的料位下限lmin、允許開始加料的最高料位ls+、加料速度v+、加料小車的數(shù)量ncar、小車移動(dòng)速度vcar、相鄰料倉(cāng)間距m,調(diào)度周期T;
2)獲取原調(diào)度初始狀態(tài)和混勻任務(wù)要求的料槽運(yùn)行信息;原初始狀態(tài)信息包括:料槽的初始下料狀態(tài)、各個(gè)料倉(cāng)的初始料位、小車的初始位置、小車的初始可用時(shí)刻、小車的初始任務(wù);混勻任務(wù)要求的料槽運(yùn)行信息包括:混勻料槽可使用的料倉(cāng)、各個(gè)料倉(cāng)的下料速度;
3)導(dǎo)入以步驟1)和2)中數(shù)據(jù)信息為已知條件自動(dòng)編制好的連續(xù)配料料倉(cāng)加料作業(yè)時(shí)序計(jì)劃J,J中的作業(yè)按照開始時(shí)刻升序排列;導(dǎo)入料槽下料狀態(tài)變化時(shí)刻集合TT;
4)啟動(dòng)連續(xù)配料料倉(cāng)加料作業(yè)延遲自動(dòng)調(diào)整流程,具體是:
4.1)輸入被延遲的作業(yè)的編號(hào)j和延遲時(shí)長(zhǎng)δ;
4.2)根據(jù)編號(hào)j從原供料作業(yè)集合J中找到對(duì)應(yīng)的作業(yè)J(j),得到該作業(yè)原計(jì)劃開始加料時(shí)刻tsf(j),利用公式tnsf(j)=tsf(j)+δ,計(jì)算被延遲的作業(yè)新的開始加料時(shí)刻tnsf(j);
4.3)刪除原供料作業(yè)集合J中的編號(hào)大于等于j的所有作業(yè);
4.4)根據(jù)J中作業(yè)屬性“加料小車”,重置各個(gè)小車的最后任務(wù),若查詢不到,則令小車上無(wú)任務(wù);
4.5)判斷供料作業(yè)集合J是否為空,若為空,則令時(shí)鐘t=0,清空混勻料槽下料狀態(tài)變化時(shí)刻集合TT;若不為空,則找到作業(yè)j前的首個(gè)作業(yè)j-1,令時(shí)鐘t=tsf(j-1),刪除混勻料槽下料狀態(tài)變化時(shí)刻集合TT中不小于t的所有時(shí)間點(diǎn);
4.6)設(shè)置供料任務(wù)集合中結(jié)束時(shí)刻晚于時(shí)鐘t的所有任務(wù)的結(jié)束時(shí)刻為無(wú)窮大∞;
4.7)選中加料料倉(cāng)為被延遲的編號(hào)j作業(yè)對(duì)應(yīng)的料倉(cāng),令i表示其編號(hào);
4.8)計(jì)算料倉(cāng)i允許的最晚加料時(shí)刻ti,l+;
4.9)判斷tnsf(k)是否大于等于T;若是,則轉(zhuǎn)到步驟4.16);若否,則令t=tnsf(j),轉(zhuǎn)到步驟4.10);.
4.10)指定加料小車,確定小車行走時(shí)長(zhǎng);具體過(guò)程如下:
4.10.1)計(jì)算在時(shí)刻t每個(gè)小車k對(duì)選中料倉(cāng)i的可用時(shí)刻availti,t(k)和緊急可用時(shí)刻urgentavailti,t(k),若時(shí)刻t小車k的最后任務(wù)為空,則
urgentavailti,t(k)=availti,t(k)=max(t,initavailt(k)+m|initp(k)-i|/vcar)
其中,initavailt(k)為小車k的初始可用時(shí)刻,initp(k)為小車k的初始位置;
若時(shí)刻t小車k有最近任務(wù)j*,且最近任務(wù)的結(jié)束時(shí)刻et(j*)為∞,則利用料位計(jì)算公式判斷小車能否在時(shí)刻t前加滿;若能加滿,則計(jì)算加滿時(shí)刻tfull,
availti,t(k)=max(t,tfull+m|p(j*)-i|/vcar);
其中p(j*)為任務(wù)j*對(duì)應(yīng)的料倉(cāng)編號(hào);否則availti,t(k)=∞.小車k對(duì)選中料倉(cāng)i的緊急可用時(shí)刻為
urgentavailti,t(k)=max(t,interruptt(j*)+m|p(j*)-i|/vcar)
其中,interruptt(j*)為任務(wù)j*的允許打斷時(shí)刻;
若時(shí)刻t小車k有最近任務(wù)j*,且最近任務(wù)的結(jié)束時(shí)刻et(j*)不為∞,則
urgentavailti,t(k)=availti,t(k)=max(t,et(j*)+m|p(j*)-i|/vcar);
4.10.2)在小車集合中搜索availti,t(k)<tnsf(j)的所有小車;若搜索結(jié)果不為空,則轉(zhuǎn)到4.10.3);否則轉(zhuǎn)到步驟4.10.4);
4.10.3)從搜索結(jié)果中選擇行走距離最近的小車為料倉(cāng)i加料,記錄選中的小車為k*,過(guò)程結(jié)束;
4.10.4)搜索對(duì)選中料倉(cāng)i的緊急可用時(shí)刻urgentavailti,t(k)≤tnsf(j)的小車;若搜索結(jié)果不唯一,則選擇行走距離最近的小車為料倉(cāng)i加料;記錄選中的小車為k*;
4.11)料槽停止下料檢測(cè);料槽停止下料檢測(cè)的具體過(guò)程為:比較t和ti,l+的大小,若t>ti,l+,則表示料倉(cāng)i在開始加料前已經(jīng)斷料;根據(jù)集合TT判斷若則將ti,l+加入TT;
4.12)加滿檢測(cè);具體過(guò)程如下:遍歷所有小車k,若小車k上的最近任務(wù)j*的結(jié)束時(shí)刻為∞,則利用料位計(jì)算公式得到加滿時(shí)刻tfull;判斷k是否等于k*,若是,然后得到et(j*)=min(tfull,t-m|p(j*)-i|/vcar);若否,則判斷任務(wù)j*能否在t前加滿,若能加滿即tfull≤t,則判斷任務(wù)j*能否在完全不影響為其他料倉(cāng)供料的情況下確定加滿時(shí)刻,即要求tfull≤t-max(p(j*)-1,max(i)-p(j*)),其中max(i)表示料倉(cāng)編號(hào)的最大值,若tfull≤t-max(p(j*)-1,max(i)-p(j*)),則et(j*)=tfull;
4.13)添加新任務(wù)到供料任務(wù)集合J中,新任務(wù)的編號(hào)為J中最后一個(gè)任務(wù)的編號(hào)加1,并更新小車最近任務(wù);假設(shè)新任務(wù)為j',則該任務(wù)的可打斷時(shí)刻為interruptt(j')=t+(l+min-li,t)/v+;
4.14)料槽開始下料檢測(cè);料槽開始下料檢測(cè)的具體過(guò)程為:獲取新任務(wù)的料倉(cāng)編號(hào)i,并計(jì)算該料倉(cāng)在時(shí)刻t的料位li,t,計(jì)算小車將料倉(cāng)i料位加至最低料位以上的時(shí)刻tlmin(i),tlmin(i)=t+max(0,(lmin-li,t)/v+);判斷時(shí)刻tlmin(i)其他料倉(cāng)的料位是否均高于料倉(cāng)的料位下限lmin;若是,則根據(jù)料槽下料曲線判斷時(shí)刻tlmin的料槽下料狀態(tài),若時(shí)刻tlmin料槽下料狀態(tài)則將tlmin加入集合TT;
4.15)以當(dāng)前時(shí)刻t為起點(diǎn),生成調(diào)度周期T內(nèi)的后續(xù)加料作業(yè);具體過(guò)程如下:
4.15.1)選擇加料料倉(cāng),記為料倉(cāng)i*.選擇加料料倉(cāng)原則是對(duì)可用料倉(cāng)按照持續(xù)下料能力進(jìn)行升序排序,選出持續(xù)下料能力最小的料倉(cāng)作為加料料倉(cāng);料倉(cāng)持續(xù)下料能力的計(jì)算方法為:
假設(shè)料倉(cāng)編號(hào)為i,檢索供料任務(wù)作業(yè)集合中加料料倉(cāng)編號(hào)為i且開始時(shí)刻小于等于t結(jié)束時(shí)刻大于t的任務(wù);若結(jié)果不為空,則表示t時(shí)刻料倉(cāng)i正在加料;若結(jié)果為空,則表示t時(shí)刻料倉(cāng)無(wú)小車加料;
根據(jù)全局任務(wù)集合和料槽下料曲線,利用如下公式計(jì)算料倉(cāng)i在t時(shí)刻的料位li,t;
利用料倉(cāng)的持續(xù)下料能力計(jì)算公式
得到料倉(cāng)i的持續(xù)下料能力;
4.15.2)計(jì)算料倉(cāng)i*允許的最早和最晚開始加料時(shí)刻;
4.15.3)指定加料小車,確定開始加料時(shí)刻;
4.15.4)判斷開始加料時(shí)刻是否不小于調(diào)度周期T;若是,則過(guò)程結(jié)束;否則轉(zhuǎn)到步驟4.15.5);
4.15.5)令t等于開始加料時(shí)刻;
4.15.6)料槽停止下料檢測(cè);
4.15.7)加滿檢測(cè);
4.15.8)添加新作業(yè),并更新小車最后作業(yè);
4.15.9)料槽開始下料檢測(cè),轉(zhuǎn)到步驟4.15.1);
4.16)令t=T,啟動(dòng)料槽停止下料檢測(cè);
4.17)啟動(dòng)強(qiáng)制任務(wù)截?cái)喾椒?;遍歷所有小車k,計(jì)算各個(gè)小車作業(yè)料倉(cāng)的加滿時(shí)刻tfull,若tfull<T,則令小車上的作業(yè)的結(jié)束時(shí)刻為tfull;若tfull≥T,則令小車上的作業(yè)的結(jié)束時(shí)刻為T。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟4.8)中計(jì)算料倉(cāng)i允許的最晚加料時(shí)刻ti,l+的具體計(jì)算方法如下:
4.8.1)利用料位計(jì)算公式計(jì)算時(shí)刻t料倉(cāng)i的料位li,t,其中,li,0為料倉(cāng)i的初始料位;表示時(shí)刻t前料倉(cāng)i的加料總量,δi,t表示時(shí)刻t料倉(cāng)i是否加料,表示時(shí)刻t前料倉(cāng)i的下料總量,vi,-表示料倉(cāng)i的下料速度,
4.8.2)判斷是否小于等于lmin;若是則料倉(cāng)i允許的最晚加料時(shí)刻為ti,l+=t,計(jì)算過(guò)程結(jié)束;若否,轉(zhuǎn)至步驟4.8.3);
4.8.3)在料槽下料狀態(tài)變化時(shí)刻集合TT查找當(dāng)前時(shí)鐘時(shí)刻t之后的狀態(tài)變化時(shí)刻;若查找結(jié)果為空,則轉(zhuǎn)到4.8.4);若查找結(jié)果不為空,則轉(zhuǎn)到4.8.5);
4.8.4)根據(jù)料槽初始下料狀態(tài)和集合TT判斷時(shí)刻t料槽的下料狀態(tài)εt;若εt=1,則ti,l+=t+(li,t-lmin)/vi,-;若εt=0,則ti,l+=∞;計(jì)算過(guò)程結(jié)束;
4.8.5)遍歷4.8.3)中的查找結(jié)果,分段計(jì)算;求取滿足
的最小的t”;ti,l+=t”。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟4.15.2)中料倉(cāng)i*允許的最晚開始加料時(shí)刻的計(jì)算方法同步驟4.8)所述;料倉(cāng)i*允許的最早加料時(shí)刻的計(jì)算方法如下:
利用料位計(jì)算公式計(jì)算時(shí)刻t料倉(cāng)i*的料位
判斷是否小于等于lmin;若是,則料倉(cāng)i*允許的最早開始加料時(shí)刻計(jì)算過(guò)程結(jié)束;若否,則轉(zhuǎn)至下一步;
判斷是否小于等于ls+;若是,則計(jì)算過(guò)程結(jié)束;若否,則進(jìn)入下一步;
在料槽下料狀態(tài)變化時(shí)刻集合TT查找當(dāng)前時(shí)鐘時(shí)刻t之后的狀態(tài)變化時(shí)刻;若查找結(jié)果為空,根據(jù)料槽初始下料狀態(tài)和集合TT判斷時(shí)刻t料槽的下料狀態(tài)εt;若εt=1,則若εt=0,則計(jì)算過(guò)程結(jié)束;若查找結(jié)果不為空,則遍歷本步驟當(dāng)前時(shí)鐘時(shí)刻t之后的狀態(tài)變化時(shí)刻中的查找結(jié)果,分段計(jì)算;求取滿足
的最小的t',則