系统建模与仿真作业

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作业一:统计试验法解决报童问题

1.问题提出

报童问题是决策方面的一个简单例子。对一个报童来说,他每天由报社买来报纸,然后到街上去卖,当然他希望获得最大的利润。如果把报童问题看作一个系统,那么报纸、顾客、报童和利润就成了该系统的重要组成部分。问题在于,根据市场需求,报童寻求一个什么样的定货法则或策略才能使他所获得的利润最大。因为定货多了,如果市场需求小,卖不了将导致利润下降,甚至亏本;定货少了,如果市场需求量大,又失去了赚钱的机会。这样一来,定货法则或定货策略就成了报童能否赚取最大利润的关键。当然,最好是每天需要多少份就定多少份,但市场需求量是一个随机变量,这就需要每天用统计方法作出决策。

报童以每份0.5元的价格买进报纸,以0.8元的价格出售。根据长期统计,报童根据以前的卖报记录知道,每天的需求量有几种可能及出现的概率。对现有数据分析,得出报童每天最佳买进报纸量,使报童的平均总收入最大。

2.模型建立与求解

假定,B n —当天买进或订购的报纸数量

S n—当天社会需要报纸的数量,显然,它是一个随机变量

D n —当天卖掉的报纸数量

再假定,报童每天买进和卖出每份报纸的价格分别用P B和P s表示,且

P S >P B ,即卖出价大于买入价,则第n 天的利润为

P n=s n P s-B n P B

报童决定:当天订购报纸的数量等于前一天的市场需求量,即

B n=D n-1

而当天卖掉的报纸的数量n s 则由以下两个条件来决定

D n W B 时,S n=D n

D n > B n 时,s n=B n

即是说,如果当天订购的报纸的数量大于需求量,当天卖掉的报纸的数量只能等于需求量;如果当天买的报纸的数量小于需求量,即当天卖掉的报纸的数量

等于当天订购量和当天需求量二者中的小者

现在的问题是,前一天的需求量如何决定。报童决定利用过去一年的统计数字确定D n-1。报童根据以前的卖报记录知道,每天的需求量有以下几种可能:40 份,41份,42份,43份,44份,45份,46份;并且统计出了相对频数,得到如右表的一组数据。

需求量D n 40 41 42 43 44 45 46

相对频数P n 0.05

0.1 0.2 0.3 0.15

0.1 0.1

其需求量的平均值D n=E i P=43. 10

最后,报童做了一个轮盘,并将其分成了七份,每份的大小分别等于每个需求量对应的频数,即需求量分别为40, 41,…,46份报纸时,其轮盘上对应的面积分别为

0.05,0.1,…,0.1类推。

这样,报童每天去订货之前转一次轮盘,指针所指的数量就作为前一天的需求量D n-1 o假定,第一天转了一次,D n-1=45,即D0=45。作为第二天买报的依据;第二天又转了一次,D1 =44表示当天需求量,说明这一天订购44份,由于B n>D n, 所以只卖掉44份,即S n=D n o ............................. 第六天又转了一次,D5 =41表示当天的需求

量,说明这一天订购40份,由于B n

3•实验结果

报童问题的10天的仿真结果

S n P n EP n

44 12.7 12.7

43 12.4 25.1

44 12.1 37.2 40 11.0 48.2

40

12.0 60.2

B S p pn*

45 4412.712.7

4344 4312-425-1

424J 4212 A37_2

42 4011-048,2

4140 40丄2.0

4341 4112-372-5

4143 4111.393.a

4241 4丄12.396.1

4&42 4212.G103.7

4346 4311.4120.1

[Press anv key to continue

4nr

'E:\L\Debu g\zcupei.e…L 1=0

表采用不同的决策准则时报童所获得的利润

附录程序

#i nclude

#in clude

#defi ne N 17 〃天数#defi ne Ps 0.8 //卖出价#defi ne Pb 0.5 //进货价

int ran dom() {

int Dn;

float temp;

temp=ra nd()*100/(float)RAND_M AX;

if(temp<5)

Dn=40;

else if(temp<15)

Dn=41;

void main() {

int D[N+1],B[N+1],S[N+1]; int i;

double P[N+1]; double pn=0; int j; int a=0;

printf("D B S P pn\n"); for(i=0; i<=N; i++)

{

D[i]=random(); }

for(i=0; i<=N; i++)

{

D[i]=random();

/////////////////////////////////////////////////

if(D[i]

S[i]=D[i]; else

S[i]=B[i]; if(i!=0)

{

P[i]=S[i]*Ps-B[i]*Pb; pn+=P[i];

/***1*****B n =D n-1************ ***/

// if(i!=N) B[i+1]=D[i];

D n-1+D n-2)/2*********/

/* if(i==0)B[i+1]=D[i]; if(i!=N)

else if(temp<35)

Dn=42; else if(temp<65)

Dn=43; else if(temp<80)

Dn=44; else if(temp<90)

Dn=45;

else

Dn=46; return

Dn;

}

43

B[i+2]=(D[i]+D[i+1])/2;*/

3******

n =

// B[i]=43;

/***4****B n =(D o +D i +…+D n-i )]/n

for(j=0,a=0;j

{

a=a+D[j]; }

if(i!=0)

B[i]=a/i

;

printf("%d %d %d %.1f %. 1f\n", D[i],B[i],S[i],P[i],pn);

/***2***B n =

相关文档
最新文档