Beispiel #1
0
        public void sendToConnection(SItem newItem)
        {
            if (Connections == null || !Connections.Any())
            {
                return;
            }
            var rand1 = rand.NextDouble();
            var prob  = Connections.OrderBy(x => x.Item2);

            foreach (Tuple <Activity, double> tup in prob)
            {
                if (rand1 <= tup.Item2)
                {
                    tup.Item1.FilaEntrada.Add(newItem);
                    return;
                }
            }
        }
Beispiel #2
0
        SItem AddItemToFilaProcesso(SItem newItem, double tempo)
        {
            var ultimoItem = Resultado.OrderByDescending(x => x.Fim).FirstOrDefault();

            if (ultimoItem == null)
            {
                newItem.Fim = newItem.Inicio + tempo;
                return(newItem);
            }
            if (ultimoItem.Fim < newItem.Inicio)
            {
                TempoOcioso += newItem.Inicio - ultimoItem.Fim;
            }
            else if (ultimoItem.Fim > newItem.Inicio)
            {
                TempoEspera   += ultimoItem.Fim - newItem.Inicio;
                newItem.Inicio = ultimoItem.Fim;
            }
            newItem.Fim = newItem.Inicio + tempo;
            return(newItem);
        }