同济大学数学建模竞赛第33组试题解答.docx
《同济大学数学建模竞赛第33组试题解答.docx》由会员分享,可在线阅读,更多相关《同济大学数学建模竞赛第33组试题解答.docx(19页珍藏版)》请在冰豆网上搜索。
同济大学数学建模竞赛第33组试题解答
2005年同济大学数学建模竞赛第33组试题解答
奶牛场承包规划问题
姓名:
学号:
傅锦霞023071
李婧020189
宋文迪010181
奶牛场承包规划问题
摘要
本文建立了一个关于养牛场承包问题的简化模型。
在详细分析的基础上,通过合理假设、适当的固定某些变量(如贷款额),这样在一定程度上简化建立模型,并运用动态规划的方法对养牛场的相关决策问题进行分析,本着利益最大化原则,利用逆推法,并借助Matlab软件解决了较复杂的计算,方便的确定出每年底应保留的小母牛数,并在此基础上确定贷款额的最佳值,实现了最大收益的目标。
经计算分析可基本得出结论:
承包人要采用适当的经营策略可以实现盈利。
当承包人第一年底保留的小牛数为24.45头,第二年底保留的小牛数为13.97头,承包人五年的总收益最大61.2万元。
关键词:
动态规划最大利润最优决策逆推法
奶牛场承包规划问题
1.问题重述
某公司计划承包一奶牛场,经营期为5年,任何投资将从五年期贷款中获得,贷款年利率为12%,每年归还本息总共的1/5,除此还要于每年年底支付6万元土地承租费用。
初期要承包原有的120头牛,分别为从0~11岁各10头。
不到2岁为幼牛,不产奶也不生仔;其余为产奶牛,平均每年产奶收益为3700元/头,平均每头每年产仔1.1头,新生牛中公、母各半,产后不久小公牛全卖掉(300元/头),小母牛可卖掉(400元/头),也可养成产奶牛;当产奶牛养到12岁就卖掉,平均每头卖出价为1200元。
所养牛每年还有一定的损失,所用饲料是粮食和甜菜(可以由农场种植,也可从市场购买,多余还可以卖掉),有关数据见表1和表2。
另外,要雇佣工人来维持农场运转,劳动力成本为10元/小时。
考虑农场现有状况,如果牛的总数超过130,每增加一头就要增加2000元投入。
到承包期满,所有牛按原来的承包价折价卖出,而且场主不希望第五年末产奶牛的数量增加超过原来的75%,也不希望减少超过原来的50%。
2.变量说明
XkT:
第k年初各年龄段(每隔1岁一个阶段,共12段)牛的数量分布向量
Ck1:
当粮食或甜菜多于牛的需求量时,通过售出得到的收益。
Ck2:
第k年所用掉的饲料费。
Ck3:
第k年用于支付多余130头的那部分牛的额外总投入。
A12*12:
有关牛数量的变化矩阵
Sk:
第k年初小牛的数量
Lk:
第k年初奶牛的数量
Q:
初始贷款额
q:
每年需还贷款额
Mk:
每年卖出的12岁牛的数量
uk:
第k年留下的小母牛的数量(决策变量)
UkT:
由uk所决定的决策向量(UkT=(uk,0,0,0,0,0,0,0,0,0,0,0))
rk:
第k年的净收益
R:
5年总的净收益值
a:
幼牛的折价系数
b:
产奶牛的折价系数
3.假设
1.所有的土地都可以用于农作物(粮食和甜菜)种植,养牛棚及相关设施的面积忽略。
2.所有工人的工资都在年底支付,养牛和种植等其它费用在年初即要支付。
3.假设奶牛的损失都发生在年末,产仔量由年初的产奶牛数目计算;且认为牛的损失
是在各个年龄段均匀分布的。
4.相邻两年龄组的牛群在相邻两年之间的变化是连续变化的,即第k年底第i年龄组的牛在第k+1年初进入第i+1年龄组(在此之前12岁的牛已于第k年卖掉)。
5.第k年留下的小母牛在第k+1年初全数进入0岁年龄组。
6.每年新生的小牛不计费用和损失。
7.假设市场销路良好,五年后所有需卖出的牛都可全数以理想价格卖出,最后产奶牛的
折价系数为0.95。
8.用于多于130的新增牛的2000元投入为一次性的。
9.假定第k年的收入可用于第k+1年初的投入。
10.由于死亡率是一种概率性的计算,所以假设在计算过程中可以对于牛数量保留小数
4.问题分析
由上述农场的状况(不考虑自然因素等影响),试分析承包人有无盈利的可能性。
若有,怎样安排5年的计划才能使5年的净收益达到最大值?
并进一步讨论:
若银行利率波动,还款方式改变,气候原因等外因变化引起的农产品产量与价格的变化及劳动力市场价格的变动等会对原来制定的五年计划及收益产生怎样的影响。
表1
粮食
甜菜
自种年产量(吨/亩)
0.9
1.5
所需劳动量(时/亩)
20
30
购入价格(元/吨)
900
700
售出价格(元/吨)
750
500
其它年消费(元/吨)
150
100
表2
幼牛
产奶牛
承包价(元/头)
400
4000
每年所需劳动量(小时/头)
10
42
每年吃粮食(吨/头)
0.4
0.6
每年吃甜菜(吨/头)
0.7*2/3
0.7
年损失
5%
2%
其它年消费(元/头)
500
1000
5.建立模型
(1)关于银行贷款
银行贷款的还款方式选择为等额还款,计算公式如下:
当年利率为12%,还款期数为5年,则可计算出每年的还款额:
q=Q×0.12×1.125/(1.125-1)=0.277Q
由于银行贷款利率较高,为减少投资成本及利息的支付,在该模型中先考虑贷款额Q可以满足奶牛场5年的正常运转,建模后期可以再对Q进行分析,实现在现有的年利率和还款方式下达到5年总收益最大,若出现投资不足造成模型不符合实际或贷款太多导致利润下降,可以在考虑对模型的修改。
(2)土地利用分析:
表3
种植量(亩)
价格(元)
每吨费用(元)
售出净利润(元)
购入
售出
甜菜
f1=200-f2
S11=700
S12=500
(100+30×10)/1.5=267
233
粮食
f2≤80
S21=900
S22=750
(150+20×10)/0.9=389
361
由上表发现:
每亩土地无论生产甜菜或粮食,其费用都小于售出价格,且购入价格高于售出价格,所以考虑将所有的土地都投入种植。
分析已知条件可知,各年龄段的牛对于甜菜和粮食的需求比例都是7:
6,而按土地种植面积计算的可供给的甜菜与粮食比例大于7:
6,且通过表中数值比较可知,粮食的售出利润高于甜菜,所以80亩全部种粮食,这样种甜菜的面积也固定下来,为120亩。
这样就将土地的分配首先确定下来。
(3)有关牛的分析:
由已知,牛以1岁的年龄差分为12段,由于生长、损失和出生每年每年龄段的奶牛数发生变化。
而对于奶牛场,每年的经济来源主要有:
产奶牛的产奶、生仔、12岁牛的卖出以及农作物有剩余时的售出。
每年的支出主要有:
养牛费用(包括人工费、饲料费及其它)、种菜费用和固定费用(地租费和还款额)。
而牛的数目与分布成为进行生产计划的关键,因此有必要先建立一个有关牛的数量及分布的模型。
我们这里采用一个12维向量XkT的形式表达:
XkT=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11)T
上式中x下标代表牛的年龄,对应x为属于该年龄牛的数量。
对于每年牛的变化用一个变化矩阵A12*12表示:
A12*12=
这样第k年底牛的状态由年初的XkT变为XkTA12*12,再经过决定留有多少小母牛uk,就确定了第k+1年初牛的分布向量Xk+1T,为了方便,再引入由uk所确定的向量UkT=(uk,0,0,0,0,0,0,0,0,0,0,0),为方便下面的数学建模。
这样,牛的表示模型确立下来,其它因素变化也就跟牛的数量联系起来,我们就可以考虑本文的模型目标了,即如何安排五年生产计划,从而达到总收益最大。
(4)利润分析:
经分析,每年的幼牛没有任何产出,对于新增的(上年计划留下的小母牛)幼牛,必须经过两年的饲养才能长成产奶牛,获得收益。
如何减少饲养幼牛的成本、以及一批幼牛在整个的承包期内可以在产奶牛群中停留几年,这些因素将会大大影响到总收益值。
所以可以初步这样确定:
对于1、2、3、4年所留的小母牛数是依次递减的。
仔细分析,第3、4年末出生的小母牛到第五年末仍为小母牛,且抵卖价格低于饲养费用,所以会产生负收入,应决定全数卖出,即令u3、u4为0,这样第5年幼牛数为0,显然u5也为0,那么需要进行决策的问题就简化成为确定u1、u2。
(5)模型确立
因为养牛场规划问题是要对每年进行规划,以实现5年总收益最大,是一个明显的分阶段决策问题,所以我们用动态规划的模型进行求解。
本题经营周期为5年,第k年的牛群组成状态可以用XkT表示。
并且有牛的分布在第一年初为X1T=(10,10,10,10,10,10,10,10,10,10,10,10)T,第六年初为X6T=(0,0,0,0,0,0,0,0,0,0,0,0)T,于是问题时始末端固定的问题。
第k年底牛的状态由XkT变为XkTA12*12,再经过决策变量uk就可以确定第k+1年初的牛群状态为Xk+1T=XkTA12*12+UkT,该式即为动态规划中的状态转移方程(满足无后效应),对应第k年的净收益为rk(XkT,uk),
先看每年的固定收益为:
3700Lk+300x1.1Sk/2+400x(1.1Lk/2-uk)
固定消费为:
60000+Qk+600Sk+1420Lk+1200Mk[Mk=12000*(0.98)k]
不确定量分别为:
C1k、C2k和C3k
因为C1k、C2k与牛的数量和农作物有关,所以结合表2中牛对两种不同作物的需求量和“土地利用分析”一节进行综合考虑,因为幼牛消耗农作物量为产奶牛的2/3,所以可以等效为有(2/3Sk+Lk)头产奶牛,经过分析可以得出以下3种可能:
1.当(2/3Sk+Lk)*0.6≤72时,粮食和甜菜都能自给自足,并且会有剩余:
C1k=[72-0.6*(2/3Sk+Lk)]*361+[180-0.7*(2/3Sk+Lk)]*233
C2k=0.6*(2/3Sk+Lk)*389+0.7*(2/3Sk+Lk)*267
2.当72<(2/3Sk+Lk)≤180时,粮食不够,甜菜剩余:
C1k=[180-0.7*(2/3Sk+Lk)]*233
C2k=72*389+[0.6*(2/3Sk+Lk)-72]*900+0.7*(2/3Sk+Lk)*267
3.当(2/3Sk+Lk)≥180时,粮食和甜菜都不够:
C1k=0
C2k=[0.6*(2/3Sk+Lk)-72]*900+72*389+[0.7*(2/3Sk+Lk)-180]*700+180*267
另外,对于C3k,因为新增的牛只来源于当年的x0(即上一年的uk),所以分析得出C3k也
有3种可能表达:
1.当Sk+Lk≤130时:
C3k=0
2.当Sk+Lk-x0≤130时,x0中有一部分多余:
C3k=(Sk+Lk-130)
3.当Sk+Lk-x0≥130时,原有数已经大于130,所以:
C3k=x0*2000
综上分析,rk(XkT,uk)表达式可写为:
rk(XkT,uk)=2665Lk-600Sk-400Uk-60000-Qk+1200Mk+C1k-C2k-C3k
需要作出修正的是,第1年年初那部分投入全部来源于银行贷款,应该不算入支出(包括承包牛的费用、养牛与种菜的其它费用);第五年还有卖掉所生牛的一笔收益为400a*Lk*0.95+4000b*0.98。
可见问题的复杂性在于Ck1、Ck2、Ck3的表达形式要由第k年的具体状况决定。
所求目标函数为:
其含义为5年收益总和,我们就是要找出最大值,以及最大值在什么样的计划下出现。
6.模型求解
该模型为动态规划模型,应用最优化原理,当第k年的状态已经确定后,最优决策不受以前的控制,即前面的决策无后效应,这样我们可以通过逆推法求得最优规划方案。
分析上述建立的模型,描述牛的数量及分布的向量XkT即为第k阶段的状态量,uk为该阶段的决策变量,因此净收益函数rk即受这两个变量控制。
设fk(XkT)为在第k年的初始条件为XkT时,按最优计划得到的到承包结束的总净收益[max(rk+rk+1+…+r5),所以该题的动态规划方程为:
fk(XkT)=max{r(XkT,uk)+fk+1(Xk+1T)}
rk(XkT,uk)=2665Lk-600Sk-400Uk-60000-q+1200Mk+(C1k-C2k-C3k)
(第1、5年例外)
1、第五年的推算:
f5(X5)=max{r5(X5T)+f6(X6T)}
∵第五初将牛全部卖出,所以认为第六年不继续经营,也就是f6(X6T)=0
∴f5(X5T)=max{r5(X5T)}=max(2665L5-600S5-400u5-60000-q+C51-C52-C53+1200Mk
400a×S5+4000b×L5×0.98)
此时只与变量u5相关,但其前系数为负,所以可以直接推出第5年所留小母牛数u5=0,这也是符合实际情况的,同理可以得到u4=0,u3=0,此时我们已基本可以知道承包5年中牛的大体分布情况,如下表
表4
第k年初牛的分布状况:
第k年
0岁
1岁
2-11岁
1
10
10
100
2
u1
9.5
97.7
3
u2
0.95u1
95.2
4
0
0.95u2
83.85+0.9025u1
5
0
0
0.9025u2+0.8845u1+72.95
所以对应第5年时,S5=0,C53=0
按照模型中关于rk的计算公式得r5:
(下面计算中为方便起见,Lk、Sk多用u1和u2表示)
当L5≤120,即0.9025u2+0.8845u1≤47.05,
f5(X5T)=1865L5-60000-q+1200M5+4000b*L5*0.98
若120≤L5≤175,即47.05≤0.9025u2+0.8845u1≤102.5,
f(5)=1775L5-60000-q+1200M5+4000b*L5*0.98
2、第四年推算:
f4(X4T)=max[r4(X4T)+f5(X5T)]
=max[1865L4-1133.3S4-400u4+1200M4-60000-q+C41-C42-C43+f5(X5T)]
情况与第五年类似,也可确定u4=0
现讨论(2/3S4+L4)不同取值范围时的C41、C42、C43:
由于没有新增小母牛的加入,所以C43=0
.83.83≤(2/3S4+L4)≤120C41-C42=67932-800*(2S4+3L4)/3
r4(X4T)=2665L4-600S4+1200M4-60000-q+67932-800*(2S4+3L4)/3
.120≤(2/3S4+L4)≤150.5C41-C42=78732-890*(2S4+3L4)/3
r4(X4T)=2665L4-600S4+1200M4-60000-q+78732-890*(2S4+3L4)/3
∴
.(4)r4(X4T)=1865L4-1133.3S4+1200M4+7932-q
.(4)r4(X4T)=1775L4-1193.3S4+1200M4+18732-q
修正
.(5)f5(X5T)=1771.75S4+1827.7L4+1200M5+4000b*L5*0.98-77158-q
.(5)f5(X5T)=1686.25S4+1739.5L4+1200M5+4000b*L5*0.98-76330-q
由此可以推出f4(X4T)有四种决策的可能:
.(4)~
.(5)f4(X4T)=3692.7L4+638.45S4-69226-2q+1200M5+4000b*L5*0.98+1200M4
.(4)~
.(5)f4(X4T)=3604.5L4+552.95S4-68398-2q+1200M5+4000b*L5*0.98+1200M4
.(4)~
.(5)f4(X4T)=3602.7L4+578.45S4-58426-2q+1200M5+4000b*L5*0.98+1200M4
.(4)~
.(5)f4(X4T)=3514.5L4+492.95S4-57598-2q+1200M5+4000b*L5*0.98+1200M4
3、第三年推算:
f3(X3T)=max[r3(X3T)+f4(X4T)]
同上述两年推算可类推出第三年的留取小母牛的数量u3=0.
max[r3(X3T)]=(1865L3-1133.3S3-400u3+1200M3-60000-q+C41-C42-C43)
现在讨论C41、C42、C43
.95.17≤(2/3S4+L4)≤120C41-C42=67932-800*(2S3+3L3)/3
.120≤(2/3S4+L4)≤497.4C41-C42=78732-890*(2S3+3L3)/3
因为留有新增小母牛u2,所以应讨论C43的情况:
当0.95u1+L3>130且u1>36.7时,C43=2000u2
当0≤u1≤36.7且u2+0.95u1+L3>130时,C43=2000*(u2+0.95u1+L3-130)
当u2+0.95u1+L3≤130时,C43=0
由于u1以36.7为分界点,进一步讨论0≤u2+0.95u1≤88.5650≤2S3+3L3≤462.631
所以仍需划分区间.
由此可知道,r3(X3T)有6种组合,但经过对个别区间的进一步讨论比较可以对某些区间进行合并,从而可简化为3段,分别为:
当u1≥36.7且0≤u2≤105.9-0.95u1时,
r3(X3T)=187653.5-1133.3u1+1193.3u2-q+1200M3
当0≤u1≤36.7且0≤u2≤37.2-0.95u1时,
r3(X3T)=185418.5-1077.0u1+1133.3u2-q+1200M3
当0≤u1≤36.7且37.2-0.95u1≤u2≤105.9-0.95u1时,
r3(X3T)=257319.4-3033.6u1-3193.3u2-q+1200M3
4、第二年推算:
r2(X2T)=1865L2-1133.3S2-400u2-60000-q+C21-C22-C23+1200M2
104.0≤(2/3S4+L4)≤120C21-C22=67932-890*(2/3S4+L4)/3
120≤(2/3S4+L4)≤140.7C21-C22=78732-890*(2/3S4+L4)/3
0≤u1≤22.8C3=0
22.8≤u2≤55C3=2000u1+2280
由于不同区间存在,r2(X2T)的有三种表达形式:
0≤u1≤24.5r2(X2T)=1865L2-1133.3S2+7932-400u1+1200M2
24.5≤u1≤55r2(X2T)=267932-135L2-400u1-q+1200M2
5、第一年的推算:
f1(X1T)=max[r1(X1T)+f2(X2T)];
r1(X1T)=2665L1-600S1-60000-q-400u1+(C11-C12+C13)+1200M1+
(1000L1+500S1+150*80+100*120)(此为修正部分)
因为L1=100S1=20C13=0
C11-C12=67932-800/3=-22734.7
r1(X1T)=305763-400u1-q+1200M1
以上5个过程便是使用逆推法对五年中计划安排的大致推算,发现第4、5年较简单,第2、3年时候变得较复杂,第1年由于初始状态是确定的,所以r1(X1T)计算也不难,现在对以上计划个过程再进一步简化如下(式中仅出现u1、u2两个变量):
第一年净收益为:
r1=305763-400u1-q+1200M10≤u1≤55
第二年净收益为:
0≤u1≤24.45时r2=179376-1133.3u1-400u2-q+1200M2
24.45≤u1≤55时r2=226413-3193.3u1-400u2-q+1200M2
第三年净收益为:
u1≥36.7且0≤0.95u1+u2≤105.9
r3=187653.4-1133.6u1-1193.3u2-q+1200M3
0≤u1≤36.7且0≤0.95u1+u2≤37.2
r3=185418.5-1077u1-1133.3u2-q+1200M3
0≤u1≤36.7且37.2≤0.95u1+u2
r3=257319.4-3033.6u1-3193.3u2-q+1200M3
第四年底和第五年底的最大总净收益之和为:
0≤2.7075u1+1.9u2≤108.6且0≤0.8845u1+0.9025u2≤47.05 f4=r4+r5=510226.3+6626.5u1+3917.4u2-2q+1200M4+1200M5+4000b×L5×0.98
0≤2.7075u1+1.9u2≤108.6且47.05≤0.8845u1+0.9025u2f4=r4+r5=503702.8+6546.9u1+3886.9u2-2q+1200M4+1200M5+4000b×L5×0.98
108.6≤2.7075u1+1.9u2≤200且0≤0.8845u1+0.9025u2≤47.05f4=r4+r5=241859+3251.4u1+549.5u2-2q+1200M4+1200M5+4000b×L5×0.98
108.6≤2.7075u1+1.9u2≤200且47.05≤0.8845u1+0.9025u2f4=r4+r5=235335.6+3171.8u1+468.3u2-2q+1200M4+1200M5+4000b×L5×0.98
模型求解至此为止,要找到最优化状态下的u1、u2,我们采用Matlab软件进行求解,主要的求解的思想就是划分区域,分别优化。
因为牛的饲料供应与牛的数量直接相关,而饲料的来源依靠自己种植和市场购进,另外还有销售问题,以及多出130头牛的新增建设问题,所以以上限制条件将牛的分布分成不同的区域,为了方便求解,我们首先利用所有的限制条件编写程序(程序1)绘制牛的数量分布图(图1)。
将牛的分布划分成小区域后,在某小一区域中对利润的求解公式就确定唯一了,再经过简化处理,问题已经成为在线形区域中求最优值,利用matlab中的linprog优化函数,编制决策优化求解函数(程序2),求出最优组合,其间有一些不合理的结果,经过人工修正,也可以进行进一步的分析,最终确定各区域的优化组合。
(相关程序见附录)
由程序得到的相关数据见表5,发现出现了几对最优值,但基于我们的模型是在最初贷款额满足5年都能正常运行的假定下建立的,而表5的数据利润表格一栏的数字不能真正说明在所有的最优值中它就是最佳的。
经过分析,得出u1=24.45、u2=13.97是较合理的数据,将这一数据带入表4种就可以得到5年里牛的具体数值如下:
第k年
0岁
1岁
2-11岁
1
10
10
100
2
24.45
9.5
97.7
3
13.97
23.2
95.2
4
0
13.3
106
5
0
0
107.2
在此情况下,得出如下结论:
根据假设,从承包开始要使奶牛场正常运转所需贷款额为5420