对我来说,我有一个非常奇怪但非常重要的问题。所以如果你有一些免费的会议记录 - 请阅读下一句话。
我的任务是:为路上的入站和出站车辆生成值(时间)。而且,从现实世界来看,我有一些变量:道路长度(2000米),av.l。汽车(6米),实验时间(12小时),进出的交通强度(1小时内的汽车数量)。
我需要将所有这些变量转换为机器,知道循环中的时间等于10个单位。步入循环为1。
10 units = 12 hours
1 units = 1.2 hours (72 minutes)
1 minutes = 0.013888..
所以我必须将所有强度乘以1.2?或不? 此外,我不知道如何输入道路的长度到程序。我应该输入2000吗? 如果可以,请你帮助我。
以下是生成随机数的函数
static double RandTimeIn(Random ran, int lambdaMu)
{
double t = 0, r = 0;
r = ran.NextDouble();
t = (-1) * Math.Log(r, Math.E) / lambdaMu;
t *= 60.0 / 72.0;
return t;
}
static double RandTimeOut(Random ran, int Mu) //t from [1.5; 12]
{
double t = 0, r = 0;
t = 1.5 + ran.NextDouble() * (12.0 - 1.5);
t *= 1.0/72.0;
return t;
}
主池:
//step=1.0; T=10.0;
for (double i = step; i <= T; i += step)
{...
tin = RandTime(ran, lambdaTat3);
Tin += tin;
...
CarCount=333; //2000/6. Is it right????? Maybe 333/6
if (CarCount3 < CarCount) //if the road is not full
{...
CarCount3++;
tInArrTat1.Add(Tin);
tout = RandTimeOut(ran, mu3);
Tout = Tin + tout;
...}
else {Error++;}
}
我想知道我必须在道路长度和物体长度上输入哪些变量。
答案 0 :(得分:1)
没有真正预定义的方法将现实世界数据转换为完美的虚拟数据。
这实际上取决于你想要从数据中获得什么(更具体地说,你想要答案的准确程度以及算法的效率),如果你说话的话,输入的大小也是如此一天(或12小时),我不会这么认为(但这只是猜测)。类型double
为大多数实际应用提供了最佳精度(请注意浮点错误,如果您不熟悉,请务必查看)。如果您需要更多(意思是非常精确),请查看BigInt
和BigRational
(也许)。 WARNIGN,如果您不需要精确度,这些很可能会成为一种麻烦。使用这些对我的应用程序感觉有点过分。
如果你一般说话,那么你要做的就是坚持一个标准(意味着做你认为必要的事情),接下来要做的就是确保你坚持任何单位(标准)你决定使用。
(ASSUME /
表示&#34;或&#34;)从数学角度讲,您可以将所有长度保持为米,并分别遵守每单位米/车或米/车每小时的速度和频率保持简单。如果你想要按单位测量,只需要除以10,如果你想按小时除以12除以12。因为你按单位/小时计算了所有内容,那么你所要做的就是除以速度来得到时间单位/小时分别表示汽车在道路长度上停留的时间(如果以该平均速度行驶)。