一种猪只饲料自动分摊方法的研究

2022-03-15 07:22王文宇吕成军
养殖与饲料 2022年3期
关键词:猪只分摊天数

童 锐 王文宇 仇 燕 吕成军 黄 旭

1.安徽工业大学信息技术研究院,安徽马鞍山243002;2.安徽工业大学计算机科学与技术学院,安徽马鞍山243032;3.天邦食品股份有限公司,南京200233;4.武汉中畜智联科技有限公司,武汉430113

近年来,随着我国生猪养殖规模的不断扩大,合理地分摊饲料到一个养殖场的各个猪群上,在财务上,对精确化分摊饲料成本具有重要的意义,同时在实际生产环境中,对合理地分配定量的饲料到各个群体上,也具有显著的作用,目前我国大型生猪养殖企业基本都拥有了信息化和智能化系统[1]。在财务上,饲料是养殖成本中最大的一块,饲料自动分摊方法将成本分摊到各个猪群上,辅助了财务核算各个猪群的成本。在传统的养殖生产系统中,生产人员也可以手动地分配饲料到各个猪群上,具体分配多少量到哪个猪群上,生产人员完全是根据自己的养殖经验,导致所分配到各个猪群上的饲料量和饲料种类有较大差异,数据无参考价值,另一方面,生产人员是逐个猪群手动地分配,随着养殖规模的不断扩大,一个场的猪群量越来越多,会导致手动逐个录入的繁琐性增加。与传统的养殖生产系统相比,将饲料自动分摊方法引入到生产系统的生产发料录入模块中,能大幅度地提高在生产环境中,分摊饲料的合理性与科学性,实现通过自动化算法将饲料分摊到各猪群[2-3],避免生产人员粗略地估计各个猪群的采食量[4-8],能够更加便捷、准确、高效地去分摊饲料,辅助生产人员的实际生产。

饲料自动分摊方法的意义主要体现为以下几点:

1)提高饲料分摊的科学性与合理性。采用饲料自动分摊方法去分摊饲料,与传统的单纯地依赖生产人员主观判断对猪的投食量的方式不一样。猪只在生长过程中,对营养的需求以及进食量,与猪当时的生产状态以及饲料的品种有着直接的关系。该方法根据猪的不同生长阶段,为其提供适宜的饲料品种,保证了猪的进食量,提高了饲料投放的科学性与合理性。

2)方便财务分摊成本。该方法会将饲料的分摊数据与财务对接,便于财务人员将饲料的成本详细地核算到每个猪群上,实现了生产系统与财务系统的实时对接,完成业财一体化,提升了账务信息准确率,降低了财务风险。

3)节约成本,提高生产效率,提升产值。饲料的投放标准是根据生产人员的生产经验制定的,规定了猪只在不同的生产阶段,所耗用饲料的类型重量。这套标准在后期可以根据实际生产情况和效果进行调整。该方法能帮助生产人员合理地利用饲料,提高饲料转化率,发挥饲料效益,降低生产成本,提高猪只的产出。

1 饲料自动分摊方法的数据采集

在饲料自动分摊方法的设计与实现的过程中,需要获取该场的猪只信息和规定的饲料标准规则,需要对养殖生产系统的批次信息、母猪档案信息、落地仔猪信息、猪只饲料标准规则进行数据采集。

1.1 批次猪信息的数据采集

对于育成猪阶段的养殖,一般都是分批次进行管理,即相同生产状态的猪只放入同一批次进行统一管理。在对猪只投入饲料的时候,是以批次为单元的,即同一批次投入一定量的饲料。猪只批次的新增按钮是在系统批次管理的批次猪信息页面上,批次是在养殖场的基础上建立的,如果没有选定特定的养殖场就建批,系统会给出相应的提示。批次的编号默认为养殖场名称加上当前日期(8 位),创建日期默认为当前日期,需要输入批次的品种、生产线、栋舍等信息,由于哺乳仔猪批次需要与对应的落地仔猪批次相关联,所以创建哺乳仔猪批次的功能是在系统落地仔猪批次管理界面上,当在此页面创建生产状态是哺乳仔猪批次的时候,生产系统会提示哺乳仔猪批次请到落地仔猪批次管理界面新建。饲料自动分摊方法中批次所分摊到的饲料量与此批次的数目相关,所创建批次的数目默认为0,之后对批次的分娩转入、采购转入、转舍转入、调拨转入、盘盈转入、死亡转出、自宰转出、销售转出、转舍转出、入场转出、调拨转出、盘亏转出等操作都会影响批次的数目。

1.2 落地仔猪信息的数据采集

每个场可以根据管理需要自己建批,建批时设定时间间隔,默认7 d,从周日自动建落地仔猪批次,该落地仔猪批次期间可能配种母猪数N,1 头母猪1 次分娩按M 头计算,则N×M 作为该落地仔猪批次的默认计划落地仔猪数。同时在场的所有落地仔猪批次有多个,但是每天只有1 个批次是活跃批次,当天的所有配种猪计入活动批次里。配种如果发现没有当前时间的活跃批次,提示创建落地仔猪批次。当落地仔猪批次对应的妊娠种猪第一头分娩时,系统自动查找对应的落地批次,并使用同样的落地仔猪批次号的哺乳仔猪批次,如果发现没有当前对应的哺乳仔猪批次,则系统自动建哺乳仔猪批次。落地仔猪的新增按钮是在系统生产管理的落地仔猪管理页面上,落地仔猪批次的编号默认为养殖场名称加上当前日期(8 位),需要输入落地仔猪批次的批次类型(妊娠批、空怀批)、生产线、栋舍等信息。

1.3 妊娠母猪信息的数据采集

妊娠母猪是指从配种受胎到分娩这一阶段的母猪,妊娠母猪的录入即为对母猪进行配种录入操作,是在养殖生产系统里配种管理页面的批量录入模块中进行的,用户需要输入猪只耳号、位置、配种公猪等信息。因为在落地仔猪批次中,母猪类型不是自有的妊娠批是不允许录入配种的,所以当保存配种管理数据的时候,后台会检索该场是否存在母猪类型是自有,批次状态是正常,并且配种日期落在开始日期和结束日期之间的妊娠批。当检索到数据的时候,会取出对应的落地仔猪批次ID,当无对应的落地仔猪批次的时候,系统会提示落地仔猪批次为空或者关闭,请重新录入数据。保存数据成功后,在母猪档案中,该母猪的状态日期会更新成配种日期,生产状态会更新成已配种,对应的落地仔猪ID 也会更新到该母猪的信息中。

1.4 哺乳母猪信息的数据采集

哺乳母猪一般指怀孕母猪分娩后,并处于哺乳期的母猪。哺乳母猪的录入即为对母猪进行分娩录入操作,是在养殖生产系统里分娩管理页面的批量录入模块中进行的,用户需要输入猪只耳号、猪只位置、分娩日期等信息。保存数据成功后,在母猪档案中,该母猪的状态日期会更新成分娩日期,生产状态会更新成哺乳母猪。

1.5 猪只饲喂标准信息的数据采集

批次猪在不同日龄所耗的饲料量和种类是有差异的,如图1 为猪只生长期实际采食量图,从图中可以看出当日龄在[0,20]区间内,由于此时的批次猪的生产状态是哺乳仔猪,在实际生产环境中,哺乳仔猪是消耗母乳的,不耗用饲料,所以此区间内无数据。当日龄在[21,175]区间内,随着日龄的增长,批次猪的采食量呈逐渐增长趋势,并且饲料的种类也在不断地变化。当日龄在[176,320]区间内,批次猪所耗的饲料种类是969 料号,猪只成长到稳定状态,每天的耗用饲料量也趋于稳定,采食量在3 kg上下波动。由于在实际的生产环境中,将饲料量和种类具体到每一天,会导致饲料分配的繁琐性增加,所以我们将饲料分摊模型化,即在一段区间内取其平均值,如在[29,35]区间内,批次的采食量分别是0.32、0.33、0.34、0.35、0.36、0.37、0.38,我们将这组数据取其平均值0.35,即日龄在[29,35]区间内,批次的采食量为0.35。

图1 .猪只生长期实际采食量

系统会根据猪只生长期和生产期模型中的数据,在后台单独设立一张表,该表称之为猪只饲喂标准信息表,如表1 所示。其中最小天数/日龄和最大天数/日龄字段组合在一起,其实质是一个日期区间,当最小天数/日龄的值是-1 时,表示负无穷大,当最大天数/日龄的值是-1 时,表示正无穷大。猪类型字段用于存储猪类型,种类有批次猪、妊娠母猪、哺乳母猪、空怀母猪等,该表是根据生产人员的养殖经验制定的一套标准的饲料分摊规则,可以维护不同类型猪只,在各生命周期阶段所耗的饲料类型和重量,这张表的数据后期可以根据生产人员提供的数据进行修改调节。

表1 猪只饲喂标准信息

2 饲料自动分摊方法的设计

该饲料自动分摊方法的流程图如图2 所示,此方法是以养殖场中的所有猪群为分摊对象,因此我们需要知道养殖场的ID,其中方法的入参还包括物料编码、物料数量、采食天数。读取制定的饲料标准信息,并以猪类型将其分为批次猪、哺乳母猪、妊娠母猪、空怀母猪4 组饲料标准信息,然后我们读取该场的批次信息、空怀母猪信息、妊娠母猪信息、哺乳母猪信息、落地仔猪的批次信息,由于哺乳仔猪是不需要分摊饲料的,所以其中的批次信息是不包括状态为哺乳仔猪批次的。

图2 饲料自动分摊方法流程

饲料自动分摊方法/*Distribute feed to each batch*/1 Read the relevant information of FeedingStandard、BatchInfo、BreedingPigletBatch、SowInfo from the database 2 Split FeedingStandard into different datarow arrays according to pig type 3 If pig type is batch pig 4 Do:take the BatchInfoTable /*循环批次信息表*/5 Do:take the MaterialShareByBatchRows /*循环批次猪饲喂标准数组*/ / *取重叠区域的天数*/6 If(FeedingStandardMinDate>BatchAgeMinDate)7 Mindate = BatchAgeMinDate 8 Else 9 Mindate =FeedingStandardMinDate 10 If(FeedingStandardMaxDate>BatchAgeMaxDate)11 Maxdate = BatchAgeMaxDate 12 Else 13 Maxdate =FeedingStandardMaxDate 14 date =Maxdate-Mindate 15 BatchNum *date *FeedingStandard is called batchfood /*算出各个批次采食量*/16 BatchDictionary is add <batchid ,batchfood >17 while MaterialShareByBatchRow is all traversed.18 while BatchInfoTable is all traversed.19 Else if pig type is Lactating sows or Pregnant sows 20 Do:take the LactatingSowsTable or PregnantSowsTable/*循环哺乳、妊娠母猪信息*/21 If this batch number exists in the BreedingPigletBatch //判断落地仔猪中是否有此批次号22 Do:take the LactatingSowsMaterialShare or PregnantSowsMaterialShare/*循环哺乳、妊娠母猪饲喂标准*// *取重叠区域的天数*/23 If(FeedingStandardMinDate>StateMinDate)24 Mindate = StateMinDate 25 Else 26 Mindate =FeedingStandardMinDate 27 If(FeedingStandardMaxDate>BatchAgeMaxDate)28 Maxdate = BatchAgeMaxDate 29 Else 30 Maxdate =FeedingStandardMaxDate 31 date =Maxdate-Mindate 32 date *FeedingStandard is called batchfood /*算出各个批次采食量*/33 LactatingDictionary or PregnantDictionary is add <batchid ,batchfood >34 while LactatingSowsMaterialShare or PregnantSowsMaterialShare is all traversed.35 Else goto 20 36 while LactatingSowsTable or PregnantSowsTable is all traversed.37 Else 38 Do:take the OpenSowsTable /*循环空怀母猪信息*/39 Do:take the OpenSowsMaterialShare /*循环妊娠母猪饲喂标准*// *取重叠区域的天数*/40 If(FeedingStandardMinDate>StateMinDate)41 Mindate = StateMinDate 42 Else 43 Mindate =FeedingStandardMinDate 44 If(FeedingStandardMaxDate>BatchAgeMaxDate)45 Maxdate = BatchAgeMaxDate 46 Else 47 Maxdate =FeedingStandardMaxDate 48 date =Maxdate-Mindate

?

该方法再根据上述取出来的数据信息,分4 个模块统计饲料的分摊量,分别是:批次猪模块、哺乳母猪模块、妊娠母猪模块、空怀母猪模块。4 个模块分别得到该场批次猪、哺乳母猪、妊娠母猪、空怀母猪的采食量,此方法再将4 个模块的采食量加和,根据每个批次所耗的量占所有批次所耗的总量的百分比和入参物料数量,算出每个批次实际的分摊饲料量,每个批次计算时去尾保留2 位小数,最后一个批次处理最后的尾差,最后将批次ID 和其所对应的分摊饲料量封装成Jsondate 数组,并返回给前台页面。具体方法如下所示:

1)批次猪模块。批次猪在不同日龄区间内,每天所耗的饲料量是不同的。方法在批次猪模块里面循环取到的批次猪信息,用当前时间减去批次猪信息的出生日期,即为批次猪的日龄区间的左闭区间值,用当前时间减去批次猪信息的出生日期再加上采食天数,即为批次猪的日龄区间的右闭区间值。再在批次猪信息中,循环批次猪饲料标准信息,批次猪饲料标准信息的最小日龄和最大日龄,即为批次猪饲料标准信息日龄的左右闭区间值。取出2 个区间的左闭区间的最大值,标记为minday,取出2个区间的右闭区间的最小值,标记为maxday,其中如果是-1 和任何一个数比较,都取非-1 的数。如果minday 大于maxday,则跳出这条批次猪饲料标准信息,否则用maxday 减去minday,即为2 个区间的重叠区域天数,该批次在这条批次猪饲料标准信息下的实际采食天数即为重叠区域天数,从而算出该批次在这条批次猪饲料标准信息下的采食量为批次数量×每天采食量×实际采食天数,当循环完批次猪饲料标准信息时,即算出该批次的采食量和,循环完批次猪信息,即算出该场的所有批次的采食量,将结果封装一个字典,称之为批次猪字典,批次猪的key 是批次猪的批次ID,value 是这条批次所对应的采食量。

2)哺乳母猪模块。哺乳母猪在不同哺乳天数区间内,每天所耗饲料量是不同的。方法是在哺乳母猪模块里面循环取到的哺乳母猪信息,用当前时间减去哺乳母猪信息的状态日期,即为哺乳母猪的哺乳天数区间的左闭区间值,用当前时间减去哺乳母猪信息的状态日期再加上采食天数,即为哺乳母猪的哺乳天数区间的右闭区间值。再在哺乳母猪信息中,循环哺乳母猪饲料标准信息,哺乳母猪饲料标准信息的最小天数和最大天数,即为哺乳母猪饲料标准信息哺乳天数的左右闭区间值,算出2 个区间的重叠区域天数,该哺乳母猪在此条哺乳母猪饲料标准信息下的实际采食天数即为重叠区域天数,得出当前哺乳母猪当前饲喂标准下采食量为每天采食量×采食天数,当循环完哺乳母猪饲料标准信息时,即算出该母猪的采食量和,将结果封装哺乳母猪字典,哺乳母猪字典的key 是哺乳母猪信息里的落地仔猪批次ID,value 是这只哺乳母猪所对应的采食量,相同落地仔猪批次ID 的采食量相加,循环完哺乳母猪信息,即算出该场的所有哺乳母猪的采食量。

3)妊娠母猪模块。妊娠母猪在不同妊娠天数区间内,每天所耗饲料量是不同的。该方法在处理妊娠母猪模块的方法和哺乳母猪模块方法相似,当循环完妊娠母猪信息和妊娠母猪饲料标准信息后,会得到一个妊娠母猪字典,妊娠母猪字典的key 是妊娠母猪信息里的落地仔猪批次ID,value 是此落地仔猪批次所对应的采食量。

4)空怀母猪模块。在落地仔猪管理中,落地仔猪的状态有2 种,分别是妊娠批和空怀批,状态为已配种的母猪会落在状态为妊娠批的落地仔猪批次上,状态为非已配种和非哺乳母猪的母猪会落在状态为空怀批的落地仔猪批次上,并且1 个场只有1 个批次状态为正常的空怀批。空怀母猪即母猪档案里生产状态除去已配种和哺乳母猪的所有母猪,方法是在空怀母猪模块里面循环取到空怀母猪信息,用当前时间减去空怀母猪信息的状态日期,即为空怀母猪的空怀天数区间的左闭区间值,用当前时间减去空怀母猪信息的状态日期再加上采食天数,即为空怀母猪的空怀天数区间的右闭区间值。再在空怀母猪信息中,循环空怀母猪饲料标准信息,空怀母猪饲料标准信息的最小天数和最大天数,即为空怀母猪饲料标准信息空怀天数的左右闭区间值,算出2 个区间的重叠区域天数,该空怀母猪在此条空怀母猪饲料标准信息下的实际采食天数即为重叠区域天数,得出当前空怀母猪当前饲喂标准下采食量为每天采食量×采食天数,当循环完空怀母猪饲料标准信息和空怀母猪信息时,即算出该场所有空怀母猪的总分摊饲料量。由于1 个场只有1 个批次状态为正常的空怀批,在落地仔猪信息中筛选出该场的空怀批,将其封装在空怀母猪字典,空怀母猪字典的key,是该场在落地仔猪里的空怀落地仔猪批次ID,value 是求出的该场分摊的空怀母猪饲料总量。

3 饲料自动分摊方法的实现与实施效果

根据上述的数据采集及方法设计,养殖生产系统已开发完成饲料自动分摊方法,并在某上市集团公司使用。系统在物料出库的生产发料界面中,调用了饲料自动分摊方法,当用户选择物料分类是饲料,并且选择物料名称,再去输入饲料总量和采食天数,然后进行自动分摊,系统会调用饲料自动分摊程序,快速合理地将这批饲料分摊给该场的各个猪群上,提高饲料分摊的科学性与合理性。

4 结 语

饲料自动分摊方法,提高了饲料分摊的科学性与合理性,方便财务分摊成本,并且节约成本,提高了生产效率,提升了产值。

该方法仍在不断地优化和改进,后期版本可实现以下改进。第一,现在的饲料标准数据是由公司提供,开发人员直接在数据库填入这些数据,用来规定不同类型猪只在不同日龄所耗饲料品种和重量,后期可以开发一个饲料标椎信息录入界面,生产人员可以依据自己的养殖经验,在此页面录入饲料标准信息。第二,该饲料自动分摊方法需要从数据库读取饲料标准信息、批次表信息、母猪档案信息、落地仔猪信息等,随着公司规模的不断扩大,一个场的数据越来越多,导致分摊的速度越来越慢,后期采用数据库集群的方式来提高饲料自动分摊的速率。第三,由于哺乳仔猪是耗用母乳的,所以此方法在日龄为(0,20)内的批次猪并没用分摊饲料,但是哺乳仔猪耗用母乳会导致哺乳母猪的采食量增加,后期可以去精细,将因耗用母乳增加的饲料量分摊到哺乳仔猪上。

猜你喜欢
猪只分摊天数
猪气喘病的防治措施分析
深度学习在猪只饲养过程的应用研究进展
基于姿态与时序特征的猪只行为识别方法
质量管理工具在减少CT停机天数中的应用
小规模养猪对常见猪疾病的预防和治疗
最多几天?最少几天?
房产测量地下室分摊问题研究
A商业银行成本分摊方案设计
我国雾霾天数影响因素分析
我国雾霾天数影响因素分析