張大偉
(遼東學院信息工程學院,遼寧丹東 118000)
飼料是動物賴以生存的物質基礎,在畜牧養殖業中,飼料成本占總成本的70%左右,對養殖業的經濟效益起著決定性作用(田珂等,2014)。單一飼料所含的營養物質不全面,不能滿足動物營養和降低養殖成本的需要。充分考慮畜禽種類、日齡、體重、生理狀況、飼喂條件和飼喂方式等因素,目前的規模化養殖普遍采用配合飼料(沈秋采等,2017)。配合飼料集中了動物營養和飼料科學的研究成果,將多種飼料原料和添加劑預混料按一定的加工工藝配制而成,能夠保證有效成分的穩定一致,優點合理利用了各種飼料資源,營養全面、成本較低、質量標準化,具有防病保健功能(張穎,2018)。
飼料配方直接影響配合飼料成本。傳統手工計算法的優點是簡單易學、不需要特殊工具,但計算量較大,不能篩選出最優方案,不能滿足飼料配方營養性、安全性和經濟性的需要。線性規劃是運籌學領域應用最廣泛和最成熟的方法,也是目前廣泛應用的飼料配方優化技術。但當參與配方的原料種類和營養指標較多時,線性規劃方法計算非常復雜,沒有專業的數學知識很難掌握。本文利用計算機技術設計軟件,將飼料配方的目標定位在經濟效益、社會效益和生態效益的結合點上,充分發揮線性規劃和現代信息技術在飼料配方中的雙重優勢,提高養殖業的科學技術含量,為廣大養殖戶提供“信息化的飼料配方專家”,為提高養殖業的經濟效益服務。
飼料優化配方,就是要解決多種原料配比,滿足多個營養指標要求,同時滿足飼料成本最低的要求。通過線性規劃,將飼料配方中的有關因素和限制條件轉化為線性數學函數,求解一定約束條件下的最小值問題。線性規劃的數學模型由目標函數和約束條件兩部分構成。
設參與配方的原料為n種,用i ( i =1,2,…,m)表示其中的第i種原料;營養指標的需求為m個,用j ( j =1,2,…,n)表示其中的第j個營養指標。xj為決策變量,表示第j種原料在配方中的用量(通常用百分比);aij為技術系數,表示第j種原料的第i種營養指標含量;bi為約束值,表示配方應滿足的第i種營養指標的需求量約束;cj為成本系數,表示參與配方的第j種原料的單位價格;z為單位配合飼料的配方總成本(張元躍等,2017、2016;李云甫等,2012)。
目標函數是使飼料配方總成本最低:

約束條件由營養指標需求量約束、原料用量約束和總量約束構成。第i個營養指標應滿足的約束條件為,原料用量應滿足的約束條件為 x1,x2,… ,xn≥0,原料總量應滿足的約束條件為 x1+x2+… + xn=1。最終模型的約束條件為:

對于只有兩個變量簡單的線性規劃,可采用圖解法求解,建立坐標系,從滿足約束條件解的范圍中確定最優解。線性規劃優化飼料配方模型存在多個變量,不能使用圖解法,通常使用單純形法,求解過程分5步:第1步,加入松馳變量和人工變量,將問題轉化為標準形式。第2步,確定初始基可行解。第3步,最優性檢驗與解的判別,如果是最優解,計算結束;否則,轉入下一步。第4步,轉換到另一個目標函數值更優的基可行解。第5步,重復第3步和第4步,直到求出最優解為止(孟香惠等,2018;薛靜芳,2013)。具體求解流程如圖1所示。

圖1 單純形法求解流程

單純形法的迭代計算優點是計算就去簡單,容易掌握。但是,重復計算了很多與迭代過程無關的數字,增大了迭代中的累積誤差,基變量的個數越多,重復計算工作量就越大。在用計算機進行迭代運算過程中,增加了中間數據的存儲量,計算速度較慢。因此,本文采用改進單純形法,可以避免添加人工變量,提高計算精度,減少中間數據存儲量。計算流程如圖2所示。

圖2 改進單純形法求解流程
在圖2中,滿足“兩正一非負”條件是指“檢驗數為正值,并且所在列中含有數值為正的分量,正分量對應的右端項存在非負值”;滿足“兩負一非正”條件是指“右端項為負,并且所在行中含有數值為負的分量,負分量對應的檢驗數中存在非正值”;當迭代無法持續時進行過渡迭代是指“任取一個為負值的右端項所在行中的負分量為主元素進行換基迭代,使換入變量經迭代后的值為正”。
軟件設計遵循軟件工程的思想,采用面向對象的程序設計方法,相關數據存儲在Oracle數據庫中,開發工具使用Visual C#.NET,數據報表采用Crystal Reports。軟件基于三層結構體系,界面層使用Winform方式,負責與用戶交互并收集數據;業務邏輯層依據改進單純形法求解流程進行運算;數據訪問層使用Ado.NET技術與數據庫交互(彭莉,2015)。軟件主程序執行界面如圖3所示。

圖3 線性規劃優化飼料配方軟件主程序執行界面
對于圖3所示的主程序執行界面,提供“新建、打開、刪除和求解”等核心功能。其中,“新建”用于重新構建一種飼料配方,“打開”用于打開已存儲在數據庫中的飼料配方,“刪除”用于刪除已經存在的一個飼料配方,“求解”用于求解界面中數據的最優配方。進入界面后進行“參數輸入”,包括“原料種類數量、營養指標數量和目標函數(選取min或max)”,輸入完后點擊“確定”按鈕,軟件將自動按照所輸入參數對屏幕中的兩個表格進行初始化,然后用戶輸入“成本系數和約束條件”等數據,點擊“求解”按鈕后,進行最優配方計算,并輸出結果。