数学建模报童问题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数学实验报告1计算机模拟实验目的:1.学习计算机模拟的基本过程与方法;2.会做简单的计算机模拟。实验内容:一、了解什么是模拟模拟就是利用物理的、数学的模型来类比、模仿现实系统及其演变过程,以寻求过程规律的一种方法。模拟的基本思想是建立一个试验模型,这个模型包含所研究系统的主要特点.通过对这个实验模型的运行,获得所要研究系统的必要信息模拟的方法:1、物理模拟:对实际系统及其过程用功能相似的实物系统去模仿。例如,军事演习、船艇实验、沙盘作业等。物理模拟通常花费较大、周期较长,且在物理模型上改变系统结构和系数都较困难。而且,许多系统无法进行物理模拟,如社会经济系统、生态系统等。2、数学模拟在一定的假设条件下,运用数学运算模拟系统的运行,称为数学模拟。现代的数学模拟都是在计算机上进行的,称为计算机模拟。计算机模拟可以反复进行,改变系统的结构和系数都比较容易。在实际问题中,面对一些带随机因素的复杂系统,用分析方法建模常常需要作许多简化假设,与面临的实际问题可能相差甚远,以致解答根本无法应用。这时,计算机模拟几乎成为唯一的选择。二、报童问题某报童以每份0.03元的价格买进报纸,以0.05元的价格出售.根据长期统计,报纸每天的销售量及百分率为销售量200210220230240250百分率0.100.200.400.150.100.05已知当天销售不出去的报纸,将以每份0.02元的价格退还报社.试用模拟方法确定报童每天买进报纸数数学实验报告2量,使报童的平均总收入为最大?[1]系统的假设:(1)模拟时间充分大;(2)报童购买报纸量介于销售量最小值与最大值之间;(3)不考虑有重大事件发生时卖报的高峰期,也不考虑风雨天气时卖报的低谷期。[2]问题分析报童购进数量应根据需求量确定,但需求量是随机的,所以报童每天如果购进的报纸太少,不够买的,会少赚钱;如果购进太多,卖不完就要赔钱,这样由于每天报纸的需求量是随机的,致使报童每天的收入也是随机的,因此衡量报童的收入,不能是报童每天的收入,而应该是他长期(几个月、一年)卖报的日平均收入。我们可以应用计算机模拟的方法在模拟时间充分大的条件下(例如10000天),模拟每天的销售量,因而确定每天应买进多少报纸才能使平均总收入达到最大值。设该问题的销售量为离散型随机变量,有分布列iipxP)()62,1(i。所谓对离散型随机变量的模拟,其实质就是通过计算机上的模拟试验来取得在真实试验下的样本值U,由分布列知U只取数值1x,2x中的某一个.对离散型随机变量的一般模拟方法如下:(1)在直线上将[0,1]区间划分成若干个子区间,其分点记为1A,2A6A,分点iA的坐标kikkpp1)6,2,1(i如下图所示:01A2A4A5A11p21pp41kkp51kkpx(2)在计算机上取伪随机数rand;(3)判定rand在x轴上所落的位置,若),(111ikkikkpprand,则可以认为的一次真实试验样本值取ix。[3]符号假设BUYMIN:每天的最小购买量BUYMAX:每天的最大购买量SIMUDAY:模拟时间sell_amount:报童销售量buy_amount:报童购买量percentage:销售百分率ave_profit:总平均利润loop_buy:当天购买量loop_day:当天时间数学实验报告3[4]模拟框图初始化:BUYMIN;BUYMAX;SIMUDAY;percentagebuy_amount=0;ave_profit=0;loop_buy=BUYMIN;sum_profit=0;loop_day=1产生随机数rand,根据rand选取sell_amountloop_day++loop_buysell_amount?sum_profit+=loop_buy*(0.05-0.03)sum_profit+=sell_amount*(0.05-0.03)+(loop_buy-sell_amount)*(0.02-0.03)buy_amount=[buy_amount,loop_buy];ave_profit=[ave_profit,sum_profit/SIMUDAYloop_daySIMUDAY?loop_buyBUYMAX?输出max(buy_amount),max(ave_profit);loop_buy++YNNYYNEND数学实验报告4[5]计算机程序:在Matlab软件包中编程,共需两个M-文件:main.m,Getprofit.m,主程序为main.m.%主文件main.m:BUYMIN=200;%每天的最小购买量BUYMAX=250;%每天的最大购买量SIMUDAY=1.0e+5;%模拟时间sell_amount=200:10:250;%销售量percentage=[0.10.30.70.850.951];%百分率buy_amount=0;ave_profit=0;forloop_buy=BUYMIN:BUYMAXsum_profit=0;forloop_day=1:SIMUDAYindex=find(percentage=rand);%产生随机数,用于决定当天的销售量sum_profit=sum_profit+GetProfit(loop_buy,sell_amount(index(1)));endbuy_amount=[buy_amount,loop_buy];%循环嵌套ave_profit=[ave_profit,sum_profit/SIMUDAY];%循环嵌套endbuy_amount(1)=[];%第一个元素置空ave_profit(1)=[];[val,id]=max(ave_profit)%显示最大平均收入valbuy=buy_amount(id)%显示在平均收入最大情况下的每天的购买量buyxlabel='每天的购买量';ylabel='平均利润';plot(buy_amount,ave_profit,'*:');%函数GetProfit.m代码:functionre=GetProfit(a,b)ifab%供不应求:报童购买量小于销售量re=a*(0.05-0.03);else%供过于求:报童购买量大于销售量re=b*(0.05-0.03)+(a-b)*(0.02-0.03);end运行结果:val=4.2801id=21buy=220数学实验报告5该结果说明当报童每天买进报纸数量为220,报童的平均总收入为最大,且最大为4.2801。三、结果分析使用计算机模拟法解决卖报童问题,在计算精度以及收敛速度问题上均能达到一个较好的效果,能有效地解决此问题。计算机模拟是运用计算机语言程序来模拟现实世界,为随机性库存问题提供了较合理的解决方法。通过本次实验,提高了我们对随机性的认知,对现实、模拟、理论推导等的了解。学习计算机模拟的基本过程与方法,会做简单的计算机模拟,提高了析问题与解决问题的能力,激发我们对于探寻科学真理的兴趣.报告人:郭舒报告时间:2010年12月7日

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功