/// <summary> /// Tempo de Espera. /// </summary> /// <returns>Tempo de espera medio dos processos.</returns> /// <param name="plotableProcesses">Lista escalonada.</param> /// <param name="totalProcess">Total de processos.</param> public static double WaitTime(List <PlotableProcess> plotableProcesses, int totalProcess) { double waitTime = 0; if (totalProcess > 0) { PlotableProcess anterior = plotableProcesses[0]; for (int i = 0; i < plotableProcesses.Count; i++) { PlotableProcess atual = plotableProcesses[i]; if (anterior.name != atual.name) { List <PlotableProcess> aux = plotableProcesses.GetRange(0, i); PlotableProcess ultimaExec = aux.FindLast((obj) => obj.name == atual.name); double wait = 0; if (ultimaExec != null) { wait = (atual.ExecTime - ultimaExec.ExecTime) - 1; } else { wait = (atual.ExecTime - atual.arrivalTime); } waitTime += wait; } anterior = atual; } } return(waitTime / Convert.ToDouble(totalProcess)); }
protected void AtualizeAnimCallBack(PlotableProcess process) { List <PlotableProcess> list = GetProcessFromCreation(); list.Find((obj) => obj.name == process.name).attColor = list.Find((obj) => obj.name == process.name).RunColor; plot.AnimateData(list, false, "Entrada", isAnim: true); list.Find((obj) => obj.name == process.name).attColor = list.Find((obj) => obj.name == process.name).WaitingColor; }
public static double ResponseTime(List <PlotableProcess> plotableProcesses, List <Process> processes) { int soma = 0; for (int i = 0; i < processes.Count; i++) { PlotableProcess aux = plotableProcesses.Find((obj) => obj.name.Equals(processes[i].name)); soma = soma + (aux.ExecTime - aux.arrivalTime); } return(Convert.ToDouble(soma) / processes.Count); }
/// <summary> /// Inicializar dados escalonados. /// </summary> /// <param name="processes">Processes.</param> private void SetUtilizationData(List <PlotableProcess> processes) { for (int index = 0; index < processes.Count; index++) { PlotableProcess process = processes[index]; IntervalBarItem item = new IntervalBarItem { Start = process.ExecTime - 0.5f, End = process.ExecTime + 0.5f, CategoryIndex = YLabel.IndexOf(process.name), //Title = process.Name, Color = process.attColor, }; intervalBarSeries.Items.Add(item); } }