我想成立params.arrival_rate每3小時sim_time的。這包括一天,但我想延長到 N 天。因此,這 N 天的每個 3 小時(在下面的代碼中以分鐘為單位)的時間段,params.arrival_rate 都取一個值。這樣做的任何最佳功能?
我的實際代碼如下所示:
if(sim_time >= 0 && sim_time <= 180) //00:00 - 03:00
{
params.arrival_rate = 10;
}
else if(sim_time > 180 && sim_time <= 360) //03:00-06:00
{
params.arrival_rate = 9;
}
else if(sim_time > 360 && sim_time <= 540) //06:00-09:00
{
params.arrival_rate = 10.5;
}
else if(sim_time > 540 && sim_time <= 720) //09:00-12:00
{
params.arrival_rate = 12;
}
else if(sim_time > 720 && sim_time <= 900) //12:00-15:00
{
params.arrival_rate = 11.5;
}
else if(sim_time > 900 && sim_time <= 1080) //15:00-18:00
{
params.arrival_rate = 11;
}
else if(sim_time > 1080 && sim_time <= 1260) //18:00-21:00
{
params.arrival_rate = 10.5;
}
else if(sim_time > 1260 && sim_time <= 1440) //21:00-24:00
{
params.arrival_rate = 9;
}
else //by default
{
params.arrival_rate = 9;
}
非常感謝。
uj5u.com熱心網友回復:
假設您每天都想要相同的模式,那么將時間取模 1440 分鐘就足夠了:
int day_time = sim_time % 1440;
int day_no = sim_time / 1440;
現在您可以使用day_time來獲取當天的時間并使用它來計算params.arrival_rate。day_no將包含天數(從 0 開始)。
作為進一步的增強,考慮使用陣列作為到達率而不是長的 if-elseif 鏈:
const double arrival_rates[] = { 10, 9, 10.5, 12, 11.5, 11, 10.5, 9 };
params.arrival_rate = arrival_rates[day_time / (3 * 60)];
括號內的計算會將 day_time 向下舍入到最近的三小時塊的開始。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/313542.html
上一篇:列印字串所需的最短時間
