报童问题

2026/1/23 16:09:23

数 学 实 验 报 告

二、报童问题

某报童以每份0.03元的价格买进报纸,以0.05元的价格出售. 根据长期统计,报纸每天的销售量及百分率为

销售量 百分率

已知当天销售不出去的报纸,将以每份0.02元的价格退还报社.试用模拟方法确定报童每天买进报纸数

量,使报童的平均总收入为最大? [1] 系统的假设: (1) 模拟时间充分大;

(2) 报童购买报纸量介于销售量最小值与最大值之间;

(3)不考虑有重大事件发生时卖报的高峰期,也不考虑风雨天气时卖报的低谷期。 [2] 问题分析

[3] 符号假设

200 0.10 210 0.20 220 0.40 230 0.15 240 0.10 250 0.05 BUYMIN:每天的最小购买量 BUYMAX:每天的最大购买量 SIMUDAY:模拟时间

sell_amount:报童销售量 buy_amount: 报童购买量 percentage:销售百分率 ave_profit:总平均利润 loop_buy :当天购买量 loop_day :当天时间

[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.1 0.3 0.7 0.85 0.95 1]; % 百分率 buy_amount=0; ave_profit=0;

for loop_buy=BUYMIN:BUYMAX sum_profit=0;

for loop_day=1:SIMUDAY

1

数 学 实 验 报 告

index=find(percentage>=rand); % 产生随机数,用于决定当天的销售量 sum_profit=sum_profit+GetProfit(loop_buy,sell_amount(index(1))); end

buy_amount=[buy_amount,loop_buy]; % 循环嵌套 ave_profit=[ave_profit,sum_profit/SIMUDAY]; % 循环嵌套 end

buy_amount(1)=[]; % 第一个元素置空 ave_profit(1)=[];

[val,id]=max(ave_profit) % 显示最大平均收入val

buy=buy_amount(id) % 显示在平均收入最大情况下的每天的购买量buy xlabel='每天的购买量'; ylabel='平均利润';

plot(buy_amount,ave_profit,'*:');

% 函数GetProfit.m代码:

function re=GetProfit(a,b)

if a

else % 供过于求:报童购买量大于销售量 re=b*(0.05-0.03)+(a-b)*(0.02-0.03); end

运行结果:

val =4.2801 id =21 buy = 220

2

数 学 实 验 报 告

该结果说明当报童每天买进报纸数量为220,报童的平均总收入为最大,且最大为4.2801。

报 告 人:郭 舒

报告时间:2010年12月7日

3


报童问题.doc 将本文的Word文档下载到电脑
搜索更多关于: 报童问题 的文档
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219