2023年国赛高教杯数学建模D题圈养湖羊的空间利用率解题全过程文档及程序

本文主要是介绍2023年国赛高教杯数学建模D题圈养湖羊的空间利用率解题全过程文档及程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2023年国赛高教杯数学建模

D题 圈养湖羊的空间利用率

原题再现

  规模化的圈养养殖场通常根据牲畜的性别和生长阶段分群饲养,适应不同种类、不同阶段的牲畜对空间的不同要求,以保障牲畜安全和健康;与此同时,也要尽量减少空间闲置所造成的资源浪费。在实际运营中,还需要考虑市场上饲料价格和产品销售价格的波动以及气候、疾病、种畜淘汰、更新等诸多复杂且关联的因素,但空间利用率是相对独立并影响养殖场经营效益的重要问题。
  湖羊是国家级绵羊保护品种,具有早期生长快、性成熟早、四季发情并且可以圈养等优良特性。湖羊养殖场通常建有若干标准羊栏,每一标准羊栏所能容纳的羊只数量由羊的性别、大小、生长阶段决定。
  湖羊养殖的生产过程主要包括繁殖和育肥两大环节。人工授精技术要求高,因此湖羊繁殖大多采用种公羊和基础母羊自然交配的方式。怀孕母羊分娩后给羔羊哺乳,羔羊断奶后独立喂饲,育肥长成后出栏。自然交配时将若干基础母羊与一只种公羊关在一个羊栏中,自然交配期约为 3 周,然后将种公羊移出。受孕母羊的孕期约为 5 个月,每胎通常产羔 2 只。母羊分娩后哺乳期通常控制在 6 周左右,断奶后将羔羊移至育肥羊栏喂饲。一般情况下,羔羊断奶后经过7 个月左右育肥就可以出栏。母羊停止哺乳后,经过约 3 周的空怀休整期,一般会很快发情,可以再次配种。按上述周期,正常情况下,每只基础母羊每 2 年可生产 3 胎。在不考虑种公羊配种能力差异的情况下,种公羊与基础母羊一般按不低于 1:50 的比例配置。种公羊和母羊在非交配期原则上不关在同一栏中。
  某湖羊养殖场设置标准羊栏,规格是:空怀休整期每栏基础母羊不超过 14 只;非交配期的种公羊每栏不超过 4 只;自然交配期每栏 1 只种公羊及不超过 14 只基础母羊;怀孕期每栏不超过 8 只待产母羊;分娩后的哺乳期,每栏不超过 6 只母羊及它们的羔羊;育肥期每栏不超过 14只羔羊。原则上不同阶段的羊只不能同栏。
  养殖场的经营管理者为保障效益,需要通过制定生产计划来优化养殖场的空间利用率。这里的生产计划,主要是决定什么时间开始对多少可配种的基础母羊进行配种,控制羊只的繁育期,进而调节对羊栏的需求量,以确保有足够多的羊栏,同时尽量减少羊栏闲置。当羊栏不够时,可以租用其他场地。
  请建立数学模型讨论并解决以下问题:
  问题 1 不考虑不确定因素和种羊的淘汰更新,假定自然交配期 20 天,母羊都能受孕,孕期 149 天,每胎产羔 2 只,哺乳期 40 天,羔羊育肥期 210 天,母羊空怀休整期 20 天。该湖羊养殖场现有 112 个标准羊栏,在实现连续生产的条件下,试确定养殖场种公羊与基础母羊的合理数量,并估算年化出栏羊只数量的范围。若该养殖场希望每年出栏不少于 1500 只羊,试估算现有标准羊栏数量的缺口。
  问题 2 在问题 1 的基础上,对 112 个标准羊栏给出具体的生产计划(包括种公羊与基础母羊的配种时机和数量、羊栏的使用方案、年化出栏羊只数量等),使得年化出栏羊只数量最大。
  问题 3 问题 1 和问题 2 中用到的数据都没有考虑不确定性,一旦决定了什么时间开始对多少可配种的基础母羊进行配种,后续对羊栏的安排和需求也就随之确定。例如,用 3 个羊栏给 42 只母羊进行配种,孕期需要 6 个羊栏,哺乳期需要 7 个羊栏给怀孕母羊分娩和哺乳,哺乳期结束就需要给 84 只断奶羔羊和 42 只母羊共安排 9 个羊栏进行育肥和休整。但实际情况并非如此,配种成功率、分娩羔羊的数目和死亡率等都有不确定性,哺乳时间也可以调控,这些都会影响空间需求。
  现根据经验作以下考虑:
  (1) 母羊通过自然交配受孕率为 85%,交配期结束后 30 天可识别出是否成功受孕;
  (2) 在自然交配的 20 天中受孕母羊的受孕时间并不确知,而孕期会在 147-150 天内波动,这些因素将影响到预产期范围;
  (3) 怀孕母羊分娩时一般每胎产羔 2 只,少部分每胎产羔 1 只或 3 只及以上,目前尚没有实用手段控制或提前得知产羔数。羔羊出生时,有夭折的可能,多羔死亡率高于正常。通常可以按平均每胎产羔 2.2 只、羔羊平均死亡率 3%估算。
  (4) 母羊哺乳期过短不利于羔羊后期的生长,通常是羔羊体重达到一定标准后断奶;而哺乳期过长,母羊的身体消耗就越大,早点断奶,有利于早恢复、早发情配种。一种经验做法是将哺乳期控制在 35-45 天内,以 40 天为基准,哺乳期每减少 1 天,羔羊的育肥期增加 2 天;哺乳期每增加 1 天,羔羊的育肥期减少 2 天。除此之外,母羊的空怀休整期可在不少于 18 天的前提下灵活调控。
  此外,如有必要,允许分娩日期相差不超过 7 天的哺乳期母羊及所产羔羊同栏,允许断奶日期相差不超过 7 天的育肥期羔羊同栏,允许断奶日期相差不超过 7 天的休整期母羊同栏。为简化问题,不考虑母羊流产、死亡以及羔羊在哺乳期或育肥期夭折和个体发育快慢等情况。
  在以上不确定性的考虑下,生产计划的制定与问题 1 和问题 2 将有较大的不同:一旦作出了“什么时间开始对多少可配种的基础母羊进行配种”的决定,后续羊栏的需求和安排不再是随之确定的,而是每一步都会出现若干种可能的情况需要作相应的并遵从基本规则的安排处理,但无法改变或调整上一步。因此,某种意义上,本问题要讨论研究的生产计划将是一个应对多种可能情况的“预案集”。
  请综合考虑可行性和年化出栏羊只数量,制定具体的生产计划,使得整体方案的期望损失最小。其中整体方案的损失由羊栏使用情况决定,当羊栏空置时,每栏每天的损失为 1;当羊栏数量不够时,所缺的羊栏每栏每天的损失(即租用费)为 3。

整体求解过程概述(摘要)

  湖羊是优秀的养殖品种,湖羊养殖场通常有若干标准羊栏,根据湖羊的性别和生长阶段分群饲养,不同阶段、性别和大小的羊只对空间要求不同,所以每一羊栏所容纳的羊只数量由上述因素决定,在实际运营中,空间利用率是相对独立并影响养殖场经营效益的重要问题,本文主要研究了湖羊养殖过程中空间利用率的问题,给出了具体生产计划,较好地解决了提出的三个问题。
  针对问题 1,母羊的工作周期包括交配期、孕期、哺乳期和休整期,一整个周期持续229天,仅考虑单个批次一定数量的基础母羊以固定周期的方式重复工作,可求出其(包括羔羊)所占用的羊栏天数,在理想状态下多批次交替工作可以把羊栏使用数的波动抹平,而出栏羊数正比于基础母羊的数量n,可求出n对应的每一栏能转化为多少年化出栏数.遍历n 便可以得到年化出栏羊只数量范围的估计为1163 至1312,要想年化出栏羊只数量达到1500,缺口约为16至32。
  针对问题2,我们考虑了一般情形,即决策变量为批次之间的间隔g_i和每批次进入交配期的基础母羊数量x_i,以母羊总数量为目标函数,112 个羊栏数量为约束条件建立规划模型,然而该模型是非线性的整数规划,且非线性约束条件非常多,基本不可解。我们对模型进行了化简,固定间隔和数量,即g_i=g,x_i=x,这样决策变量只有两个整数,决策空间有限,用遍历的方法得到最优解g=22,x=40 在一个工作周期内重复 10次,该方案的年化出栏羊只数量1200(2年3胎)。然而该方案最多只使用了110个羊栏,有2个羊栏的元余,且空间利用率只有 95.56%我们经过一定范围的遍历得到了更优解g=22,x_1=48,x_2=…=x_10=40,年化出栏羊只数量达到了1224只,且空间利用率97.38%.为最优解。
  针对问题3,我们研究了随机因素对母羊和羔羊各个时期的影响,怀孕时间和孕期的分布使得我们需要在孕期、哺乳期、休整期对母羊分批次管理,包括育肥期的羔羊,不同分支的决策各有不同,我们确定225天的大周期,且每批次之间间隔 25 天,随着时间发展将出现分支,第 51 天,部分没有成功怀孕的母羊退出本次工作,随后按孕期结束时间不同分了3个分支,每个分支尽量保证哺乳期的时长,但不能过于压缩休整期与之对应的羔羊也分为了3个分支,这样只需要确定每批次进入交配期的基础母羊的数量 x,具体方案就确定下来了,我们用计算机模拟充分多的周期,用蒙特卡洛方法计算损失数期望,并以其最小为优化目标,建立优化问题模型,由于决策变量是1维的,我们用遍历法求解我们观察到随着 x的增加损失先递减后递增,在x=40时得到最小的日均损失数3.79,并给出了局部和全局的羊栏数使用情况可视化结果。

模型假设:

  1、简单起见,在方案中各批次之间的交配期不重合。
  2、按2年3胎的方式计算年化出栏羊只数量。
  3、假设羔羊进入育肥期就不会死亡。
  4、允许同批次的母羊之间的移动,即从1个该批次的羊栏移至另 1个同批次的羊栏,这样如果同批次的不同羊栏都有母羊移除至下一个阶段,那么剩余的同批次羊可以合并。
  5、母羊的怀孕时间和孕期近似服从均匀分布。

问题分析:

  问题 1的分析
  针对问题 1,注意到母羊的工作周期为 229 天,我们考虑让n 只基础母羊进入交配期,且过了休整期后立刻进入下一个工作周期.在这一个周期内这n只母羊与其生产的羔羊在每个时间段使用多少羊栏是唯一确定的.如果只有1个批次反复来回,那么使用的羊栏数必然波动较大,增加批次可以使得羊栏的使用更平均,我们按理想状态估算即多批次交替后,综合羊栏使用数量关于时间成近似的常数函数关系,那么该批次平均占用的羊栏数量就可以求出来,而年化出栏数与母羊数量正相关,因此可以求出在不同决策下每一个羊栏对应的出栏羊只数量,让 n 从一个固定的范围遍历便可以得到112 个羊栏的条件下出栏羊只数量的范围,也可以估算要达到 1500 只年化出栏羊数额外需要的羊栏数。
  问题2的分析
  针对问题 2,沿用问题1中固定数量的基础母羊和批次之间固定间隔的生产模式而当每批次基础母羊和间隔给定后,我们需要计算在这样的决策下进入稳定期后,每一天所使用的羊栏数,我们建立优化模型,以母羊数量总和为优化目标,以最大羊栏数为约束条件,而经过简化,决策变量就是二维的整数,我们考虑采用遍历的方法进行求解,并进一步的对我们的结果进行优化。
  问题3的分析
  针对问题3,仍然采用问题1和2的固定数量固定间隔的生产模式,但是因为有随机因素的参与,问题变得更加复杂。虽然交配期没变,但是孕期结束的时间并不固定,同时还有部分未能成功受孕的母羊因为要进入后续批次而退出,根据我们的简化假设孕期结束的时间相互相差 21 天,而根据孕期哺乳期的条件,需要把同一批进入交配期的羊分成3个分支,这3个分支的状态和决策各不相同,包括后续产下的羔羊也对应的分为 3 个分支。
经过我们分析,应尽可能的延长哺乳期的时间,但是又不能压缩休整期的时间.多方考虑下我们需要确定好工作周期的长度和固定间隔,当基础母羊数量给定后,对应的羊栏使用数量以及相应的损失也可以求出,类似问题 1,让母羊数量遍历找到使得损失最小的方案以最大程度的利用空间。

模型的建立与求解整体论文缩略图

在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:(代码和文档not free)

function yi = rdnump(xi,p,y)
yi(1:length(xi))= 0; 
pp = yi;
for i= 1:length(p)
pp(i)= sum(p(1:i));
end
for i = 1:y
rr = rand();
index = find(pp>rr,1);
yi(index) = yi(index) + 1;endend
clear;
pp=4;
g(1:10)= 22;
p=[20,149,40,2e];
k=10; % floor(sum(p)/p(1)) - 1; 
p5 = 21;
x(1:k)= 40;x(1)= 48;
m= ceil(sum(x) / 5e); 
m2= ceil(m/4);nn =[14,8,6,14]; 
t(1:k,1:4*pp +1)= 0;
T(1:k,1:2*pp)=0;
t(1,1)=1;
forj= 2:5 t(1,j)= t(1,]-1)+ p(j - 1);end
T(1,1)= t(1,4);T(1,2)= t(1,4) + p5;
for i= 2:pp 
t(1,4*(i- 1)+2:4*1+1) = t(1,4*(i - 2)+2:4*(i - 1)+1)+ Sum(p);
T(1,2*(i-1)+1:2*)= T(,2*(i-2)+1:2*(- 1))+ Sum(p);endtmax = 1000;for i=2:k
t(i,:)=t(i-1,:)+g(i-1);
T(i,:)= T(i- 1,:)+ g(i-1);enddeltaij(1:k,1:4,1:tmax)= 0; 
for 1 = 1:tmaxfor i = 1:kkk = find(t(i,:) <= l,1,"last");j=1+ mod((kk -1),4);deltaij(i,j,1) =1;endend
for 1= 1:sum(p)for i = 1:kif max(deltaij(i,:,1))== 0 deltaij(i,41)=1; endend
enddeltai bar(1:k,1:tmax)=0;for l = 1:tmaxfor i=1:kkk = find(T(i,:)<= l,1,"last");if mod(kk,2) == 1deltai_bar(i,1) =1;endendend
Delta(1:tmax)=0;for 1 = 1:tmaxDelta(1) = max(deltaij(:,1,1));endN(1:tmax) = 0 ;
for l = 1:tmaxN1=0;N2=0;for i=1:k[n1,m1]=numjp(x(i),m);n=[n1 + ml,ceil(x(i) / nn(2)),ceil(x(i) / nn(3)),ceil(x(i) / nn(4))]; for j =1:4N1 = N1 + ceil(deltaij(i,j,1)* n(j));
endN2 = N2 + ceil(2* deltai_bar(i,1) * x(i) / 14);end
N3=(1 - Delta(1)) * m2;
N(1)=N1+N2+N3;endplot((1:length(N)),N)
xlabel('天数')
ylabel('羊栏数')
N max = max(N);
index1 = find(N == max(N),1);
pct = sum(N(indexl:index1 + sum(p) - 1)) / (sum(p)* N max);
NN1(1:k,1:sum(p))= 0; 
NN2(1:k,1:sum(p))= 0; 
NN3(1:sum(p))= 0; 
for l = index1:index1 + sum(p) - 1for i = 1:k[n1,m1]= numjp(x(i),m);n=[n1,ceil(x(i) / nn(2)),ceil(x(i) / nn(3)),ceil(x(i) / nn(4))]; for j = 1:4NN1(i,l - index1 +1)= NN1(i,l - index1 + 1) + deltaij(i,j,l) * n(j);endNN2(i,l - index1 + 1)= NN2(,l - ndex1 + 1) + deltai bar(i,l) * ceil(2 * x(i)
NN3(I index1 +1)= NN3( - index1 + 1) + deltaij(i,1,l)* m1;endNN3(1 - index1 +1)= NN3(1 - index1+1)+(1- Delta(1))* m2;
/14);endNN_re(1:2*k+1,1:sum(p))= 0 ; 
NN_re(1:2:2*k,:)= NN1;NN re(2:2:2*k,:)= NN2;NN re(2* k +1,:)= NN3;
clear;c_f=[];
Gf=[];
for x= 30:60P= 1000;imax=9 * p - 1;T=25*(9*P-1)+ 42; N(1:1:T)=0;C= N;Deltax=[];G_bar =[];i=1;[NN,Delta xx,GG bar] = f3(x);Delta x =[Delta x,Delta xx];G bar =[G bar,GG bar];
N(1+25*(i-1):14 25*(i - 1)+42)= N(1+25*(i- 1):1+25*(i-1)420) + NN;i=2;[NN,Delta xx,GG bar] = f3(x)Delta x =[Delta x,Delta xx];G bar = [G bar,GG bar];N(1+25*(i- 1):1+25* (i - 1)+42)= N(1+25*(i- 1):1+25* (i- 1)428)+NN;for i = 3:imaxxx=x + Delta x(i-2);[NN,Delta xx,GG bar] = f3(xx);Delta x =[Delta x,Delta xx];G bar =[G bar,G bar];N(1+25*(i- 1):1+25*(i-1)+42) = N(1+ 25*(i-1):1+25*(i-1)+ 42)+NN;endindex1 = 901:1808;index2=451:225*P;for t = 1:Tif N(t) >=112C(t)=3*(N(t)-112);elsec(t)=112 - N(t);endendc_f =[C_f;mean(C(index2))]; [G_f;sum(G_bar(18:9*P-1)) /(6*P-12)];end
plot(index1,N(index1))
xlabel('天数')
ylabel('羊栏数')
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

这篇关于2023年国赛高教杯数学建模D题圈养湖羊的空间利用率解题全过程文档及程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/518210

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

uva 11044 Searching for Nessy(小学数学)

题意是给出一个n*m的格子,求出里面有多少个不重合的九宫格。 (rows / 3) * (columns / 3) K.o 代码: #include <stdio.h>int main(){int ncase;scanf("%d", &ncase);while (ncase--){int rows, columns;scanf("%d%d", &rows, &col

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用