如何用matlab解决数学建模中的报童问题

 

        报童问题是数学建模中比较典型的一类题,运用插值拟合等基本模型,运用概率论与数理统计等背景知识,得出其报童收益模型,以获得最大利润为目的建立模型, 学会此类问题的求解很是关键,今天我就以一个例题进行简单的解释. 

题目:                                    

                                                 报童问题

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

 

销售量

500

600

700

概率p(d)

0.6

0.2

0.2

      已知当天销售不出去的报纸,将以每份0.02元的价格退还给报社,试用模拟方法确定报童每天买进多少份报纸,能使平均总收入最大?

问题分析:

由题意可知:

要使报童获利最大,则要求:max{卖出去的报纸钱+退回报社获得的钱-买进报纸的总钱数}

那么,我们首先应该确定报童订购报纸的数量分布概率,于是我们可以随机产生报童卖报的10000天的报纸订购量.用这10000天的平均收入大致确定其最大利润时的订购量.

也就是说随机生成3*10000的表格,其中每个空格表示在订购量确定,销售量随机的情况下,当天的利润;

订购量123......9998999910000总利润
500订购量为500,销售量随机的利润订购量为500,销售量随机的利润订购量为500,销售量随机的利润......订购量为500,销售量随机的利润订购量为500,销售量随机的利润订购量为500,销售量随机的利润订购量为500时,这10000天的利润和
600订购量为600,销售量随机的利润订购量为600,销售量随机的利润订购量为600,销售量随机的利润......订购量为600,销售量随机的利润订购量为600,销售量随机的利润订购量为600,销售量随机的利润订购量为600时,这10000天的利润和
700订购量为700,销售量随机的利润订购量为700,销售量随机的利润订购量为700,销售量随机的利润......订购量为700,销售量随机的利润订购量为700,销售量随机的利润订购量为700,销售量随机的利润订购量为700时,这10000天的利润和

MATLAB编程代码如下:

lr:表示利润;       lr0:表示当天随机利润;     lr1:表示10000天的总利润之和;       dgl:表示订购量;       xsl:表示销售量;

注意:

s=sum(A),按列求和.

s=sum(A,dim),按照指定为度求和.

dim=1,表示对列求和;dim=2,表示对行求和;dim=3,表示对页求和;


%生成3*10000的矩阵,行分别表示订购量为500,600,700,列表示随机产生的10000天的利润
lr=zeros(3,10000);
%订购量在500-700之间以步长为100进行循环
for dgl=500:100:700
%天数在1-10000之间以步长为1 进行循环
    for j=1:1:10000
%产生随机数,范围为0-1
        x=rand;
%所产生的随机数确定了对应的订购量
        if x<0.6
            xsl=500;
        elseif x<0.8
                xsl=600;
        else
            xsl=700;
        end
%计算利润
%销售量大于订购量,利润为 (0.05-0.03)*订购量
            if xsl>dgl
                lr0=dgl*0.02;
%销售量小于等于订购量,利润为 销售量*(0.05-0.03)-(订购量-销售量)*(0.03-0.02)
            else
                lr0=xsl*0.02-0.01*(dgl-xsl);
            end
%将利润的值赋值给3*10000的表格中每个空
            lr(dgl/100-4,j)=lr0;
        end
        end
%要确定具体订购量,则需确定这随机10000天中平均利润(总利润)在哪个订购量最大
lr1=sum(lr,2);

代码结果展示:

                                                                                    图1为产生的10000天的随机利润

                                                                                       图2为这10000天的总利润之和 

由图2看出,订购量为600时总利润最大,也就是平均利润最大.即问题得到解决.

以上就是通过MATLAB对报童问题进行求解.希望我的解释能够帮助到你们,

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值