根據(jù)2023年全國(guó)大學(xué)生數(shù)學(xué)建模D題,規(guī)?;暮蝠B(yǎng)殖場(chǎng)一般建有標(biāo)準(zhǔn)羊欄,每個(gè)標(biāo)準(zhǔn)羊欄允許存放的羊只數(shù)量由羊的性別、生長(zhǎng)周期、大小決定。本文根據(jù)自然交配期、孕期、哺乳期、羔羊育肥期、母羊空懷休整期、公羊非交配期可以存放的羊欄類型和數(shù)量限制,設(shè)計(jì)動(dòng)態(tài)規(guī)劃算法,將公羊和母羊按比例分批次間隔交配,計(jì)算得出每天所有批次的湖羊使用的羊欄類型和數(shù)量,以最大化年化出欄羊只的數(shù)量。進(jìn)一步考慮自然交配成功率、分娩羔羊的數(shù)量、死亡率、哺乳時(shí)間波動(dòng)等不確定因素,利用蒙特卡洛方法模擬驗(yàn)證概率分布,調(diào)整原動(dòng)態(tài)規(guī)劃算法,給出期望損失最小的生產(chǎn)計(jì)劃。
湖羊是國(guó)家級(jí)保護(hù)品種,湖羊養(yǎng)殖場(chǎng)一般會(huì)根據(jù)羊的大小、生長(zhǎng)階段以及性別來(lái)決定標(biāo)準(zhǔn)羊欄所能容納的湖羊數(shù)量。在實(shí)際的圈養(yǎng)中,需要盡量減少空間閑置所引起的資源浪費(fèi),空間利用率也是影響湖羊養(yǎng)殖場(chǎng)經(jīng)濟(jì)效益的重要因素。
對(duì)于養(yǎng)殖場(chǎng)的管理者來(lái)說(shuō),需要通過(guò)制定合適的生產(chǎn)計(jì)劃合理優(yōu)化養(yǎng)殖場(chǎng)的空間利用率來(lái)達(dá)到獲取最高效益的目的,而生產(chǎn)計(jì)劃則是指規(guī)劃什么時(shí)候種公羊和多少可接受配種的基礎(chǔ)母羊來(lái)進(jìn)行配種,通過(guò)控制母羊的繁育期從而確定對(duì)羊欄的需求量,要確保有足夠的羊欄,同時(shí)盡量縮小羊欄的閑置。
一、問(wèn)題1模型的建立與求解
(一)問(wèn)題1模型的建立
已知自然交配期為20天,此時(shí)期每欄可以放1只公羊和最多14只母羊;孕期149天,每胎可產(chǎn)2只羔羊,此時(shí)期每欄最多可以放8只待產(chǎn)母羊;哺乳期40天,此時(shí)期每欄最多可以放6只母羊和它們的羔羊;羔羊的育肥期需要210天,此時(shí)期每欄最多可以放14只羔羊;母羊的空懷休整期需要20天,此時(shí)期每欄最多可以放14只母羊。
根據(jù)問(wèn)題1,在算法中母羊的數(shù)量m從1疊加到1000,根據(jù)種公羊與基礎(chǔ)母羊的比例配置不低于1:50,求出種公羊的數(shù)目g。根據(jù)種公羊和母羊的數(shù)量及羊欄放置的要求,在每一個(gè)周期中,將種公羊和基礎(chǔ)母羊分批次間隔20天進(jìn)行交配。因母羊每間隔229天可以進(jìn)行一次交配,根據(jù)天數(shù)i的取值,判斷出母羊、種公羊、羔羊處于自然交配期、孕期、哺乳期、育肥期、空懷休整期以及非交配期,并計(jì)算出對(duì)應(yīng)時(shí)期所需的羊欄數(shù)量,求和得出每天所需的總的羊欄數(shù)Li,羊欄數(shù)的最大值Lmax,若Lmax不超過(guò)112,得出此時(shí)的種公羊和基礎(chǔ)母羊的數(shù)量,從而算出年化出欄羊只數(shù)量的范圍。根據(jù)計(jì)算出的年化出欄數(shù)量,判斷年化出欄羊只數(shù)量不少于1500只時(shí),需要多少標(biāo)準(zhǔn)羊欄,從而計(jì)算出現(xiàn)有標(biāo)準(zhǔn)羊欄數(shù)量的缺口。具體動(dòng)態(tài)規(guī)劃的算法思路如下:
步驟一:給定基礎(chǔ)母羊的數(shù)量m,算出相應(yīng)的種公羊數(shù)目和應(yīng)分配的批次。將m從1疊加到1000,因種公羊與基礎(chǔ)母羊的比例配置不低于1:50,取種公羊的數(shù)目g=。自然交配期每欄最多可放1只公羊和14只母羊,首先將1只公羊配夠14只母羊,首先將1只公羊配夠14只母羊進(jìn)行分批,共分為p=批,還剩mp+1=m-14gp只母羊在第(p+1)批次,按照全部使用公羊的原則分組進(jìn)行自然交配。
步驟二:判斷母羊、種公羊、羔羊每天所處的時(shí)期,計(jì)算出每天所需總的羊欄數(shù)Li。以母羊的繁育周期Tjp=tj+ty+tb+tk=229天為一個(gè)基礎(chǔ)周期,對(duì)天數(shù)i=1:365n(n為正整數(shù)),令a=,對(duì)于第1個(gè)批次,當(dāng)i20+229a,說(shuō)明該批次所有母羊都處在自然交配期,因此使用的羊欄數(shù)為母羊數(shù)除以14,即為。若20+229a<i169+229a,說(shuō)明此時(shí)該批次所有母羊都處在孕期,因此使用的羊欄數(shù)為。若169+229a<i209+229a,說(shuō)明此時(shí)該批次所有基礎(chǔ)母羊和所生的羊羔處在哺乳期,因此使用的羊欄數(shù)為。若209+229×a<i209+229×a,說(shuō)明此時(shí)該批次所有母羊處在空懷休整期,該批次所有羔羊都處在育肥期,因此使用的羊欄數(shù)為母羊和羔羊的總和,即為+。按照上述方法,依次進(jìn)行到最后一個(gè)批次。最后計(jì)算公羊使用欄數(shù),因?yàn)楣蛟?0(p+1)天后完成所有母羊的交配,并且在229天母羊經(jīng)歷完空懷休整期后,才能開(kāi)始下一次交配,因此當(dāng)20(p+1)+229a<i209+229a時(shí),公羊處在非交配期,使用羊欄數(shù)為,在其他天數(shù)內(nèi),公羊處在和母羊的交配期,不用額外計(jì)算羊欄數(shù)。而從羔羊育肥期開(kāi)始,每經(jīng)過(guò)時(shí)間210天,羊羔就會(huì)出欄,因此羔羊育肥期羊欄數(shù)這時(shí)就會(huì)更新為0,綜上,計(jì)算第i天所有批次使用的羊欄數(shù)和公羊使用的總的羊欄數(shù),記為L(zhǎng)i。
步驟三:求出Lmax=112個(gè)標(biāo)準(zhǔn)羊欄對(duì)應(yīng)的種公羊和基礎(chǔ)母羊數(shù)量。對(duì)天數(shù)i=1:365n,將第一天的羊欄數(shù)Lj賦為最大值Lmax,將后一天的使用的羊欄數(shù)與前一天的羊欄數(shù)做比較,將數(shù)值更大的賦值為L(zhǎng)max,依次進(jìn)行,直到Lmax=112,則滿足條件,輸出種公羊和基礎(chǔ)母羊數(shù)量。
步驟四:依據(jù)上一步得出的母羊數(shù)量,構(gòu)造函數(shù)x軸表示時(shí)間第1年到100年,y軸表示每年年化出欄羊只數(shù)量,從第12年起,圖像趨于平緩,故選擇12年作為計(jì)算年化出欄羊只數(shù)量的基數(shù),輸出年化出欄羊只數(shù)量的范圍。
需要求出年化出欄羊只數(shù)目,可得計(jì)算公式為:
其中,Nc表示年化出欄羊只的數(shù)量,m表示在整個(gè)周期中母羊的總數(shù)量,n表示進(jìn)行年化計(jì)算所取的年限。
(二)問(wèn)題1模型的求解
根據(jù)動(dòng)態(tài)規(guī)劃算法思路編寫(xiě)MATLAB程序代碼,計(jì)算得出最多使用112個(gè)羊欄條件下,種公羊和基礎(chǔ)母羊的合理數(shù)量有3種類型,分別為公羊數(shù)8只和基礎(chǔ)母羊數(shù)369只,公羊數(shù)8只和基礎(chǔ)母羊數(shù)370只,公羊數(shù)8只和基礎(chǔ)母羊數(shù)371只。
圖1 年化出欄羊只數(shù)量變化圖
圖1中x軸表示時(shí)間第1年到100年,y軸表示每年年化出欄羊只數(shù)量,觀察圖像可知,從第12年起,圖像逐漸趨于平穩(wěn),故選擇12年作為計(jì)算年化出欄羊只數(shù)量的基數(shù),因此得出:
當(dāng)基礎(chǔ)母羊?yàn)?69只和種公羊數(shù)量8只時(shí),年化出欄羊只數(shù)量為:
同理,當(dāng)基礎(chǔ)母羊?yàn)?70只和種公羊數(shù)量8只時(shí),計(jì)算得出Nc=1110,當(dāng)基礎(chǔ)母羊?yàn)?71只和種公羊數(shù)量8只時(shí),計(jì)算得出Nc=1113。
綜上所述,最大使用標(biāo)準(zhǔn)羊欄數(shù)為112個(gè)時(shí),種公羊和基礎(chǔ)母羊的合理數(shù)量分別為8只和369只、8只和370只、8只和371只3種類型,年化出欄羊只數(shù)量的取值范圍為[1107,1113]。
要滿足養(yǎng)殖場(chǎng)每年出欄羊只數(shù)目大于等于1500只,不妨設(shè)總基礎(chǔ)母羊數(shù)目為m,計(jì)算出基礎(chǔ)母羊的數(shù)量:
計(jì)算得出m的取值范圍為m500,因此取m的最小值m=500,通過(guò)動(dòng)態(tài)規(guī)劃算法1思路編寫(xiě)的MATLAB程序,計(jì)算出第419天占用的標(biāo)準(zhǔn)羊欄數(shù)目為L(zhǎng)419=151,即為L(zhǎng)max的取值,因此現(xiàn)有標(biāo)準(zhǔn)羊欄數(shù)量的缺口Lq取值為:
Lq=Lmax-112=151-112=39
二、問(wèn)題2模型的建立與求解
(一)問(wèn)題2模型的建立
問(wèn)題2需要在112個(gè)標(biāo)準(zhǔn)羊欄的條件下,求出種公羊和基礎(chǔ)母羊數(shù)量的合理取值,以最大化年化出欄羊只數(shù)量Nc,設(shè)決策變量為基礎(chǔ)母羊的數(shù)量m,可得目標(biāo)函數(shù)為:
對(duì)于天數(shù)i從1到365n取值,都有每天的基礎(chǔ)母羊數(shù)量的取值均為m,得出第1個(gè)約束條件:
其中,mi為第i天的基礎(chǔ)母羊總量,為第i天處于自然交配期的基礎(chǔ)母羊數(shù)量,為第i天處于孕期的基礎(chǔ)母羊數(shù)量,為第i天處于哺乳期的基礎(chǔ)母羊數(shù)量,為第i天處于空懷修整期的基礎(chǔ)母羊數(shù)量。
由于總標(biāo)準(zhǔn)羊欄數(shù)為112個(gè),因此可以得出每天的羊欄使用數(shù)都不超過(guò)112個(gè),得出第2個(gè)約束條件:
其中,為第i天正在非交配期的種公羊的數(shù)量,為第i天育肥期的羔羊的數(shù)量。
綜上所述,得出本題數(shù)學(xué)優(yōu)化模型如下:
(二)問(wèn)題2模型的求解
根據(jù)問(wèn)題1的算法,在使用112個(gè)標(biāo)準(zhǔn)羊欄的條件下,為最大化年化出欄羊只數(shù)量,給母羊數(shù)m賦值為371,得出公羊數(shù)g==8,年化計(jì)算周期為12年,計(jì)算得Nc的最大值為:
第1個(gè)周期的羔羊在第479天全部育肥期結(jié)束出欄,間隔229天后,第2個(gè)周期的羔羊在第937天全部育肥期結(jié)束后出欄,因此取天數(shù)i=1:937,通過(guò)算法,可計(jì)算出第1天到第937天種公羊和基礎(chǔ)母羊的配種時(shí)間、羊欄的使用個(gè)數(shù),具體生產(chǎn)計(jì)劃見(jiàn)表1。
三、問(wèn)題3模型的建立與求解
(一)問(wèn)題3模型的建立
母羊自然交配的受孕率為85%,可使用蒙特卡洛算法進(jìn)行大量模擬得出的成功受孕數(shù)量應(yīng)向上取整,即S=,剩余的交配不成功的15%的母羊數(shù)量為m=,這個(gè)周期內(nèi)都安置在空懷休整欄。以平均97%的羔羊存活率,平均產(chǎn)羔2.2只每胎作為估算值,計(jì)算出羔羊出生數(shù)量并向下取整。每個(gè)基礎(chǔ)周期228天內(nèi)將未受孕的基礎(chǔ)母羊安置空懷休整期,在孕期147~150天之間波動(dòng),可將受孕母羊分為4份,前3份受孕母羊數(shù)量均為,第4份受孕母羊數(shù)量為S-3×,在孕期波動(dòng)的情況下,以哺乳期40天為基準(zhǔn),可以通過(guò)分別延長(zhǎng)哺乳期3天、2天、1天和0天,使得同一周期的母羊哺乳期的結(jié)束時(shí)間一致,以便于后續(xù)計(jì)算。以最短18天作為空懷休整期的時(shí)間,這樣可以讓母羊更早的進(jìn)入下一個(gè)周期循環(huán)中。
在同一批次中,分娩日期相差不超過(guò)7天的哺乳期母羊及所產(chǎn)羔羊可以同欄,故可將上述哺乳期時(shí)間不一致的母羊及其所產(chǎn)羔羊安置在一塊,因?yàn)樵衅谠?47~150天之間波動(dòng),故最大時(shí)間差為3天;斷奶日期相差不超過(guò)7天的育肥期羔羊可以同欄,故同樣可將結(jié)束哺乳期的羔羊放在同一個(gè)羊欄中,其最大時(shí)間差也為3天;且斷奶日期相差不超過(guò)7天的休整期母羊一樣可以同欄,及可將結(jié)束哺乳期的母羊安置在同一個(gè)羊欄中,最大時(shí)間差同樣為3天。
對(duì)問(wèn)題1的算法進(jìn)行改進(jìn),在算法中母羊的數(shù)量m從1疊加到1000,根據(jù)種公羊與基礎(chǔ)母羊的比例配置不低于1:50,求出種公羊的數(shù)目g,根據(jù)種公羊和母羊的數(shù)量及羊欄放置的要求,在每一個(gè)周期中,將種公羊和基礎(chǔ)母羊分批次間隔20天進(jìn)行交配。因母羊每間隔228天可以進(jìn)行一次交配,根據(jù)天數(shù)i的取值,判斷出母羊、種公羊、羔羊處于自然交配期、孕期、哺乳期、育肥期、空懷休整期、非交配期,因?yàn)樵衅诖嬖诓▌?dòng),希望所有母羊同時(shí)進(jìn)入空懷休整期,故通過(guò)延長(zhǎng)哺乳期,因?yàn)檠娱L(zhǎng)了哺乳期所以羔羊育肥期會(huì)相應(yīng)的縮短,并計(jì)算出每天所需的羊欄數(shù)量Li,Li與112進(jìn)行比較,從而得出每天損失量。
(二)問(wèn)題3模型的求解
根據(jù)問(wèn)題3的算法思路,在使用112個(gè)標(biāo)準(zhǔn)羊欄的條件下,得出母羊數(shù)m,從而得出母羊數(shù)m=400,g==8,第一個(gè)周期的羔羊在第480天全部育肥期結(jié)束出欄,因此取天數(shù)i=1:480,通過(guò)蒙特卡洛算法,在MATLAB中得到最多次數(shù)的成功受孕數(shù)s,如圖2所示,s的值取360。
通過(guò)算法,可計(jì)算出第1天到第480天種公羊和基礎(chǔ)母羊的配種時(shí)間、羊欄的使用個(gè)數(shù),具體生產(chǎn)計(jì)劃見(jiàn)表2。
其次再計(jì)算出每天產(chǎn)生的損失欄數(shù),然后統(tǒng)計(jì)相同的損失量的天數(shù),得出的天數(shù)再進(jìn)行年化,求出相同的損失量的和,乘以在總天數(shù)的占比可得期望損失。可得:
其中,v表示根據(jù)損失量的天數(shù)所劃分的結(jié)果數(shù),Rv表示第v種結(jié)果發(fā)生的概率,Xv表示第v種結(jié)果的損失。
在MATLAB中實(shí)現(xiàn)可得圖3:
根據(jù)圖3可知,當(dāng)基本母羊數(shù)為423時(shí),最小羊欄年化損失量為4160。
本文設(shè)計(jì)的動(dòng)態(tài)規(guī)劃算法統(tǒng)籌分析了自然交配期、孕期、哺乳期、羔羊育肥期、母羊空懷休整期、公羊非交配期可以存放的羊欄的類型和數(shù)量限制。限制標(biāo)準(zhǔn)羊欄數(shù)的取值,可以得出每天具體的湖羊生產(chǎn)計(jì)劃。限制年化出欄羊只數(shù)量的范圍,可以得出需要使用的最大標(biāo)準(zhǔn)羊欄數(shù)量。因此該算法可以運(yùn)用于解決規(guī)?;酿B(yǎng)殖場(chǎng)中關(guān)于空間利用率分配和生產(chǎn)計(jì)劃的難題,對(duì)于最大化空間利用率,減少成本以及提高生產(chǎn)量具有積極的作用。
(作者單位:阜陽(yáng)職業(yè)技術(shù)學(xué)院)
作者簡(jiǎn)介:房麗,1993年出生,女,安徽省阜陽(yáng)市人,漢族,阜陽(yáng)職業(yè)技術(shù)學(xué)院助教,碩士。主要研究方向:應(yīng)用數(shù)學(xué)。
基金項(xiàng)目:本論文為2023年度安徽省高校自然科學(xué)研究項(xiàng)目“機(jī)器學(xué)習(xí)算法在工業(yè)互聯(lián)網(wǎng)入侵檢測(cè)模型中的應(yīng)用研究”研究成果,項(xiàng)目編號(hào):2023AH052421。