呂 陽, 高榮華, 賴成榮, 李奇峰, 耿愛蓮, 王海宏, 丁露雨
(1. 北京市農(nóng)林科學(xué)院信息技術(shù)研究中心,北京 100097; 2. 國(guó)家農(nóng)業(yè)信息化工程技術(shù)研究中心,北京 100097;3. 北京市農(nóng)林科學(xué)院畜牧獸醫(yī)研究所,北京 100097)
北京油雞(簡(jiǎn)稱油雞)是優(yōu)良的地方品種,在北京地區(qū)具有悠久的飼養(yǎng)歷史,具有外貌獨(dú)特、蛋質(zhì)優(yōu)良、肉味鮮美等特點(diǎn),養(yǎng)殖方面具有耐粗飼、抗病能力強(qiáng)、抗逆性強(qiáng)等優(yōu)點(diǎn)[1-2]。近年來油雞規(guī)模化養(yǎng)殖廣泛推廣,為提高油雞養(yǎng)殖的經(jīng)濟(jì)效益,提供充足的營(yíng)養(yǎng)供給必不可少。油雞需要的主要營(yíng)養(yǎng)素包括代謝能、粗蛋白質(zhì)、必需氨基酸、鈣和磷,營(yíng)養(yǎng)物質(zhì)缺乏會(huì)導(dǎo)致畜禽出現(xiàn)異食癖、代謝紊亂、生長(zhǎng)緩慢等問題[3]。營(yíng)養(yǎng)物質(zhì)的配比更加重要,不同氣候條件、養(yǎng)殖階段、養(yǎng)殖品種對(duì)飼料配比有更加細(xì)致的要求[4]。
現(xiàn)有的商業(yè)飼料配方軟件大多集成于電腦終端,無法解決軟件戶外便攜使用的問題,造成先進(jìn)的養(yǎng)殖技術(shù)難以融入基層養(yǎng)殖農(nóng)戶中,尤其是影響到中小養(yǎng)殖規(guī)模的農(nóng)戶。本文飼料配比尋優(yōu)問題是典型的線性規(guī)劃問題,目前求解線性規(guī)劃問題常用的方法是最優(yōu)化方法和遺傳算法[5]。修正的單純形算法是最優(yōu)化方法中計(jì)算速度較快的一種方法,該方法可有效解決線性規(guī)劃的求解問題[6]。遺傳算法是一種模擬生物進(jìn)化過程的求解方法,該方法可解決復(fù)雜的優(yōu)化問題,在人工智能、信號(hào)處理、規(guī)劃求解領(lǐng)域應(yīng)用廣泛[5]。本文對(duì)比兩種方法在油雞飼料配比尋優(yōu)系統(tǒng)中的表現(xiàn),選擇計(jì)算效果較優(yōu)的算法作為尋優(yōu)算法。
為了提高中小養(yǎng)殖戶飼養(yǎng)油雞的經(jīng)濟(jì)效益,保障油雞飼喂過程中合理高效的營(yíng)養(yǎng)配比,開發(fā)基于智能手機(jī)平臺(tái)的飼料配方系統(tǒng),運(yùn)用最優(yōu)化算法尋找油雞飼料配比的最優(yōu)值,使飼料營(yíng)養(yǎng)成分更符合新品種油雞的實(shí)際需要,提高生產(chǎn)性能,推動(dòng)整個(gè)油雞產(chǎn)業(yè)的健康可持續(xù)發(fā)展。
現(xiàn)有的油雞飼料配方系統(tǒng)功能單一,功能實(shí)現(xiàn)不夠細(xì)致,缺乏氣候條件、養(yǎng)殖階段、養(yǎng)殖品種等因素在飼料配比中的選擇,同時(shí)缺乏良好的系統(tǒng)界面和產(chǎn)品流程設(shè)計(jì),導(dǎo)致用戶體驗(yàn)感較差,無法廣泛應(yīng)用,且沒有形成一套功能完善、用戶體驗(yàn)較優(yōu)、輕量級(jí)的產(chǎn)品[7]。
現(xiàn)有商用飼料配方軟件大多以電腦終端的操作界面為主,且缺乏對(duì)油雞的養(yǎng)殖用途、地區(qū)、季節(jié)等條件的配置,無法適用靈活的實(shí)際養(yǎng)殖條件,對(duì)現(xiàn)有商業(yè)飼料配方軟件的不足之處進(jìn)行補(bǔ)充,能對(duì)不同階段、不同季節(jié)、不同地域需求進(jìn)行智能調(diào)整[8]。
系統(tǒng)對(duì)原料管理、營(yíng)養(yǎng)標(biāo)準(zhǔn)管理、配方管理等模塊設(shè)置了增刪改查功能,可依據(jù)實(shí)際使用環(huán)境靈活調(diào)整系統(tǒng)參數(shù),充分利用農(nóng)戶現(xiàn)有飼料資源,配合系統(tǒng)推薦的營(yíng)養(yǎng)指標(biāo),可實(shí)現(xiàn)靈活高效的飼料配方管理。
智能配方系統(tǒng)配合服務(wù)器部署的優(yōu)化算法,實(shí)現(xiàn)不同需求的飼料配比優(yōu)化,降低油雞飼養(yǎng)的技術(shù)門檻,靈活的飼料選擇方式和搭配比例計(jì)算,使養(yǎng)殖戶可以結(jié)合自身養(yǎng)殖條件,靈活調(diào)整飼料搭配方式,進(jìn)一步降低養(yǎng)殖成本,提高生產(chǎn)效率,推動(dòng)整個(gè)油雞產(chǎn)業(yè)的健康可持續(xù)發(fā)展。
油雞飼料智能配方系統(tǒng)主要包括3 部分,分別是基于Android 的操作系統(tǒng)、基于Mysql 的數(shù)據(jù)庫、基于python 語言的尋優(yōu)模型。
油雞飼料智能配方系統(tǒng)存儲(chǔ)飼養(yǎng)所需的原料品種和對(duì)應(yīng)的營(yíng)養(yǎng)物質(zhì)含量,可實(shí)現(xiàn)養(yǎng)殖品種、生長(zhǎng)階段、營(yíng)養(yǎng)標(biāo)準(zhǔn)、季節(jié)氣候、地域及養(yǎng)殖方式的選擇,并根據(jù)選擇結(jié)果計(jì)算出最優(yōu)的飼料配比,既能滿足油雞在該階段所需的營(yíng)養(yǎng)需求,又能降低飼料的成本[9]。油雞飼料智能配方系統(tǒng)的架構(gòu)如圖1 所示。
圖1 油雞飼料智能配方系統(tǒng)架構(gòu)Fig. 1 Architecture diagram of intelligent formula system for oil chicken feed
油雞飼料智能配方系統(tǒng)擁有原料管理、營(yíng)養(yǎng)標(biāo)準(zhǔn)管理、歷史飼料配方管理功能,同時(shí)可實(shí)現(xiàn)基于最優(yōu)化算法的配方比例尋優(yōu)功能。油雞飼料智能配方系統(tǒng)功能框架如圖2 所示。
圖2 油雞飼料智能配方系統(tǒng)功能框架Fig. 2 Functional framework of chicken feed intelligent formula system
1.2.1 原料管理
原料管理可實(shí)現(xiàn)已有飼料中營(yíng)養(yǎng)素占比的查看和編輯,其界面如圖3 所示。查看功能可顯示飼料名稱、飼料號(hào)、代謝能、粗蛋白質(zhì)、必需氨基酸、鈣和磷的具體參數(shù);編輯功能可結(jié)合飼料產(chǎn)地和品質(zhì)的不同,對(duì)飼料中營(yíng)養(yǎng)素占比進(jìn)行修改,也可以增加新飼料。
圖3 原料管理界面Fig. 3 Raw material management interface
1.2.2 營(yíng)養(yǎng)標(biāo)準(zhǔn)管理
營(yíng)養(yǎng)標(biāo)準(zhǔn)管理可實(shí)現(xiàn)營(yíng)養(yǎng)標(biāo)準(zhǔn)的選擇和編輯,其界面如圖4 所示。查看模塊可顯示預(yù)設(shè)的推薦標(biāo)準(zhǔn)和自定義標(biāo)準(zhǔn),便于后期借鑒和使用,查看模塊同時(shí)還具備模糊搜索功能,便于快速找到所需的營(yíng)養(yǎng)標(biāo)準(zhǔn);編輯功能可依據(jù)最新研究成果修改和新建營(yíng)養(yǎng)標(biāo)準(zhǔn),靈活調(diào)整飼喂中營(yíng)養(yǎng)素配比。圖4a 展示了自定義的兩種“1w~6w 種用油雞飼料糧主要營(yíng)養(yǎng)推薦量”,其中“w”表示“周”;圖4b 展示了營(yíng)養(yǎng)標(biāo)準(zhǔn)詳細(xì)的自定義界面,界面中提供了養(yǎng)殖對(duì)象、生長(zhǎng)階段、營(yíng)養(yǎng)標(biāo)準(zhǔn)等可編輯內(nèi)容;如圖4c 所示自定義完成后營(yíng)養(yǎng)標(biāo)準(zhǔn)信息將匯總顯現(xiàn),并添加到“我的營(yíng)養(yǎng)標(biāo)準(zhǔn)”中。
圖4 營(yíng)養(yǎng)標(biāo)準(zhǔn)管理界面Fig. 4 Nutrition standard management interface
1.2.3 歷史飼料配方管理
歷史飼料配方管理界面可顯示用戶歷史生成的配方記錄,也可對(duì)歷史配方搜索查找,對(duì)于搜索到的歷史配方可查看詳細(xì)信息,其界面如圖5 所示。
圖5 歷史飼料配方管理界面Fig. 5 Historical feed formula management interface
1.2.4 飼料配方比例尋優(yōu)
基于最優(yōu)化算法的配方比例尋優(yōu)功能可根據(jù)飼料營(yíng)養(yǎng)成分、價(jià)格、限制用量和營(yíng)養(yǎng)推薦標(biāo)準(zhǔn)求解飼料配比最優(yōu)值。配方結(jié)果界面展示原料價(jià)格和品種,同時(shí)顯示最終配比完成飼料的營(yíng)養(yǎng)成分。
油雞飼料配比尋優(yōu)問題需要一些已知條件,包括各種飼料營(yíng)養(yǎng)成分、價(jià)格、限制用量和油雞營(yíng)養(yǎng)推薦表。該問題的目標(biāo)是滿足油雞營(yíng)養(yǎng)需求的前提下,控制飼料成本最小,同時(shí)可以根據(jù)用戶自定義的飼料配方尋找最優(yōu)的配方比例。
考慮普通全價(jià)飼料和預(yù)混合飼料,并提供飼料名稱、飼料號(hào)、各營(yíng)養(yǎng)物質(zhì)含量和單位質(zhì)量?jī)r(jià)格。飼料的營(yíng)養(yǎng)物質(zhì)包括代謝能、粗蛋白質(zhì)、賴氨酸、鈣和磷的含量,以及蛋氨酸與胱氨酸含量的總和,如表1 所示。
表1 飼料營(yíng)養(yǎng)成分占比Tab. 1 Proportion of feed nutrients
油雞養(yǎng)殖營(yíng)養(yǎng)推薦表給出不同養(yǎng)殖階段所需的營(yíng)養(yǎng)素推薦量,并按照養(yǎng)殖用途將營(yíng)養(yǎng)素推薦量劃分種用、肉用、蛋用推薦量,滿足不同養(yǎng)殖類型的需求,如表2所示。
表2 油雞養(yǎng)殖營(yíng)養(yǎng)推薦Tab. 2 Recommended nutrition for oil chicken breeding
預(yù)混合飼料是配合飼料發(fā)揮作用的核心,因其含有的眾多生長(zhǎng)所需的微量元素,配合飼料飼喂具有較好的效果。根據(jù)油雞的飼養(yǎng)用途和預(yù)混合飼料選用的不同,提供了對(duì)應(yīng)的普通飼料和預(yù)混飼料限制用量標(biāo)準(zhǔn),限制不同情況普通全價(jià)飼料和預(yù)混飼料的使用比例。
經(jīng)過對(duì)油雞飼料配方尋優(yōu)問題的具體分析,可以確定該問題是線性規(guī)劃問題,該問題中飼料成本是最終的目標(biāo)函數(shù),營(yíng)養(yǎng)標(biāo)準(zhǔn)和限制用量是問題的約束條件,求解后最終輸出每種原料的用量。
給出線性規(guī)劃問題決策變量、目標(biāo)函數(shù)、約束條件,如式(1)所示。
使用遺傳算法和修正單純形法求解上述目標(biāo)函數(shù),比較兩種算法求解效果,選擇效果較好的一種算法作為本系統(tǒng)的尋優(yōu)算法。
遺傳算法(genetic algorithm,GA)模擬生物進(jìn)化方式求解目標(biāo)問題[10]。GA 首先隨機(jī)生成一個(gè)種群,通過優(yōu)勝劣汰的方式選擇出質(zhì)量較高的個(gè)體,再通過交叉變異等繁衍方式生成新個(gè)體,新個(gè)體組成新的種群,循環(huán)上述過程直到當(dāng)前種群找到滿意的個(gè)體或達(dá)到迭代次數(shù)時(shí)停止[11]。
遺傳算法在使用前需要確定問題求解的一種編碼,本文使用二進(jìn)制對(duì)數(shù)據(jù)編碼,并在定義域內(nèi)隨機(jī)生成t個(gè)可行解,也就是生成的第1 代染色體,t表示染色體的數(shù)量。GA 使用適用函數(shù)衡量個(gè)體的適應(yīng)性,本文使用線性規(guī)劃問題的目標(biāo)函數(shù)作為適應(yīng)函數(shù)。
GA 算法的輸入、輸出和流程如下。
(4)在z條染色體中,以概率pc執(zhí)行交叉操作,生成t-z條染色體,再對(duì)其執(zhí)行變異操作。變異后的t-z條染色體連同剩余的z條染色體組成新的染色體群體。
(5)返回步驟1,判斷群體是否滿足終止條件,如滿足進(jìn)入步驟6,否則繼續(xù)執(zhí)行步驟1。
(6)終止計(jì)算,輸出最優(yōu)的結(jié)果。
修正單純形法是求解線性規(guī)劃問題的一種常用方法[12]。修正單純形法是一種使用方便、行之有效、應(yīng)用廣泛的重要算法[13-13]。
按最小比值確定主行,令
循環(huán)上述算法求解步驟,直到滿足zk-ck≤0 ,則停止計(jì)算,現(xiàn)行基本可行解就是問題的最優(yōu)解。
油雞飼料智能配方系統(tǒng)采用的編程語言是JAVA,利用BS 架構(gòu)進(jìn)行平臺(tái)搭建,對(duì)數(shù)據(jù)進(jìn)行離線式存儲(chǔ),使用Spring Boot 2.3 作為核心框架進(jìn)行開發(fā),Windows服務(wù)器環(huán)境為Tomcat 7。
配比尋優(yōu)算法使用Python 語言編寫,運(yùn)用numpy、scikit-opt、scipy 庫編寫算法部分,使用flask 框架將算法部署到服務(wù)器,數(shù)據(jù)采用json 形式傳輸。
為了保證尋優(yōu)結(jié)果的準(zhǔn)確性和高效性,分別對(duì)遺傳算法和修正單純形法進(jìn)行試驗(yàn)測(cè)試。試驗(yàn)提供營(yíng)養(yǎng)標(biāo)準(zhǔn)、飼料品種、飼料營(yíng)養(yǎng)含量、限制用量,并以玉米、小麥麩、大豆粕、豆油和石粉作為配比原料,求解每種飼料的配比結(jié)果,對(duì)比30 次尋優(yōu)結(jié)果,對(duì)遺傳算法和修正單純形法予以評(píng)價(jià)。飼料中除普通飼料外,還應(yīng)具備預(yù)混料,預(yù)混料補(bǔ)充了普通飼料缺乏的微量元素和維生素。飼料配比尋優(yōu)界面如圖6 所示,油雞飼料智能配方系統(tǒng)測(cè)試示例如表3 所示,預(yù)混料的配料和營(yíng)養(yǎng)成分是飼料公司機(jī)密內(nèi)容,考慮到知識(shí)產(chǎn)權(quán)問題,沒有將預(yù)混料添加到示例中,在實(shí)際應(yīng)用中將預(yù)混料參數(shù)添加到數(shù)據(jù)庫后即可參與飼料配比尋優(yōu)的計(jì)算。
表3 油雞飼料智能配方系統(tǒng)測(cè)試示例Tab. 3 Test example of intelligent formula system for oil chicken feed
圖6 配方比例尋優(yōu)界面Fig. 6 Formula proportion optimization interface
修正單純形法和遺傳算法在求解油雞飼料配比尋優(yōu)時(shí),各個(gè)方面的表現(xiàn)存在差異,測(cè)試結(jié)果如表4 所示。修正單純形法結(jié)果準(zhǔn)確率達(dá)到100%,單次平均尋優(yōu)所需運(yùn)算時(shí)間為0.031 0 s;測(cè)試遺傳算法時(shí),考慮到油雞飼料智能配方系統(tǒng)將應(yīng)用于實(shí)時(shí)計(jì)算尋優(yōu)的場(chǎng)景中,將繁衍次數(shù)設(shè)置為2 000 次,此時(shí)算法的單次平均尋優(yōu)用時(shí)3.020 0 s,導(dǎo)致遺傳算法應(yīng)用效果較差[13]。
表4 修正單純形法和遺傳算法測(cè)試結(jié)果Tab. 4 Test results of modified simplex method and genetic algorithm
從試驗(yàn)結(jié)果來看,修正單純形法相較于遺傳算法具有準(zhǔn)確率高和求解速度快的優(yōu)點(diǎn),油雞飼料智能配方系統(tǒng)中選用修正單純形法作為尋優(yōu)算法。
基于最優(yōu)化算法配比尋優(yōu)的油雞飼料智能配方系統(tǒng)以手機(jī)為載體,設(shè)計(jì)并實(shí)現(xiàn)了原料管理、營(yíng)養(yǎng)標(biāo)準(zhǔn)管理、歷史飼料配方管理功能。借助使用廣泛的智能手機(jī)為更多中小養(yǎng)殖戶和技術(shù)人員提供智能化配方服務(wù),使飼料配比更符合中小養(yǎng)殖戶的實(shí)際需求,提高生產(chǎn)能力。本系統(tǒng)解決了現(xiàn)有商業(yè)飼料配方系統(tǒng)操作復(fù)雜,使用便捷性較差的問題,同時(shí)增加飼料配比過程中養(yǎng)殖用途、地區(qū)、季節(jié)等條件配置,更符合新品種油雞養(yǎng)殖的實(shí)際需要,大大提高了產(chǎn)能和肉蛋品質(zhì),可充分發(fā)揮油雞的經(jīng)濟(jì)價(jià)值,推動(dòng)整個(gè)油雞產(chǎn)業(yè)的健康可持續(xù)發(fā)展,具有廣闊的市場(chǎng)發(fā)展前景。
油雞飼料智能配方系統(tǒng)未來可增加多種微量元素和維生素的計(jì)算,合理規(guī)劃微量元素和維生素的使用劑量,進(jìn)一步完善油雞養(yǎng)殖過程中的營(yíng)養(yǎng)配比。