一个报童从报刊发行中心订报后零售
源代码在线查看: baotong.m
%计算机仿真作业三--报童问题--(概率统计分析问题)
%仿真天数为300天
close all
clear all
%k=round(1000*rand(1,300));
%随机生成300个在区间[0,1000]均匀分布的整数,表示仿真分析研究的天数为300天
%k表示报童每天能卖出的报纸的数量,设上限为1000,
%k=round(1000*normrnd(0.5,0.3,1,300));
%随机生成300个在区间[200,800]符合均值为500,方差为500的高斯分布的整数,
k=round(1000*exprnd(0.5,300,1));
%随机生成300个满足均值为500的负指数分布的整数
a=1; %每卖一份报纸可赚的钱数
b=0.5; %每退一份报纸要赔的钱数
z=(1:1000);%给定一天的订报量从1到1000
%损失模型
c=zeros(1,1000);%每个订报量对应的损失
for i=1:1000
c1(i)=b*(z(i)*length(find(k %c1(i)是30天内,因供过于求所造成的损失
%供过于求的天数是length(find(k %在这些天内,总共的进货量是z(i)*length(find(k %卖出去的货量是sum(k(find(k %所以30天内,多进的货的量是z(i)*length(find(k c2(i)=a*sum(k(find(k>=z(i))))-a*z(i)*length(find(k>=(z(i))));
%c2(i)是30天内,因供不应求所造成的损失
%供不应求的天数是length(find(k>=(z(i))))
%在这些天内,若进货刚好满足需求,应该赚的钱数是a*sum(k(find(k>=z(i))))
%但实际赚的钱数是实际的进货量z(i)*length(find(k>=(z(i))))乘以a
c(i)=1/300*(c1(i)+c2(i));
%对于一个确定的订报量z(i)(从1到1000的遍历),它的30天内的平均损失
end
subplot(2,1,1)
plot(z,c);%画出订报量与损失钱数的关系图
title('负指数分布,订报量与损失钱数关系图')
xlabel('每天的订报量')
ylabel('损失钱数')
min_avelost_best_buy=z(find(c==min(c)))%使30天平均损失最小的最佳订报量
min_avelost=min(c) %30天内采用最佳订报量时的最小平均损失
%收益模型
g=zeros(1,1000);%每个订报量对应的收益数
for i=1:1000
g1(i)=a*sum(k(find(k %g1(i)是30天内,供过于求时所收益的钱数
%供过于求的天数是length(find(k %这30天内,卖出去的货量是sum(k(find(k %卖出去的货收到钱数是a*sum(k(find(k %而在这些天内,总共的进货量是z(i)*length(find(k %多进的货的量是z(i)*length(find(k %每份多进报要赔b元,未卖出去的报总应赔b*z(i)*length(find(k %所以这30天内总的收益的钱数=卖出去的报收到的钱数-未卖出的应赔的钱数
g2(i)=a*z(i)*length(find(k>=(z(i))));
%g2(i)是30天内,供不应求时所收益的钱数
%供不应求的天数是length(find(k>=(z(i))))
%在这些天内,赚的钱数是进货量z(i)*length(find(k>=(z(i))))乘以a
g(i)=1/300*(g1(i)+g2(i));
%对于一个确定的订报量z(i)(从1到1000的遍历),它的30天内的平均收益钱数
end
subplot(2,1,2)
plot(z,g,'r');%画出订报量与收益钱数的关系图
title('负指数分布,订报量与收益钱数关系图')
xlabel('每天的订报量')
ylabel('收益钱数')
max_aveearn_best_buy=z(find(g==max(g)))%使30天平均收益最大的最佳订报量
max_aveearn=max(g) %30天内采用最佳订报量时的最大平均收益