需求:
目前有固定尺寸板材一塊巾腕,需要在多個位置開孔絮蒿,孔徑不定。
開料機排鉆包鉆頭位置可自己定義佛寿,各鉆頭槽間距暫定32mm冀泻。
問題:
計算打孔方式及打孔順序滿足以下兩個條件:
1 、路徑最短弹渔。排鉆移動路徑最少。
2 舞肆、多換鉆頭鸟召。盡量在一個位置下多個鉆打孔。
思路:
由問題一路徑最短可參考TSP問題压状,標(biāo)準(zhǔn)算法是遞歸遍歷跟继,但是若孔位較多時間復(fù)雜度(n!)就會暴增。當(dāng)前場景孔位已經(jīng)固定娱两,策略具備無后效性金吗。同時考慮到問題二多鉆頭的情況摇庙。所以采用適配排鉆布局的貪心算法來尋求最優(yōu)解。最終將步驟描述如下:
a. 孔位用數(shù)字編號來表示:0,1,2...,N卫袒,孔位尺寸為H [ i ]。
b. 任何兩個孔位的距離記錄在數(shù)組 D0 [ i , j ] 中宝穗。
c. 按照最短路徑排序重新入棧码秉。將排鉆包排列為數(shù)組泡徙。
c. 將訪問過的孔位記錄再 S[ i ] 中。0代表未訪問莉兰,1代表已訪問。指定 S[0] = 1杉辙。
d. 將在水平/垂直方向符合要求(32倍數(shù)捶朵,小于排鉆包尺寸)的點位、距離及尺寸放入數(shù)組D1/D2品腹。
e. 從 S [ 0 ]? 開始红碑,尋找排鉆匹配策略,然后分別在D1析珊、D2上邁步尋找符合多鉆同打的策略羡鸥。
? ? ? e.1 多鉆同打需要符合排鉆包的尺寸排列。
? ? ? e.2?同時打孔要求深度相同忠寻。
? ? ? e.3 當(dāng)匹配到最近同鉆打孔后惧浴,重復(fù)e推進策略。
g. 采取上述所有策略中包含點位最多的策略奕剃,將策略中所有鉆孔置1衷旅。排完第 t 個鉆孔后,尋求局部最近坐標(biāo) t+1 纵朋,繼續(xù)匹配 e 步驟 芜茵。