资源简介
报童问题的matlab仿真分析,进行数学建模,并程序仿真。
代码片段和文件信息
%报童问题(负指数分布)
%几个参数:
%卖出报纸挣a元,退回报纸赔b元;
%卖报量y订报量z,订报量上限z_up;
%观察期的总天数t用于积累天数的ti;
%总的平均损失量ave_loss,供过于求损失loss1供小于求损失loss2ave_loss=loss1+loss2;
%最佳订报量superz最小损失量ave_loss_min;
function [superzave_loss_min]=expi(tz_upab)
mu=input(‘输入负指数分布的参数mu‘); %输入负指数分布的参数mu,默认为1000
if isempty(mu)
mu=1000;
end
y=round((exprnd(mu1t))); %生成最大订报量以内的均匀随机卖报量y(矢量)
ave_loss=zeros(1z_up); %各种订报量情况下的平均损失统计(z_up个元素的矢量)
for z=1:z_up %外层循环,z_up种情况,各种订报量
loss1=0;
loss2=0;
for ti=1:t %内层循环,一共实验多少天
if z>y(ti) %如果供大于求,说明要退报,赔钱
loss1=loss1+b*(z-y(ti));
elseif z loss2=loss2+a*(y(ti)-z);
else %如果订报量与卖报量相同,损失不变
loss1=loss1;
loss2=loss2;
end
end
ave_loss(z)=(loss1+loss2)/t; %求每天的平均损失量
end
ave_loss_min=min(ave_loss) %显示最后的平均最小损失
superz=find(ave_loss==ave_loss_min) %记录在给定a和给定b条件下的最佳订报量
figure(1) %画给定a和b的时候的最佳订报量和最小平均损失关系曲线
plot(1:z_upave_loss‘b‘)
grid on
axis([010000300])
xlabel(‘订报量/份‘)
ylabel(‘亏损/元‘)
title(‘亏损与订报量的关系曲线‘)
figure(2) %画每份报纸收益与最佳订报量的关系曲线
z_a=zeros(1100);
n1=1;
for a_temp=0:0.01:1 %收益a由0元递增至1元
for z=1:z_up %外层循环,z_up种情况,各种订报量
loss1=0;
loss2=0;
for ti=1:t %内层循环,一共实验多少天
if z>y(ti) %如果供大于求,说明要退报,赔钱
loss1=loss1+b*(z-y(ti));
elseif z loss2=loss2+a_temp*(y(ti)-z);
else %如果订报量与卖报量相同,损失不变
loss1=loss1;
loss2=loss2;
end
end
ave_loss(z)=(loss1+loss2)/t; %计算平均损失
end
ave_loss_min=min(ave_loss);
z_a(n1)=find(ave_loss==ave_loss_min1‘first‘); %将每种a的最佳订报量放入z_a矢量
n1=n1+1;
end
a_temp=[0:0.01:1];
plot(a_tempz_a‘b‘)
grid on
axis([0101000])
xlabel(‘每份报纸净赚/元‘)
ylabel(‘最佳订报量/份‘)
title(‘每份报纸净赚与最佳订报量的关系曲线‘)
figure(3) %每份报纸赔偿与最佳订报量的关系曲线
z_b=zeros(1100);
n2=1;
for b_temp=0:0.01:1 %赔偿b由0元递增至1元
for z=1:z_up %外层循环,z_up种情况,各种订报量
loss1=0;
loss2=0;
for ti=1:t
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4415 2007-06-02 21:19 paperkid\expi.m
文件 4475 2007-06-02 17:22 paperkid\gauss.m
文件 1105 2007-06-02 17:23 paperkid\main.m
文件 4390 2007-06-02 15:18 paperkid\uniform.m
目录 0 2008-05-31 01:03 paperkid
----------- --------- ---------- ----- ----
14603 6
评论
共有 条评论