2019年数维杯国际大学生数学建模
C题 猪肉价格波动分析
问题重述:
中国是一个育种大国。猪肉产业在畜牧业中起着主导作用。同时,猪肉已成为人们餐桌上的主要肉类来源之一。随着人口的增加,消费和生活也得到了改善。
2018年8月3日,中国首次确诊非洲猪瘟。短时间内,全国各地突然爆发了非洲猪瘟。
与此同时,亚洲、欧洲等许多国家也出现了非洲猪瘟等疫情。仅在2019年上半年,全球就发生了5800多例非洲猪瘟病例。由于全球疫情的蔓延,全世界猪肉价格有所上涨。欧盟的猪肉价格上涨了近20%。
作为猪肉消费大国,猪价上涨严重影响了人们的日常生活水平。因此,研究猪肉价格的波动,找到适当的方法来调节猪肉的供求关系迫在眉睫。
问题一:猪肉价格波动的主要影响因素分析
利用历年数据分析猪肉价格波动的一般影响因素。
近期猪肉价格的波动是否与猪肉价格的常见波动高度相关?如果不是,主要影响因素是什么?
问题二:猪肉价格下跌研究
猪肉养殖通常有一定的周期性。当猪肉价格较高时,提出合理的养殖计划。在猪肉养殖无法在短时间内完成的前提下,提出合理的自国外采购方案,保证国内猪肉价格相对稳定。
问题3:
猪肉优化供应与储存策略研究.当不同地区猪肉需求相对稳定时,提出不同地区最优养殖方案。为有效应对一定地区猪肉需求高峰,提出有效的猪肉贮藏策略,保证猪肉价格稳定。
整体求解过程概述(摘要)
中国是一个猪肉消费大国,年猪肉消费量占世界的60%以上。可以说,猪肉市场的稳定是我国人民和谐生活的前提。今年以来,我国生猪市场价格波动频繁,给广大消费者带来了极大的困扰。因此,有必要通过计算机进行相关的数学分析,从而准确掌握猪肉价格波动的原因和规律。
针对第一部分,我们从市场供需和场外因素三个方面研究了影响猪肉价格的因素。我们考虑了仔猪价格、生猪价格、羊肉、牛肉、玉米、大豆、鸡蛋和仔猪饲料等8个分析指标。由于指标数量众多,我们使用灰色相关性过滤掉相关性最大的五个指标,并通过设计响应面二次多项式模型,拟合了过去20年的猪肉价格。我们使用 p 值来检测回归系数并发现 p<0.0001,因此该模型被认为是高度准确的。通过分析响应面因子图,得出影响猪肉价格的主要因素由大到小:生猪价格>仔猪价格>羊肉价格>玉米价格>大豆价格。然后,采用时间序列分析法对2019年主要影响因素进行预测,并据此预测2019年猪肉价格。结果表明,预测价格远低于实际价格。通过分析认为,非洲猪瘟造成市场猪肉短缺,导致猪肉价格飙升。
对于第二部分,为了做出合理的养殖计划,我们首先在时间序列模型中进行小波分析,预测猪肉价格波动的趋势。该模型计算了猪肉价格波动的两个主要周期,其中时间步长为25个月的第一个主要周期合理地反映了猪肉价格波动的周期性,可以得到50个月的变化周期。第二个主要周期,时间步长为4个月,反映了猪肉价格的整体趋势,即猪肉价格从低到高,从稳定到波动。鉴于养殖地的选择合理,我们采用退火模拟模型,通过规划最优路径,优化猪肉和生猪的运输。我们可以通过计算中国各省的地理坐标。结果是:四川、河北、河南、湖南和黑龙江。黑龙江猪肉主要出口吉林、辽宁、北京、内蒙古;四川猪肉主要出口甘肃、青海、新疆;河北猪肉主要出口天津、北京、内蒙古;河南猪肉主要出口北京、天津、安徽;湖南猪肉主要出口到安徽、贵州、广东、广西、福建;对于猪肉采购计划,我们采用成本控制模型,以采购猪肉为目的,降低猪肉价格。限制应该是最低的猪肉成本。该模型计算出,中国的主要猪肉进口国应该是美国、加拿大、丹麦、法国和西班牙。最大的进口量来自加拿大,进口量达50 400吨。
对于第三部分,基于第二部分中的K均值聚类结果,使用变异率值波动率指数(RV)来表征时间序列波动的强度。分析发现,低价区猪肉波动最动期约40个月,未来1-2年主要产区价格有下降趋势;一般来说,高价区波动较小,波动周期在45个月左右,未来2-3年主产区猪肉价格有上涨趋势。根据各地区历史波动规律和未来预测结果,提出合理的育种方案。同时,为了满足一定地区未来对猪肉的需求,我们按照变异率(RV),将我国未来生猪储备划分为重点养殖区、一般养殖区和鼓励养殖区。区域的划分可以快速响应一个地区对猪肉需求的激增,并保持猪肉市场的稳定。
模型假设:
我们做一些一般性的假设来简化我们的模型。下面列出了这些假设以及相应的理由:
1.我们从互联网上获得的所有数据都是真实的。
我们收集了近20年不同商品的价格数据,数据量非常巨大。
2.猪肉价格主要与论文中选取的指标有关,其他指标对其影响不大,不予考虑。
猪肉价格波动的原因很多,我们只能从不同的方面选择一些有代表性的因素。
问题分析:
对问题一的分析
对于A部分,由于2019年以后猪肉价格异常高企,目前在因素分析中没有考虑数据,只考虑了2000年1月至2018年12月的数据。在之前的统计中,从供需和场外三个方面选择了八个指标。为了比较所选指标对猪肉的影响,我们采用灰色相关分析方法获取指标与猪肉价格的相关性,从而得到主要影响因素。
对于 B 部分,我们选择响应面设计方法。我们利用多二次线性回归方法建立参数与响应值之间的函数关系,用于预测2019年猪肉的合理价格。通过分析响应面得到的因子图,分析了影响猪肉价格的主要因素。
对问题二的分析
至于A部分,需要根据猪肉价格波动规律制定合理的养殖计划,首要目标是找到猪肉价格的周期性波动规律。采用时间序列小波分析建立猪肉价格波动模型,探索猪肉价格波动周期,根据其变化规律制定合理的养殖方案。由于养殖用地的限制和生猪运输成本的限制,应建立模拟退火模型,使运输路径最短,合理确定养殖用地。
对于B部分来说,如果不可能在短时间内设计出养殖计划,让猪肉退居后退,也就是说需要猪肉采购。在采购计划中,猪肉的成本应得到控制,不得高于市场价格。建立成本控制模型,考虑影响猪肉成本的因素,计算出合理的采购方案。
对问题三的分析
对于问题A部分,由于不同地区猪肉价格和需求的变化趋势。因此,在问题分析中,采用第二部分聚类分析结果,分析2000年以来不同地区猪肉价格变化趋势,分析不同价格区域下不同地区的主要消费特征,从而制定有针对性的措施。
对于B部分,根据A部分的分析结果,可以对我国主要猪肉产区实施猪肉储存方案,选择附近的猪肉消费市场,保持猪肉市场的稳定。
模型的建立与求解整体论文缩略图
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可
程序代码:
部分Matlab程序如下
灰色关联
clc,clear
a= load('data1.txt');
cankao= load('cankao.txt');
for j =[1:2 6:8]
a(:,j)=(a(:,j)-min(a(:,j)))/(max(a(:,j))-min(a(:,j)));
end
for j =[3:5]
a(:,j)=(max(a(:,j))-a(:,j))/(max(a(:,j))-min(a(:,j)));
end
cankao(:)=(cankao(:)-min(cankao(:)))/(max(cankao(:))-min(cankao(:)));
[m,n]=size(a);
t=abs(cankao-a);
mmin=min(min(t));
mmax=max(max(t));
rho=0.5; %分辨系数
xishu=(mmin+rho*mmax)./(t+rho*mmax)
guanliandu=mean(xishu)
[gsort,ind]=sort(guanliandu,'descend')
K均值聚类
Centers = p(:,1:ClusterNum);
NumberInClusters = zeros(ClusterNum,1); %
IndexInClusters = zeros(ClusterNum,SamNum); %
while 1,
NumberInClusters = zeros(ClusterNum,1); %
IndexInClusters = zeros(ClusterNum,SamNum); %
% 按最小距离原则对所有样本进行分类
for i = 1:SamNum
%计算所有样本输入与聚类中心的距离
AllDistance = dist(Centers',p(:,i));
%按对小距离原则对样本进行分类
[~,Pos] = min(AllDistance);
NumberInClusters(Pos) = NumberInClusters(Pos) + 1;
IndexInClusters(Pos,NumberInClusters(Pos)) = i;
end
% 保存旧的聚类中心
OldCenters = Centers;
%重新计算各类新的聚类中心
for i = 1:ClusterNum
Index = IndexInClusters(i,1:NumberInClusters(i));
Centers(:,i) = mean(p(:,Index)')';
end
% 判断新旧聚类中心是否一致,是则结束聚类
EqualNum = sum(sum(Centers==OldCenters));
if EqualNum == InDim*ClusterNum,
break,
end
end
% 根据各聚类中心之间的距离确定各隐节点的扩展常数(宽度)
AllDistances = dist(Centers',Centers); % 计算隐节点数据中心间的距离(矩阵)
Maximum = max(max(AllDistances)); % 找出其中最大的一个距离
for i = 1:ClusterNum % 将对角线上的 0 替换为较大的值
AllDistances(i,i) = Maximum+1;
end
spread = Overlap*min(min(AllDistances)'); % 以隐节点间的最小距离作为扩
展常数
%spread = Overlap*min(AllDistances)' % 以隐节点间的最小距离作为扩展常
数
% 训练与测试
net = newrbe(p,t,spread);
a = sim(net,p); % 测试 - 输出为预测值
err1 = sum((t-a).^2); % 训练误差的平方和