郭俊,王穎,李卓,鄧國群
(湖南汽車工程職業(yè)學(xué)院信息工程學(xué)院,湖南株洲 412001)
質(zhì)量和效率是工業(yè)制造永恒的主題,在金屬切削加工智能制造中,影響質(zhì)量和效率的關(guān)鍵裝備是數(shù)控機(jī)床。數(shù)控機(jī)床屬于精密制造裝備,雖然在出廠時(shí)自身的技術(shù)指標(biāo)均能達(dá)到相應(yīng)水準(zhǔn),但是應(yīng)用在實(shí)際產(chǎn)線時(shí),其加工精度會受夾具、刀具、環(huán)境溫度、振動、部件老化、工件材料一致性等因素影響[1]。而且,隨著機(jī)械設(shè)備的不斷使用,其穩(wěn)定性及精準(zhǔn)度逐步降低,勢必影響加工環(huán)節(jié)誤差,進(jìn)而影響后續(xù)工藝[2-3]。
現(xiàn)階段,有關(guān)各類誤差補(bǔ)償方法的研究有很多。文獻(xiàn)[4]利用旋轉(zhuǎn)進(jìn)給軸熱誤差對數(shù)控機(jī)床進(jìn)行補(bǔ)償。文獻(xiàn)[5]分析了數(shù)控機(jī)床在檢測中觸發(fā)式測頭誤差的變速補(bǔ)償。文獻(xiàn)[6]引入符合阿貝原則的數(shù)控機(jī)床幾何誤差進(jìn)行建模,并推導(dǎo)出XYFZ型三軸機(jī)床適用的HTM幾何誤差補(bǔ)償模型,以及給出模型正確使用的前提條件。文獻(xiàn)[7]提出了基于LSTM循環(huán)神經(jīng)網(wǎng)絡(luò)的數(shù)控機(jī)床熱誤差預(yù)測方法,并利用聚類算法構(gòu)建神經(jīng)網(wǎng)絡(luò)模型。上述方法大多專注于某種設(shè)備類型的某項(xiàng)指標(biāo)進(jìn)行誤差補(bǔ)償,其補(bǔ)償效果有限、可復(fù)用性低。
而Apriori算法可快速發(fā)現(xiàn)海量數(shù)據(jù)集中的相關(guān)性,神經(jīng)網(wǎng)絡(luò)算法對于處理大量非結(jié)構(gòu)化的工業(yè)大數(shù)據(jù)有獨(dú)特的優(yōu)勢,能夠有效補(bǔ)償產(chǎn)品實(shí)際加工中產(chǎn)生的誤差,大幅提升產(chǎn)品穩(wěn)定性及精準(zhǔn)度。因此,本文作者基于Apriori算法及神經(jīng)網(wǎng)絡(luò)方法,利用生產(chǎn)實(shí)踐中產(chǎn)生的大量數(shù)據(jù),找出不同狀態(tài)下最優(yōu)的補(bǔ)充參數(shù),為運(yùn)行中的車床提供即時(shí)、智能、精確的參數(shù)補(bǔ)償策略,確保數(shù)控機(jī)床的穩(wěn)定。
關(guān)聯(lián)規(guī)則反映事物之間的關(guān)聯(lián)性[8],能夠從數(shù)據(jù)集中發(fā)現(xiàn)2個(gè)或多個(gè)數(shù)據(jù)之間的相關(guān)關(guān)系,即從數(shù)據(jù)集中找到出現(xiàn)高頻次數(shù)的項(xiàng)目集,也稱頻繁項(xiàng)集。關(guān)聯(lián)規(guī)則廣泛應(yīng)用于數(shù)據(jù)挖掘中,其具體概念如下:
定義1:已知集合F={f1,f2,…,fk},集合中的每個(gè)元素稱為數(shù)據(jù)項(xiàng),集合F稱為項(xiàng)集,集合F中的數(shù)據(jù)長度稱為項(xiàng)集長度,包含k個(gè)長度的項(xiàng)集稱為k-項(xiàng)集。事物數(shù)據(jù)庫集用D表示,對于每一個(gè)子事物集用T表示。設(shè)D是交易T的集合,T?F,設(shè)M是F的項(xiàng)集,如果M?T,稱T包含M。
(1)
置信度fconfidence(M?N),表示包含M、N的交易數(shù)與包含M的交易數(shù)之比,如式(2)所示:
(2)
定義3:為了對關(guān)聯(lián)規(guī)則進(jìn)行量化和評估,設(shè)定min_sup值(最小支持度)和min_conf(最小置信度),對于項(xiàng)集M,如果支持度不小于min_sup值,且置信度不小于min_conf值,則項(xiàng)集M即為頻繁項(xiàng)集。
Apriori算法是實(shí)現(xiàn)關(guān)聯(lián)規(guī)則最經(jīng)典的算法[9],其原理是逐層迭代搜索。首先對數(shù)據(jù)集進(jìn)行掃描,得到一維候選項(xiàng)集,利用設(shè)定的最小支持度,對一維候選項(xiàng)集進(jìn)行剪枝,得到新的頻繁項(xiàng)集,再由頻繁項(xiàng)集連接成新的二維候選項(xiàng)集。Apriori算法通過k-1項(xiàng)集尋找k項(xiàng)集,不斷重復(fù)剪枝步和連接步,直到最大頻繁項(xiàng)集為空時(shí),結(jié)束迭代過程。其剪枝步和連接步原理如下:
連接步:由k-1項(xiàng)集Lk-1與本身相連得到頻繁項(xiàng)集Ck,記L1、L2為Lk-1前2個(gè)項(xiàng)集,設(shè)Li,[j]為任意子集第j項(xiàng),如果兩子集前k-2項(xiàng)相同,即(L1,[1]=L2,[1]∧L1,[2]=L2,[2]∧…∧L1,[k-2]=L2,[k-2]∧L1,[k-1] 剪枝步:Apriori算法的超集Ck可能是頻繁,也可能不頻繁,但所有頻繁k-項(xiàng)集必在Ck中,因此,對k-項(xiàng)集Ck中所有(k-1)進(jìn)行剪枝,刪除所有非頻繁(k-1)項(xiàng)子集,再由支持度得到Lk。 圖1 全連接神經(jīng)網(wǎng)絡(luò)模型 神經(jīng)網(wǎng)絡(luò)的訓(xùn)練在于調(diào)整隱藏層的層數(shù)及各層權(quán)重,輸出層節(jié)點(diǎn)的取值即為每層加權(quán)和,比如圖1中A11、C1值分別如公式(3)、(4)所示: (3) (4) 同理,可求出A12,…,A1g的值及C2,…,Ck的值,具體如公式(5)(6)所示: [A11,A12,…,A1,g]=[W1,W2,…,Wp]· (5) [C1,C2,…,Ck]=[A11,A12,…,A1g]· (6) 誤差補(bǔ)償模型可分為兩部分,第一部分為智能誤差補(bǔ)償模塊。由于數(shù)據(jù)集中各特征值相差較大,先對數(shù)據(jù)集做0-1歸一化處理,使它落入一個(gè)特定區(qū)間,以消除數(shù)值因大小不一造成挖掘效果偏差,從而提高數(shù)據(jù)收斂速度,有利于尋找全局最優(yōu)解;再利用Apriori算法對生產(chǎn)企業(yè)提供的數(shù)據(jù)集進(jìn)行篩選,得到更具針對性的數(shù)據(jù)集;之后利用神經(jīng)網(wǎng)絡(luò)方法調(diào)整參數(shù),通過不斷更新神經(jīng)網(wǎng)絡(luò)模型參數(shù),構(gòu)建合適的智能誤差補(bǔ)償模型;最后將訓(xùn)練好的誤差補(bǔ)償算法模型部署至云平臺,用于加工誤差精度補(bǔ)償,從而減少機(jī)床加工誤差。第二部分為視覺檢測模塊。先把合格與不合格2類樣本圖片作為訓(xùn)練數(shù)據(jù)上傳至云平臺;之后將圖片縮放到合適尺寸,得到高質(zhì)量的圖片數(shù)據(jù);再利用神經(jīng)網(wǎng)絡(luò)方法,訓(xùn)練選取的圖片,使計(jì)算機(jī)掌握分辨工件合格與否的能力;最后將訓(xùn)練好的模型部署至云平臺,用于驗(yàn)證工件是否合格。 利用誤差補(bǔ)償模型生產(chǎn)的工件,通過視覺檢測模塊辨別,區(qū)分為合格或不合格工件。如果不合格工件過多,則應(yīng)重新調(diào)整誤差補(bǔ)充算法。 系統(tǒng)整體設(shè)計(jì)如圖2所示。 圖2 系統(tǒng)整體設(shè)計(jì) 某企業(yè)提供的adjustment文件中,對于相同w1,w2,…,w18特征值,會對應(yīng)不同c1,c2,…,c8補(bǔ)償參數(shù),具體如圖3所示。另外,每一個(gè)補(bǔ)償參數(shù)值在c1,c2,…,c8中出現(xiàn)次數(shù)有所不同,比如1.842在c1,c2,…,c8中出現(xiàn)次數(shù)分別為13次、3次、2次、1次、1次、0次、11次、6次。當(dāng)1.842出現(xiàn)次數(shù)為13次和11次時(shí),score值大于等于90,當(dāng)1.842出現(xiàn)次數(shù)在11次以下時(shí),score值小于90。因此,利用第1.1節(jié)中關(guān)聯(lián)規(guī)則及第1.2節(jié)中Apriori算法,通過設(shè)定最小支持度,對于1.842作為c1,c2,…,c8補(bǔ)償參數(shù),c1和c7兩列具有相關(guān)性,這兩列對于1.842予以保留,其余列對于1.842予以刪除。同理,利用關(guān)聯(lián)規(guī)則及Apriori算法找出其余補(bǔ)償數(shù)據(jù)在c1,c2,…,c8間的關(guān)聯(lián)性,從而得到更具針對性數(shù)據(jù)集。 圖3 相同特征值不同補(bǔ)償參數(shù)所得結(jié)果不同 Apriori算法偽代碼如下: Input:某企業(yè)工件生產(chǎn)事物數(shù)據(jù)庫DataBase。最小支持度閾值min_sup。 Output:DataBase中最大頻繁項(xiàng)集L。 (1)L1=find_frequent_1-itemsets(DataBase) (2)for(k=2;Lk-1≠f;k++) (3)Ck=apriori_gen(Lk-1,min_sup) (4)for each transactiont∈DataBase do{ (5)Ct=subset(Ck,t); (6)for each candidatec∈Ct (7)c.count++;} (8)Lk={c∈Ck|c.count>=min_sup} (9)returnL=UkLk; 其中:L是頻繁項(xiàng)集;C是候選項(xiàng)集;apriori_gen是實(shí)現(xiàn)由頻繁項(xiàng)集Lk-1生成候選項(xiàng)集Ck的過程。 依據(jù)某企業(yè)提供的相關(guān)文件adjustment.csv,利用第1.3節(jié)神經(jīng)網(wǎng)絡(luò)算法,對誤差補(bǔ)償算法進(jìn)行訓(xùn)練部署,使數(shù)控系統(tǒng)具有誤差自動補(bǔ)償功能,在實(shí)際加工中,能有效提高工件生產(chǎn)合格率。adjustment.csv文件中共有9 999條數(shù)據(jù),部分?jǐn)?shù)據(jù)如圖4所示。 圖4 adjustment文件中部分?jǐn)?shù)據(jù) 上圖中:w1,w2,…,w18分別表示刀具磨損、溫度、濕度等外部影響因素;c1,c2,…,c8為外部補(bǔ)償參數(shù);score值為工件合格評判標(biāo)準(zhǔn),若score大于等于90分則工件合格,若score小于90分則工件不合格。 智能誤差補(bǔ)償算法具體實(shí)現(xiàn)步驟如下: 步驟1,數(shù)據(jù)清洗。數(shù)控機(jī)床加工中,會產(chǎn)生許多有問題的數(shù)據(jù),比如殘缺數(shù)據(jù)、噪聲數(shù)據(jù)和冗余數(shù)據(jù),這些臟數(shù)據(jù)對數(shù)據(jù)分析會有較大影響。而文中所用數(shù)據(jù)集,w1,w2,…,w18特征值中有很多Null值,即空值。因此,對于這些殘缺值,使用均值a代替,具體如公式(7)所示: a=(w1+w2+…+w18)/18 (7) 步驟2,數(shù)據(jù)歸一化處理。神經(jīng)網(wǎng)絡(luò)中數(shù)據(jù)之間往往具有不同的量綱,為了消除不同量綱的數(shù)據(jù)影響,需要對數(shù)據(jù)進(jìn)行歸一化處理,使它落定在一個(gè)特定區(qū)間。數(shù)據(jù)歸一化能夠提高收斂速度,有利于尋找全局最優(yōu)解。常見的數(shù)據(jù)歸一化有最大-最小標(biāo)準(zhǔn)化、0-1標(biāo)準(zhǔn)化、零-均值標(biāo)準(zhǔn)化。由于步驟1采用均值填充空值,因此文中采用0-1標(biāo)準(zhǔn)化。具體如公式(8)(9)所示: s2=[(w1-a)2+(w2-a)2+...+(w18-a)2]/18 (8) x*=[(w1+w2+w3...+w18)-a]/s (9) 其中:s2表示方差;s表示標(biāo)準(zhǔn)差;x*表示歸一化后的數(shù)據(jù)。 步驟3,誤差補(bǔ)償算法模型訓(xùn)練。利用第1.3節(jié)神經(jīng)網(wǎng)絡(luò)模型,構(gòu)建神經(jīng)網(wǎng)絡(luò)誤差補(bǔ)償算法模型,模型輸入層節(jié)點(diǎn)18個(gè),分別為特征值w1,w2,…,w18;輸出層節(jié)點(diǎn)8個(gè),分別對應(yīng)r1,r2,…,r8,利用pycharm中TensorFlow的 tf.keras.Sequential函數(shù),通過不斷更新網(wǎng)絡(luò)參數(shù),得到最優(yōu)模型。誤差補(bǔ)償算法模型偽代碼如下: model = tf.keras.Sequential([ layers.Dense(512,input_dim=train_features.shape[1],activation="relu"), layers.Dense(512,activation="relu"), layers.Dense(512,activation="relu"), layers.Dense(train_labels.shape[1])]) model.compile(optimizer=tf.keras.optimizers. SGD(learning_rate=lr,momentum=0.9, loss="mse",nesterov=True,clipvalue=0.5, decay=lr/epochs_number),metrics=['acc']) 步驟4,誤差補(bǔ)償算法模型訓(xùn)練部署。將訓(xùn)練好的誤差補(bǔ)償算法模型部署至云平臺,用于加工誤差精度補(bǔ)償,從而減少機(jī)床加工誤差。 通過工業(yè)視覺進(jìn)行工件訓(xùn)練,采集合格與不合格樣本,并進(jìn)行數(shù)據(jù)預(yù)處理、云平臺存儲,利用第1.3節(jié)神經(jīng)網(wǎng)絡(luò)算法,通過設(shè)定相應(yīng)參數(shù)進(jìn)行模型訓(xùn)練和部署。訓(xùn)練好的模型能夠返回待測工件和標(biāo)準(zhǔn)件的相似度,使設(shè)備具有識別合格品和不合格品工件的功能。 視覺檢測算法具體實(shí)現(xiàn)步驟如下: 步驟1,數(shù)據(jù)采集。利用視覺系統(tǒng)進(jìn)行若干工件圖像數(shù)據(jù)采集,確定工件樣本圖像數(shù)據(jù)庫。 步驟2,數(shù)據(jù)預(yù)處理。對圖片進(jìn)行相關(guān)處理,選擇質(zhì)量高的圖片進(jìn)行訓(xùn)練。 步驟3,視覺檢測模型訓(xùn)練。調(diào)用Pycharm中TensorFlow的 tf.keras.Sequential函數(shù),通過不斷更新網(wǎng)絡(luò)參數(shù),得到最優(yōu)模型。視覺檢測模型偽代碼如下: model=tf.keras.Sequential([ layers.experimental.preprocessing.Rescaling(1./127.5,offset=-1), layers.MaxPooling2D(), layers.Conv2D(64,3,activation=‘relu’), layers.MaxPooling2D(), layers.Conv2D(128,3,activation=‘relu’), layers.MaxPooling2D(), layers.Conv2D(256,3,activation=‘relu’), layers.Conv2D(512,3,activation=‘relu’), layers.MaxPooling2D(), layers.Flatten(), layers.Dense(128,activation=‘relu’), layers.Dense(num_classes),]) model.compile(optimizer=‘a(chǎn)dam’, loss=‘sigmoid’,metrics=[‘a(chǎn)ccuracy’]) 其中:activation=‘relu’為神經(jīng)網(wǎng)絡(luò)激活函數(shù);loss=‘sigmoid’為損失函數(shù);optimizer=‘a(chǎn)dam’為選擇器。 步驟4,視覺檢測模型部署。將訓(xùn)練好的視覺檢測模型部署至云平臺,用于識別合格與不合格的工件。 (1)誤差補(bǔ)償模型仿真測試 將數(shù)據(jù)集分為訓(xùn)練集數(shù)據(jù)和測試集數(shù)據(jù),訓(xùn)練集數(shù)據(jù)用于模型訓(xùn)練,測試集數(shù)據(jù)用于模型驗(yàn)證。利用Pyhton框架下的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行仿真測試,通過循環(huán)迭代,直至尋找到神經(jīng)網(wǎng)絡(luò)模型各參數(shù)最優(yōu)解。仿真測試可分為2種情況:一種不對數(shù)據(jù)進(jìn)行任何處理,得到圖5所示結(jié)果;另一種對數(shù)據(jù)進(jìn)行關(guān)聯(lián)分析、歸一化等數(shù)據(jù)預(yù)處理,得到圖6所示結(jié)果。 對比圖5、6可以看出:如果不對數(shù)據(jù)做任何處理,隨著訓(xùn)練次數(shù)的增加,訓(xùn)練集數(shù)據(jù)和測試集數(shù)據(jù)精度雖然都有增加,但訓(xùn)練集數(shù)據(jù)和測試集數(shù)據(jù)最高精度也只有0.275、0.247;如果對數(shù)據(jù)集進(jìn)行關(guān)聯(lián)性、歸一化處理,且利用第3.2節(jié)訓(xùn)好練的神經(jīng)網(wǎng)絡(luò)智能誤差補(bǔ)償算法,則訓(xùn)練集數(shù)據(jù)集和測試集數(shù)據(jù)集的最高精度分別可達(dá)0.97和0.96,精度較之前分別提高0.695和0.713。由此可見,神經(jīng)網(wǎng)絡(luò)智能誤差補(bǔ)償算法能夠提高加工精度穩(wěn)定性。 圖5 數(shù)據(jù)不做任何處理結(jié)果 圖6 對數(shù)據(jù)集處理后結(jié)果 (2)視覺檢測模型仿真測試 通過工業(yè)視覺進(jìn)行工件訓(xùn)練對合格與不合格樣本數(shù)據(jù)采集,可分2種情形:一種是采集圖片數(shù)量較少、圖片質(zhì)量較差,得到圖7所示結(jié)果;另一種是采集圖片數(shù)量多、圖片質(zhì)量好,且通過不斷進(jìn)行神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練,得到圖8所示結(jié)果。 對比圖7、8可以看出:如果不對圖片做任何處理,隨著模型訓(xùn)練次數(shù)的增加,訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集的精度最高可達(dá)0.65和0.635;如果對圖片進(jìn)行相關(guān)處理,且利用第3.3節(jié)視覺檢測算法,則訓(xùn)練集和測試集數(shù)據(jù)的精度分別可達(dá)0.99和0.91,精度較之前分別提高0.34和0.275。由此可見,神經(jīng)網(wǎng)絡(luò)視覺檢測算法能大大提高物件合格與不合格檢測率。 圖7 圖片未作處理 圖8 圖片相關(guān)處理 (3)實(shí)際測試 準(zhǔn)備30個(gè)物料,用于實(shí)際加工,物料加工槽如圖9所示。通過傳送帶,把物料傳送至雕刻臺,逐一雕刻,如圖10所示。在雕刻過程中,云平臺會通過智能誤差補(bǔ)償算法,用于加工誤差精度補(bǔ)償,從而提高產(chǎn)品合格率。雕刻完成后,通過視覺檢測算法,驗(yàn)證工件圖片是否合格。結(jié)果表明:30個(gè)雕刻物料都合格,合格率100%,具體如圖11所示。 為解決數(shù)控機(jī)床加工精度穩(wěn)定性問題,提出了一種基于Apriori算法及神經(jīng)網(wǎng)絡(luò)的智能模型。為提高數(shù)據(jù)有效性,采用Apriori算法進(jìn)行數(shù)據(jù)關(guān)聯(lián)性挖掘。為解決實(shí)際加工中加工精度受機(jī)床零部件、外部環(huán)境等因素的影響,采用神經(jīng)網(wǎng)絡(luò)構(gòu)建智能誤差補(bǔ)償模型,提供即時(shí)、智能、精確的補(bǔ)償方案。 為驗(yàn)證誤差補(bǔ)償模型對數(shù)控機(jī)床穩(wěn)定性影響,采用神經(jīng)網(wǎng)絡(luò)構(gòu)建視覺檢測模型,對加工產(chǎn)品進(jìn)行識別,判斷其是否合格,并統(tǒng)計(jì)合格率。仿真結(jié)果表明:文中構(gòu)建的誤差補(bǔ)償模型能夠使訓(xùn)練集數(shù)據(jù)和測試集數(shù)據(jù)的精準(zhǔn)度分別達(dá)到0.97和0.96,并且文中構(gòu)建的視覺檢測模型能夠?qū)y試集數(shù)據(jù)和訓(xùn)練集數(shù)據(jù)進(jìn)行了有效識別,精度分別為0.99和0.91。實(shí)驗(yàn)結(jié)果表明:所有產(chǎn)品都符合精度要求,上述模型能夠解決數(shù)控機(jī)床加工中穩(wěn)定性問題。下一步的研究可以考慮加入聚類算法,結(jié)合神經(jīng)網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)集,并引入更大的數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)測試,分析其穩(wěn)定性。1.3 神經(jīng)網(wǎng)絡(luò)算法分析
2 誤差補(bǔ)償模型
3 算法實(shí)現(xiàn)
3.1 基于Apriori算法的關(guān)聯(lián)規(guī)則實(shí)現(xiàn)
3.2 基于神經(jīng)網(wǎng)絡(luò)智能誤差補(bǔ)償算法實(shí)現(xiàn)
3.3 基于神經(jīng)網(wǎng)絡(luò)視覺檢測算法實(shí)現(xiàn)
4 結(jié)果測試
5 結(jié)語