库存系统不仅包括一般意义下的仓库储存系统,如商品和器材的库存管理、水库库存水量和国家矿产储备等,还包括诸如人才储备及管理广义库存系统。
一般库存系统可分为两大类,一类交确定性库存系统,另一类叫随机系统。顾客的需求也可以分成确定性的需求和随机需求两种评价库存策略的好坏一般用“费用”高低来衡量,库存的“费用”包括以下几个方面:
1.
保管费,包括仓库,设备,人力,货物保存,损坏变质等支出的费用,一般可折算每件每日或每月的消耗费用。
2.
订货费,包括货物本身价格费用,订货手续费,运费及各种额外开支。
缺货损失费,由于货物不足,供不应求而错过销售机会或停工待料造成的损失,这也包括无法估价的信誉损失等。
这里我主要想分析随机库存,确定性库存比较简单,随机库存要复杂得多,需求随机,需求时间也是随机的,到货时间也是随机的。其中,到货时间是均匀分布,需求量当然也是均匀分布,而需求时间则是指数分布函数。
建立模型:需求时间随机变量服从均值为0.1个月的指数分布概率密度函数为:D(m)= -0.1 ln
u(u为0到1之间的随机数)
其中Dm为需求时间间隔。
好的,下面贴出代码:
#include
#include
#include
#include
int unknowday()
{
int d,z = 0,y = 0,x = 0,v =
0;
double i,p,q;
do{
i = rand()/(RAND_MAX +
1.0);
p = 1/i;q = log10(p);d =
(int)(q * 30 * 0.1);
}while(d > 30);
return d;
}
int needs()
{
double i;
i = rand()/(RAND_MAX +
1.0);
if(i <= 0.167)
return 1;
if(i > 0.167 && i
<= 0.5)
return 2;
if(i > 0.5 && i
<= 0.833)
return 3;
else
return 4;
}
void main()
{
int month,day,needtime,total
= 0,keep = 0,lose = 0,book = 0,stock = 0,i,days,bookfee = 0,k
=1;
int up[9] =
{40,60,80,100,60,80,100,80,100},down[9] =
{20,20,20,20,40,40,40,60,60};
int need;
//down为上限,每天的保管费为1元,进货每件3元,进货附加费500
//keep为保管费,lose为缺货损失费,up为下限,缺货损失每件2元
//book为订货量,stock为库存量,needtime为订货到入库时间
//need为需求量,
printf("每天的保管费为1元,进货每件3元\n进货附加费500,缺货损失每件2元\n----------------------------------\n");
srand((unsigned)time(NULL));
for(i = 0;i < 9;i ++)
//9次模拟
{
for(month = 0;month <
120;month ++) //一次模拟
{
day = 0;
if(stock <
down[i])
{
book = up[i] -
stock;
bookfee = bookfee + book * 3
+ 500;
k = 0;
}
needtime =
(int)(rand()/(double)RAND_MAX*15+ 15);
days = day + unknowday(); //
unknowday()需求时间间隔
do
{
if(needtime == day&&k
== 0)
{
stock = stock +
book;
k = 1;
}
if(day == days)
{
need = needs();
if(stock >=
need)
{
stock = stock - need;
//需求量
}
else
{
stock = 0;
lose = lose +(need -
stock)*2; //缺货损失费
}
days = day + unknowday() + 1;
// unknowday()需求时间间隔
need = 0;
}
keep = keep + stock*1;
//保管费
day ++;
}while(day <=
30);
needtime = 0;
}
printf("第%d次模拟\n平均订货费:%d
平均保管费:%d 平均缺货损失费:%d
\n",i+1,bookfee/120,keep/120,lose/120);
// printf("总订货费:%d
总保管费:%d
总缺货损失费:%d\n总费用:%d\n-----------------------------------------------------\n",bookfee,keep,lose,bookfee
+ keep + lose);
bookfee = 0;book = 0;month =
0;lose = 0;keep = 0,total = 0;
}
}
运行结果正常,只是也许我定的价格方面不是很合适,所以当我想要计算利润时,总会是负数,因为在货物的保管费方面我定的价格真的是太高了。。。