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

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

题目:                                    

                                                 报童问题

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

销售量

500

600

700

概率p(d)

0.6

0.2

0.2

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

问题分析:

由题意可知:

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

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

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

订购量 1 2 3 ...... 9998 9999 10000 总利润
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对报童问题进行求解.希望我的解释能够帮助到你们,

猜你喜欢

转载自blog.csdn.net/zr147258369/article/details/81481527