public override void Accept(Call call, double timer, Journal journal, Statistic statistic, Element source) { //конец интервала предыдущего состояния //становится началом текущего statistic.ChangeBufferInterval(); //конец текущего интервала устанавливается по таймеру statistic.SetBufferInterval(timer); //добавляется длина данного интервала и число заявок в ИПВ statistic.AddBufferInterval(buffer_node, buffer_count); buf_interval[0] = buf_interval[1]; buf_interval[1] = timer; statistic.AddBufferInterval(buffer_node, buffer_count, buf_interval[0], buf_interval[1]); //проверка, нет ли уже этой заявки в ИПВ if (!this.Contain(call)) { Act_Buffer.Add(call); buffer_count++; } //генерация события повторного обращения за обслуживанием this.GenerateEvent(call, timer, journal); }
//в статистку заносится длительность //последнего состояния ИПВ на момент //окончания моделирования public void SetLastInterval(double timer, Statistic statistic) { statistic.ChangeBufferInterval(); statistic.SetBufferInterval(timer); statistic.AddBufferInterval(buffer_node, buffer_count); }
//удаление заявки из буфера public void Remove(Call call, double timer, Statistic statistic) { //конец интервала предыдущего состояния //становится началом текущего statistic.ChangeBufferInterval(); //конец текущего интервала устанавливается по таймеру statistic.SetBufferInterval(timer); //добавляется длина данного интервала и число заявок в ИПВ statistic.AddBufferInterval(buffer_node, buffer_count); //добавляется статистика для маргинальных распределений buf_interval[0] = buf_interval[1]; buf_interval[1] = timer; statistic.AddBufferInterval(buffer_node, buffer_count, buf_interval[0], buf_interval[1]); buffer_count--; Act_Buffer.Remove(call); }