APP下载

圈养湖羊的空间利用率问题研究

2024-08-21房丽

今日财富 2024年24期

根据2023年全国大学生数学建模D题,规模化的湖羊养殖场一般建有标准羊栏,每个标准羊栏允许存放的羊只数量由羊的性别、生长周期、大小决定。本文根据自然交配期、孕期、哺乳期、羔羊育肥期、母羊空怀休整期、公羊非交配期可以存放的羊栏类型和数量限制,设计动态规划算法,将公羊和母羊按比例分批次间隔交配,计算得出每天所有批次的湖羊使用的羊栏类型和数量,以最大化年化出栏羊只的数量。进一步考虑自然交配成功率、分娩羔羊的数量、死亡率、哺乳时间波动等不确定因素,利用蒙特卡洛方法模拟验证概率分布,调整原动态规划算法,给出期望损失最小的生产计划。

湖羊是国家级保护品种,湖羊养殖场一般会根据羊的大小、生长阶段以及性别来决定标准羊栏所能容纳的湖羊数量。在实际的圈养中,需要尽量减少空间闲置所引起的资源浪费,空间利用率也是影响湖羊养殖场经济效益的重要因素。

对于养殖场的管理者来说,需要通过制定合适的生产计划合理优化养殖场的空间利用率来达到获取最高效益的目的,而生产计划则是指规划什么时候种公羊和多少可接受配种的基础母羊来进行配种,通过控制母羊的繁育期从而确定对羊栏的需求量,要确保有足够的羊栏,同时尽量缩小羊栏的闲置。

一、问题1模型的建立与求解

(一)问题1模型的建立

已知自然交配期为20天,此时期每栏可以放1只公羊和最多14只母羊;孕期149天,每胎可产2只羔羊,此时期每栏最多可以放8只待产母羊;哺乳期40天,此时期每栏最多可以放6只母羊和它们的羔羊;羔羊的育肥期需要210天,此时期每栏最多可以放14只羔羊;母羊的空怀休整期需要20天,此时期每栏最多可以放14只母羊。

根据问题1,在算法中母羊的数量m从1叠加到1000,根据种公羊与基础母羊的比例配置不低于1:50,求出种公羊的数目g。根据种公羊和母羊的数量及羊栏放置的要求,在每一个周期中,将种公羊和基础母羊分批次间隔20天进行交配。因母羊每间隔229天可以进行一次交配,根据天数i的取值,判断出母羊、种公羊、羔羊处于自然交配期、孕期、哺乳期、育肥期、空怀休整期以及非交配期,并计算出对应时期所需的羊栏数量,求和得出每天所需的总的羊栏数Li,羊栏数的最大值Lmax,若Lmax不超过112,得出此时的种公羊和基础母羊的数量,从而算出年化出栏羊只数量的范围。根据计算出的年化出栏数量,判断年化出栏羊只数量不少于1500只时,需要多少标准羊栏,从而计算出现有标准羊栏数量的缺口。具体动态规划的算法思路如下:

步骤一:给定基础母羊的数量m,算出相应的种公羊数目和应分配的批次。将m从1叠加到1000,因种公羊与基础母羊的比例配置不低于1:50,取种公羊的数目g=。自然交配期每栏最多可放1只公羊和14只母羊,首先将1只公羊配够14只母羊,首先将1只公羊配够14只母羊进行分批,共分为p=批,还剩mp+1=m-14gp只母羊在第(p+1)批次,按照全部使用公羊的原则分组进行自然交配。

步骤二:判断母羊、种公羊、羔羊每天所处的时期,计算出每天所需总的羊栏数Li。以母羊的繁育周期Tjp=tj+ty+tb+tk=229天为一个基础周期,对天数i=1:365n(n为正整数),令a=,对于第1个批次,当i20+229a,说明该批次所有母羊都处在自然交配期,因此使用的羊栏数为母羊数除以14,即为。若20+229a<i169+229a,说明此时该批次所有母羊都处在孕期,因此使用的羊栏数为。若169+229a<i209+229a,说明此时该批次所有基础母羊和所生的羊羔处在哺乳期,因此使用的羊栏数为。若209+229×a<i209+229×a,说明此时该批次所有母羊处在空怀休整期,该批次所有羔羊都处在育肥期,因此使用的羊栏数为母羊和羔羊的总和,即为+。按照上述方法,依次进行到最后一个批次。最后计算公羊使用栏数,因为公羊在20(p+1)天后完成所有母羊的交配,并且在229天母羊经历完空怀休整期后,才能开始下一次交配,因此当20(p+1)+229a<i209+229a时,公羊处在非交配期,使用羊栏数为,在其他天数内,公羊处在和母羊的交配期,不用额外计算羊栏数。而从羔羊育肥期开始,每经过时间210天,羊羔就会出栏,因此羔羊育肥期羊栏数这时就会更新为0,综上,计算第i天所有批次使用的羊栏数和公羊使用的总的羊栏数,记为Li。

步骤三:求出Lmax=112个标准羊栏对应的种公羊和基础母羊数量。对天数i=1:365n,将第一天的羊栏数Lj赋为最大值Lmax,将后一天的使用的羊栏数与前一天的羊栏数做比较,将数值更大的赋值为Lmax,依次进行,直到Lmax=112,则满足条件,输出种公羊和基础母羊数量。

步骤四:依据上一步得出的母羊数量,构造函数x轴表示时间第1年到100年,y轴表示每年年化出栏羊只数量,从第12年起,图像趋于平缓,故选择12年作为计算年化出栏羊只数量的基数,输出年化出栏羊只数量的范围。

需要求出年化出栏羊只数目,可得计算公式为:

其中,Nc表示年化出栏羊只的数量,m表示在整个周期中母羊的总数量,n表示进行年化计算所取的年限。

(二)问题1模型的求解

根据动态规划算法思路编写MATLAB程序代码,计算得出最多使用112个羊栏条件下,种公羊和基础母羊的合理数量有3种类型,分别为公羊数8只和基础母羊数369只,公羊数8只和基础母羊数370只,公羊数8只和基础母羊数371只。

图1 年化出栏羊只数量变化图

图1中x轴表示时间第1年到100年,y轴表示每年年化出栏羊只数量,观察图像可知,从第12年起,图像逐渐趋于平稳,故选择12年作为计算年化出栏羊只数量的基数,因此得出:

当基础母羊为369只和种公羊数量8只时,年化出栏羊只数量为:

同理,当基础母羊为370只和种公羊数量8只时,计算得出Nc=1110,当基础母羊为371只和种公羊数量8只时,计算得出Nc=1113。

综上所述,最大使用标准羊栏数为112个时,种公羊和基础母羊的合理数量分别为8只和369只、8只和370只、8只和371只3种类型,年化出栏羊只数量的取值范围为[1107,1113]。

要满足养殖场每年出栏羊只数目大于等于1500只,不妨设总基础母羊数目为m,计算出基础母羊的数量:

计算得出m的取值范围为m500,因此取m的最小值m=500,通过动态规划算法1思路编写的MATLAB程序,计算出第419天占用的标准羊栏数目为L419=151,即为Lmax的取值,因此现有标准羊栏数量的缺口Lq取值为:

Lq=Lmax-112=151-112=39

二、问题2模型的建立与求解

(一)问题2模型的建立

问题2需要在112个标准羊栏的条件下,求出种公羊和基础母羊数量的合理取值,以最大化年化出栏羊只数量Nc,设决策变量为基础母羊的数量m,可得目标函数为:

对于天数i从1到365n取值,都有每天的基础母羊数量的取值均为m,得出第1个约束条件:

其中,mi为第i天的基础母羊总量,为第i天处于自然交配期的基础母羊数量,为第i天处于孕期的基础母羊数量,为第i天处于哺乳期的基础母羊数量,为第i天处于空怀修整期的基础母羊数量。

由于总标准羊栏数为112个,因此可以得出每天的羊栏使用数都不超过112个,得出第2个约束条件:

其中,为第i天正在非交配期的种公羊的数量,为第i天育肥期的羔羊的数量。

综上所述,得出本题数学优化模型如下:

(二)问题2模型的求解

根据问题1的算法,在使用112个标准羊栏的条件下,为最大化年化出栏羊只数量,给母羊数m赋值为371,得出公羊数g==8,年化计算周期为12年,计算得Nc的最大值为:

第1个周期的羔羊在第479天全部育肥期结束出栏,间隔229天后,第2个周期的羔羊在第937天全部育肥期结束后出栏,因此取天数i=1:937,通过算法,可计算出第1天到第937天种公羊和基础母羊的配种时间、羊栏的使用个数,具体生产计划见表1。

三、问题3模型的建立与求解

(一)问题3模型的建立

母羊自然交配的受孕率为85%,可使用蒙特卡洛算法进行大量模拟得出的成功受孕数量应向上取整,即S=,剩余的交配不成功的15%的母羊数量为m=,这个周期内都安置在空怀休整栏。以平均97%的羔羊存活率,平均产羔2.2只每胎作为估算值,计算出羔羊出生数量并向下取整。每个基础周期228天内将未受孕的基础母羊安置空怀休整期,在孕期147~150天之间波动,可将受孕母羊分为4份,前3份受孕母羊数量均为,第4份受孕母羊数量为S-3×,在孕期波动的情况下,以哺乳期40天为基准,可以通过分别延长哺乳期3天、2天、1天和0天,使得同一周期的母羊哺乳期的结束时间一致,以便于后续计算。以最短18天作为空怀休整期的时间,这样可以让母羊更早的进入下一个周期循环中。

在同一批次中,分娩日期相差不超过7天的哺乳期母羊及所产羔羊可以同栏,故可将上述哺乳期时间不一致的母羊及其所产羔羊安置在一块,因为孕期在147~150天之间波动,故最大时间差为3天;断奶日期相差不超过7天的育肥期羔羊可以同栏,故同样可将结束哺乳期的羔羊放在同一个羊栏中,其最大时间差也为3天;且断奶日期相差不超过7天的休整期母羊一样可以同栏,及可将结束哺乳期的母羊安置在同一个羊栏中,最大时间差同样为3天。

对问题1的算法进行改进,在算法中母羊的数量m从1叠加到1000,根据种公羊与基础母羊的比例配置不低于1:50,求出种公羊的数目g,根据种公羊和母羊的数量及羊栏放置的要求,在每一个周期中,将种公羊和基础母羊分批次间隔20天进行交配。因母羊每间隔228天可以进行一次交配,根据天数i的取值,判断出母羊、种公羊、羔羊处于自然交配期、孕期、哺乳期、育肥期、空怀休整期、非交配期,因为孕期存在波动,希望所有母羊同时进入空怀休整期,故通过延长哺乳期,因为延长了哺乳期所以羔羊育肥期会相应的缩短,并计算出每天所需的羊栏数量Li,Li与112进行比较,从而得出每天损失量。

(二)问题3模型的求解

根据问题3的算法思路,在使用112个标准羊栏的条件下,得出母羊数m,从而得出母羊数m=400,g==8,第一个周期的羔羊在第480天全部育肥期结束出栏,因此取天数i=1:480,通过蒙特卡洛算法,在MATLAB中得到最多次数的成功受孕数s,如图2所示,s的值取360。

通过算法,可计算出第1天到第480天种公羊和基础母羊的配种时间、羊栏的使用个数,具体生产计划见表2。

其次再计算出每天产生的损失栏数,然后统计相同的损失量的天数,得出的天数再进行年化,求出相同的损失量的和,乘以在总天数的占比可得期望损失。可得:

其中,v表示根据损失量的天数所划分的结果数,Rv表示第v种结果发生的概率,Xv表示第v种结果的损失。

在MATLAB中实现可得图3:

根据图3可知,当基本母羊数为423时,最小羊栏年化损失量为4160。

本文设计的动态规划算法统筹分析了自然交配期、孕期、哺乳期、羔羊育肥期、母羊空怀休整期、公羊非交配期可以存放的羊栏的类型和数量限制。限制标准羊栏数的取值,可以得出每天具体的湖羊生产计划。限制年化出栏羊只数量的范围,可以得出需要使用的最大标准羊栏数量。因此该算法可以运用于解决规模化的养殖场中关于空间利用率分配和生产计划的难题,对于最大化空间利用率,减少成本以及提高生产量具有积极的作用。

(作者单位:阜阳职业技术学院)

作者简介:房丽,1993年出生,女,安徽省阜阳市人,汉族,阜阳职业技术学院助教,硕士。主要研究方向:应用数学。

基金项目:本论文为2023年度安徽省高校自然科学研究项目“机器学习算法在工业互联网入侵检测模型中的应用研究”研究成果,项目编号:2023AH052421。