最好给出代码和运行结果,一会就要上课讲了,急
#include
#include
double function(double q);
int main()
{
int Q=3000,T=3,d=1000,s=2,N=36500;
int K=N,I=0,C=0,flag=0;
while(flag==0)//当运送的时间间隔大于模拟中剩下的天数时,才进行运送货物
{
for(int i=1;i<=N;i+=T)//每T天进行一次货物运输
{
I=I+Q;
C=C+d;//计算进货后的存储量,计算此次进货的费用
for(int j=1;j<=T;j++)//在一个周期内进行存储量总费用的计算
{
double q=rand()/(RAND_MAX+1.0);
double qi;
qi=function(q);//需求量
I=I-qi;//库存量
if(I<=0)
I=0;
else//还有库存时需要进行存储费用的计算
C=C+I*s;
}
K=K-T;
if(T==K)//如果运送时间间隔等于模拟中剩下的天数,无需进货
{
flag==1;
break;
}
}
printf("%lf",C*1.0/N);
return 0;
}
}
double function(double q)
{
double qi;
if(q>=0&&q<0.01)
qi = (q+0.2)*5000;
else if(q>=0.01&&q<0.03)
qi = (q+0.2)*5000;
else if(q>=0.03&&q<0.08 )
qi = (q+0.545)*2000;
else if(q>=0.08&&q<0.20)
qi = (q+1.42)*833.33;
else if(q>=0.20&&q<0.40)
qi = (q+2.5)*500;
else if(q>=0.40&&q<0.67)
qi = (q+3.515)*370.37;
else if(q>=0.67&&q<0.85)
qi = (q+2.12)*555.55;
else if(q>=0.85&&q<0.93)
qi = (q+0.47)*1250;
else if(q>=0.93&&q<0.97)
qi = (q-0.23)*2500;
else
qi= (q-0.6)*5000;
return qi;
}
基于new BIng的修改:
您可以通过修改function函数来按照概率产生需求量。您可以使用累积分布函数(CDF)来实现这一点。根据您之前提供的需求量和出现概率的数据,我们可以计算出每个需求量的累积概率。然后,我们可以使用随机数q来确定需求量。
下面是一个修改后的function函数,它使用累积分布函数来按照概率产生需求量:
#include <stdio.h>
#include <stdlib.h>
double function(double q);
int main()
{
int Q=3000,T=3,d=1000,s=2,N=36500;
int K=N,I=0,C=0,flag=0;
while(flag==0)//当运送的时间间隔大于模拟中剩下的天数时,才进行运送货物
{
for(int i=1;i<=N;i+=T)//每T天进行一次货物运输
{
I=I+Q;
C=C+d;//计算进货后的存储量,计算此次进货的费用
for(int j=1;j<=T;j++)//在一个周期内进行存储量总费用的计算
{
double q=rand()/(RAND_MAX+1.0);
double qi;
qi=function(q);//需求量
I=I-qi;//库存量
if(I<=0)
I=0;
else//还有库存时需要进行存储费用的计算
C=C+I*s;
}
K=K-T;
if(T==K)//如果运送时间间隔等于模拟中剩下的天数,无需进货
{
flag==1;
break;
}
}
printf("%lf",C*1.0/N);
return 0;
}
}
double function(double q)
{
double qi;
if (q >= 0 && q < 0.01)
qi = 1049.5;
else if (q >= 0.01 && q < 0.03)
qi = 1149.5;
else if (q >= 0.03 && q < 0.08)
qi = 1249.5;
else if (q >= 0.08 && q < 0.20)
qi = 1349.5;
else if (q >= 0.20 && q < 0.47)
qi = 1449.5;
else if (q >= 0.47 && q < 0.74)
qi = 1549.5;
else if (q >= 0.74 && q < 0.92)
qi = 1649.5;
else if (q >= 0.92 && q < 1)
qi = 1749.5;
else
qi = 1849.5;
return qi;
}
不提前备课,现在搞这些