張偉偉
(甘肅省景泰川電力提灌水資源利用中心,甘肅 景泰 730400)
作為化肥量第一使用大國(guó),我國(guó)在灌區(qū)農(nóng)田施肥目前主要采取人工撒肥的方式進(jìn)行施肥,人工施肥具有作業(yè)效率低、不均勻和偏施等問(wèn)題[1]。離心式撒肥機(jī)是一種重要的農(nóng)業(yè)撒肥機(jī)械,撒肥效率高,可提高肥料利用率,降低化學(xué)肥料對(duì)環(huán)境的影響,符合綠色農(nóng)業(yè)發(fā)展理念[2]。
國(guó)外對(duì)于撒肥機(jī)的研究起步較早,自動(dòng)化程度較高,主要集中在歐洲國(guó)家和美國(guó)[3-5],如美國(guó)約翰迪爾、法國(guó) CUHN 公司的ProP ush2044 型背推式撒肥機(jī)、法國(guó)庫(kù)恩公司的 Protwin8150 型側(cè)錘片式撒肥機(jī)和德國(guó)阿瑪松撒肥機(jī)[6-7]。但昂貴的價(jià)格成為推廣應(yīng)用的主要阻礙。近年來(lái)國(guó)內(nèi)撒肥機(jī)的研究也取得一定的進(jìn)展,胡永光等[8]針對(duì)茶園的施肥模式,設(shè)計(jì)出一種茶園專(zhuān)用撒肥機(jī)。石河子大學(xué)胡東彬等[9]設(shè)計(jì)一種雙圓盤(pán)離心式液控變量撒肥機(jī),利用離散元仿真軟件 EDEM 通過(guò)圓盤(pán)轉(zhuǎn)速、攪龍轉(zhuǎn)速、行走速度等對(duì)撒肥均勻性進(jìn)行單因素離散元仿真分析。塔里木大學(xué)張涵等[10]使用雙絞龍為撒肥部件,在輸肥同時(shí)進(jìn)行攪拌,防止有機(jī)肥堵塞出肥口;馬標(biāo)等[11]通過(guò)調(diào)整碎肥裝置上撥爪的排列方式,對(duì)臥式有機(jī)肥撒肥機(jī)進(jìn)行研究,增加了有機(jī)肥的破碎效果。
目前國(guó)內(nèi)現(xiàn)有的撒肥機(jī)施肥過(guò)程需要人工規(guī)劃施肥機(jī)路線(xiàn),自動(dòng)化和智能化水平較低。本文針對(duì)規(guī)則與不規(guī)則邊界地形采用蟻群算法對(duì)自走式撒肥機(jī)施肥路線(xiàn)進(jìn)行最優(yōu)路徑規(guī)劃,以期提高施肥效率和自動(dòng)化智能化水平,為自主撒肥機(jī)設(shè)計(jì)研究提供理論依據(jù)。
整機(jī)結(jié)構(gòu)由機(jī)架、料斗、行走裝置、撒肥裝置組成,如圖1 所示,其中料斗設(shè)計(jì)為梯形結(jié)構(gòu),底部開(kāi)設(shè)小孔便于落料,行走裝置采用地輪以適應(yīng)復(fù)雜地形,撒肥裝置由電機(jī)拖動(dòng)撒盤(pán)旋轉(zhuǎn)進(jìn)行撒肥。
圖1 撒肥機(jī)整機(jī)結(jié)構(gòu)
工作過(guò)程中,行走裝置按照規(guī)劃路徑行駛,肥料從料斗落下,撒盤(pán)對(duì)從料斗落下的肥料進(jìn)行均勻拋撒。
撒肥機(jī)在自主行走過(guò)程中為平面運(yùn)動(dòng),主要表現(xiàn)為在X 方向和Y 方向運(yùn)動(dòng)控制作用下走出一條滿(mǎn)足約束情況的撒肥行駛路徑,在行駛過(guò)程中由多個(gè)目標(biāo)點(diǎn)組成路徑,目標(biāo)點(diǎn)為必經(jīng)點(diǎn)。其運(yùn)動(dòng)學(xué)方程為
式中:
x、y——撒肥機(jī)行走過(guò)程中在平面上運(yùn)動(dòng)的橫坐標(biāo)與縱坐標(biāo);
vx、vy——撒肥機(jī)在X、Y 方向的速度,m/s;
ux、uy——X、Y 方向的控制力矩,N·m。
由于該問(wèn)題中撒肥機(jī)必然經(jīng)過(guò)規(guī)劃必經(jīng)點(diǎn),針對(duì)多區(qū)間帶有約束的最優(yōu)路徑,本文選取狀態(tài)變量X=[xyvxvy]T,控制變量U=[uxuy]T,可得到狀態(tài)方程約束為
在行駛工作過(guò)程中,考慮到撒肥路徑的時(shí)間最短、撒肥機(jī)耗能最少、撒肥效率高,對(duì)于撒肥機(jī)行駛必經(jīng)點(diǎn),假設(shè)其數(shù)量為n,定義目標(biāo)函數(shù)為
式中:
t0——第p階段的初始時(shí)刻;
tf——該階段的終止時(shí)刻。
由狀態(tài)向量在不同階段的t0、tf可得到邊界條件為
式中:
(x0,y0)(p)——第p個(gè)規(guī)劃必經(jīng)點(diǎn)的坐標(biāo);
(x(t0),y(t0))(p)、(x(tf),y(tf))(p)——第p區(qū)間上初始時(shí)刻和終止時(shí)刻的位置邊界值;
vx(1)(t0)、vy(1)(t0)、vx(n)(tf)、vy(n)(tf)——第1 階段初始時(shí)刻和最后階段終止時(shí)刻的速度邊界值。
對(duì)不同階段之間的連接點(diǎn),做如下約束
通過(guò)上述動(dòng)力學(xué)方程、目標(biāo)函數(shù)以及約束條件,組成了Bolza 形式性能指標(biāo)的最優(yōu)控制問(wèn)題,對(duì)撒肥機(jī)的最優(yōu)運(yùn)動(dòng)路徑進(jìn)行求解。
蟻群算法是一種啟發(fā)式改進(jìn)型算法,其是通過(guò)模擬自然界中螞蟻集體尋找食物時(shí)的蟻群路徑規(guī)劃行為進(jìn)而產(chǎn)生的優(yōu)化算法。蟻群中螞蟻在巢穴四周尋找食物時(shí),蟻群與食物之間的路徑通常為直線(xiàn),由此可見(jiàn),蟻群有著很強(qiáng)的尋優(yōu)能力。螞蟻會(huì)在運(yùn)動(dòng)的路線(xiàn)上留下信息素,在相同時(shí)間內(nèi)信息濃度越高,代表該路徑越短。螞蟻會(huì)根據(jù)信息素的濃度選擇路徑,濃度越高,選擇的傾向越大。這種正反饋機(jī)制導(dǎo)致最終所有螞蟻均選擇最短路徑,實(shí)現(xiàn)路徑規(guī)劃。
假設(shè)蟻群中螞蟻的數(shù)量為m,dij(i,j=1,2,…,n)表示沖孔點(diǎn)i與j之間的距離。每一個(gè)沖孔點(diǎn)在一次迭代中只訪問(wèn)一次,通過(guò)建立“禁忌表”來(lái)存放已經(jīng)訪問(wèn)過(guò)的沖孔點(diǎn),以免重復(fù)訪問(wèn)。
在算法運(yùn)行中,螞蟻k(k=1,2,…,m)由沖孔點(diǎn)i向沖孔點(diǎn)j轉(zhuǎn)移的概率Q,可以由式(7)計(jì)算得到。
式中:
τij(t)——沖孔點(diǎn)i與j之間的信息素濃度;
ηij(t)——從沖孔點(diǎn)i到?jīng)_孔點(diǎn)j的期望啟發(fā)式,其數(shù)值為1/dij;
Ak——螞蟻下一步可以選擇的沖孔點(diǎn)集合;
α——信息啟發(fā)式因子,表示計(jì)算時(shí)信息素濃度影響轉(zhuǎn)移概率Q的程度;
β——期望啟發(fā)式因子,表示計(jì)算時(shí)沖孔點(diǎn)i與j之間的距離影響轉(zhuǎn)移概率Q的程度。
螞蟻在行進(jìn)中不斷釋放信息素,但是信息素也會(huì)隨著時(shí)間的流逝而逐漸揮發(fā),因此,在分別計(jì)算所有螞蟻經(jīng)過(guò)路徑的長(zhǎng)度,記錄最短的長(zhǎng)度和路徑順序之后,需要對(duì)信息素濃度進(jìn)行更新。首先計(jì)算揮發(fā)后剩余的信息素濃度,然后計(jì)算本次行進(jìn)期間釋放的信息素濃度,如式(8)所示。
式中:
ρ——信息素?fù)]發(fā)系數(shù)。
式中:
式中:
Q——常數(shù);
Lk——螞蟻k在本次周游過(guò)程中經(jīng)過(guò)的路徑長(zhǎng)度。
本文選擇Ant cycle 模型,其是在所有螞蟻均拜訪完全部規(guī)劃必經(jīng)點(diǎn)后,統(tǒng)一對(duì)行程中的信息素濃度進(jìn)行更新。而Ant density 和Ant quantity 模型,則是在2 個(gè)沖孔點(diǎn)間移動(dòng)1 次后即更新信息素。
在撒肥機(jī)行駛過(guò)程中,蟻群算法的程序流程圖如圖2 所示,具體描述如下。
圖2 蟻群算法計(jì)算流程
1)初始化程序,設(shè)置參數(shù),包括螞蟻數(shù)量、沖孔點(diǎn)位置矩陣、信息啟發(fā)式因子、期望啟發(fā)式因子、信息素?fù)]發(fā)因子、迭代次數(shù)等。
2)迭代尋找最佳路徑,隨機(jī)產(chǎn)生各螞蟻的起始沖孔點(diǎn),按照概率公式計(jì)算配合輪盤(pán)賭法下一點(diǎn),將已經(jīng)訪問(wèn)過(guò)的沖孔點(diǎn)加入禁忌表中。
3)計(jì)算本次迭代過(guò)程中的最短路徑與平均路徑,更新信息素濃度,清空禁忌表。
4)重復(fù)上述過(guò)程,直至達(dá)到初始設(shè)定的迭代次數(shù)為止,得到最優(yōu)解和計(jì)算時(shí)間。
本文選擇3 750 mm×4 500 mm 規(guī)則長(zhǎng)方形地塊規(guī)劃路徑,根據(jù)Kuhn 公司的MDSl0.I 型單圓盤(pán)撒肥機(jī)的作業(yè)寬度為10~18 m[13],選擇工作寬度為15 m。按照撒肥機(jī)作業(yè)半徑進(jìn)行橫向和縱向分割,其中藍(lán)色網(wǎng)格相交點(diǎn)為撒肥機(jī)必經(jīng)點(diǎn),如圖3 所示。從四周邊界任選一點(diǎn)交叉點(diǎn)選擇撒肥機(jī)起始位置,本文選?。?50,0)點(diǎn)作為起始點(diǎn),進(jìn)行路徑規(guī)劃。
圖3 規(guī)則邊界地塊網(wǎng)格分割圖
針對(duì)不規(guī)則邊界地塊的撒肥路徑規(guī)劃,通過(guò)對(duì)最大邊界依照從左至右從上而下的規(guī)則按照撒肥機(jī)作業(yè)半徑依次進(jìn)行縱向和橫向分割直到最右邊邊界距離最后一次分割的邊界的距離小于作業(yè)半徑為止,進(jìn)而完成不規(guī)則邊界地塊分割。除去邊界交叉點(diǎn),其中藍(lán)色網(wǎng)格相交點(diǎn)為撒肥機(jī)必經(jīng)點(diǎn),選擇邊界點(diǎn)與交叉點(diǎn)相重合的點(diǎn)為起始點(diǎn)進(jìn)行路徑規(guī)劃,本文選取(750,0)點(diǎn)作為起始點(diǎn),如圖4 所示。
圖4 不規(guī)則邊界地塊網(wǎng)格分割圖
使用Matlab 軟件,選擇蟻群算法和粒子群算法分別對(duì)規(guī)則地塊和不規(guī)則地塊進(jìn)行路徑規(guī)劃,在相同的條件和相同環(huán)境下進(jìn)行路徑規(guī)劃試驗(yàn),重復(fù)多組試驗(yàn),取其結(jié)果的平均值,最后得到自主撒肥機(jī)的最優(yōu)運(yùn)動(dòng)軌跡。試驗(yàn)環(huán)境為Window10 操作系統(tǒng),Intel Core i7-8th 處理器,8 G 內(nèi)存,Matlab_R2020b編程環(huán)境。
蟻群算法參數(shù)設(shè)置為螞蟻數(shù)量:50;信息素?fù)]發(fā)因子:0.2;啟發(fā)函數(shù)重要程度因子:5;信息素重要程度因子:1;最大迭代次數(shù):150。
粒子群算法參數(shù)設(shè)置為粒子數(shù):81;進(jìn)化代數(shù):800;權(quán)重設(shè)置:0.9。
規(guī)則邊界地塊撒肥機(jī)按照蟻群算法規(guī)劃路徑如圖5 所示,其行駛的最短距離為16 060.660 2 mm,在21 步迭代后找到全局最優(yōu)解,算法收斂速度快,計(jì)算機(jī)計(jì)算時(shí)間為1.60 s,如圖6 所示;規(guī)則邊界地塊撒肥機(jī)按照粒子群算法規(guī)劃路徑如圖7 所示,其行駛的最短距離為31 580.793 mm,在130 步迭代后找到全局最優(yōu)解,算法收斂速度相對(duì)較慢,計(jì)算機(jī)計(jì)算時(shí)間為3.21 s,如圖8 所示。
圖5 蟻群算法規(guī)劃路徑圖
圖6 蟻群算法迭代計(jì)算圖
圖7 粒子群算法規(guī)劃路徑圖
圖8 粒子群群算法迭代計(jì)算圖
不規(guī)則邊界地塊撒肥機(jī)按照蟻群算法規(guī)劃路徑如圖9 所示,其行駛的最短距離為17 560.660 2 mm,在7 步迭代后找到全局最優(yōu)解,算法收斂速度快,計(jì)算機(jī)計(jì)算時(shí)間為1.804 4 s,如圖10 所示;不規(guī)則邊界地塊撒肥機(jī)按照粒子群算法規(guī)劃路徑如圖11 所示,其行駛的最短距離為35 580.393 5 mm,在20 步迭代后找到全局最優(yōu)解,算法收斂速度相對(duì)較慢,計(jì)算機(jī)計(jì)算時(shí)間為2.89 s,如圖12 所示。
圖9 蟻群算法規(guī)劃路徑圖
圖10 蟻群算法迭代計(jì)算圖
圖11 粒子群算法規(guī)劃路徑圖
圖12 粒子群算法迭代計(jì)算圖
規(guī)則邊界地塊撒肥機(jī)按照蟻群算法規(guī)劃路徑最短距離為16 060.660 2 mm,計(jì)算機(jī)計(jì)算時(shí)間為1.60 s;按照粒子群算法規(guī)劃路徑最短距離為31 580.793 mm,計(jì)算機(jī)計(jì)算時(shí)間為3.21 s。
不規(guī)則邊界地塊撒肥機(jī)按照蟻群算法規(guī)劃路徑最短距離為17 560.660 2 mm,計(jì)算機(jī)計(jì)算時(shí)間為1.804 4 s;按照粒子群算法規(guī)劃路徑最短距離為35 580.393 5 mm,計(jì)算機(jī)計(jì)算時(shí)間為2.89 s。
對(duì)同一大小的規(guī)則和不規(guī)則地塊采用蟻群算法和粒子群算法進(jìn)行路徑規(guī)劃,發(fā)現(xiàn)蟻群算法在撒肥路徑的規(guī)劃過(guò)程中路徑比粒子群算法短,計(jì)算時(shí)間少,因此撒肥機(jī)能耗也少,蟻群算法要優(yōu)于粒子群算法。