灰色预测+马尔可夫链组合模型案例 农产品月销量预测 数学建模竞赛题目+Python源代码_第1页
灰色预测+马尔可夫链组合模型案例 农产品月销量预测 数学建模竞赛题目+Python源代码_第2页
灰色预测+马尔可夫链组合模型案例 农产品月销量预测 数学建模竞赛题目+Python源代码_第3页
灰色预测+马尔可夫链组合模型案例 农产品月销量预测 数学建模竞赛题目+Python源代码_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

灰色预测+马尔可夫链案例:农产品月销量预测问题背景:某农产品批发市场需预测某水果未来6个月的月销量,历史数据仅12个月(样本量小),且受季节、天气等随机因素影响,销量波动大(如夏季销量骤增,冬季骤减)。数据:过去12个月销量(吨):120/110/130/150/200/250/230/180/160/140/130/120。要求:用灰色预测GM(1,1)捕捉趋势,用马尔可夫链修正随机波动,输出未来6个月预测值及误差范围,对比单一灰色预测的精度提升。7.灰色预测+马尔可夫链代码:农产品月销量预测importnumpyasnpimportpandasaspdimportmatplotlib.pyplotasplt#1.数据准备(过去12个月销量,单位:吨)sales=np.array([120,110,130,150,200,250,230,180,160,140,130,120])months=np.arange(1,13)n=len(sales)#2.灰色预测GM(1,1)defgrey_prediction(data,forecast_steps):#累加生成序列x1=np.cumsum(data)#构造矩阵B和向量YB=np.zeros((n-1,2))Y=np.zeros((n-1,1))foriinrange(n-1):B[i,0]=-(x1[i]+x1[i+1])/2B[i,1]=1Y[i,0]=data[i+1]#求解参数a,bB_T=B.Ta,b=np.dot(np.dot(np.linalg.inv(np.dot(B_T,B)),B_T),Y)#预测模型x1_pred=(data[0]-b/a)*np.exp(-a*np.arange(n+forecast_steps))+b/a#还原预测值x0_pred=np.zeros(n+forecast_steps)x0_pred[0]=data[0]foriinrange(1,n+forecast_steps):x0_pred[i]=x1_pred[i]-x1_pred[i-1]returnx0_pred[:n],x0_pred[n:]#拟合值和预测值#灰色预测未来6个月grey_fit,grey_forecast=grey_prediction(sales,6)#3.马尔可夫链修正defmarkov_correction(observed,predicted,forecast_steps):#计算残差residuals=observed-predicted[:len(observed)]#划分状态(3个状态:低、中、高)states=3bins=np.percentile(residuals,[i*100/statesforiinrange(1,states)])#状态转移矩阵trans_matrix=np.zeros((states,states))prev_state=Noneforrinresiduals:state=np.digitize(r,bins)ifprev_stateisnotNone:trans_matrix[prev_state,state]+=1prev_state=state#归一化转移矩阵trans_matrix=trans_matrix/np.sum(trans_matrix,axis=1,keepdims=True)#预测残差状态last_residual=residuals[-1]last_state=np.digitize(last_residual,bins)forecast_states=[]for_inrange(forecast_steps):next_state=np.random.choice(states,p=trans_matrix[last_state])forecast_states.append(next_state)last_state=next_state#生成修正残差(取对应状态的均值)state_residuals=[residuals[np.digitize(residuals,bins)==i]foriinrange(states)]state_means=[np.mean(sr)forsrinstate_residuals]forecast_residuals=[state_means[s]forsinforecast_states]returnforecast_residuals#修正预测结果residuals_correction=markov_correction(sales,grey_fit,6)final_forecast=grey_forecast+residuals_correction#4.结果展示plt.figure(figsize=(12,6))plt.plot(months,sales,'bo-',label='历史销量')plt.plot(months,grey_fit,'r--',label='灰色拟合')forecast_months=np.arange(13,13+6)plt.plot(forecast_months,grey_forecast,'g--',label='灰色预测')plt.plot(forecast_months,final_forecast,'mo-',label='马尔可夫修正预测')plt.xlabel('月份')plt.ylabel('销量(吨)')plt.title('农产品月销量预测')plt.legend()plt.grid(True)plt.show()#输出预测值result=pd.DataFrame({'月份':[f'第{i}月'foriinforecast_months],'灰色预

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论