/// <summary> /// Создание описания для открытой сети массового осблуживания с делением и слиянием требований /// </summary> /// <param name="S">Массив номеров базовых систем</param> /// <param name="J">Массив номеров интеграторов</param> /// <param name="F">Массив номеров дивайдеров</param> /// <param name="mu">Массив интенсивностей обслуживания для базовых систем</param> /// <param name="Theta">Матрица передачи</param> /// <param name="Lambda0">Интенсивность входящего потока</param> /// <param name="kappa">Массив число обслуживающих приборов в каждой базовой системе обслуживания> public DescriptionOFJQN(int[] S, int[] F, int[] J, double[] mu, int[] kappa, RoutingMatrix Theta, double Lambda0) { this.S = S; this.F = F; this.mu = mu; this.kappa = kappa; this.J = J; this.Theta = Theta; this.Lambda0 = Lambda0; }
/// <summary> /// Создает открытую сеть с делением и слиянием требований, считывая данные из файла /// </summary> /// <param name="FileName"></param> public DescriptionOFJQN(string FileName) { using (StreamReader sr = new StreamReader(FileName)) { //Индексы server-node var temp = sr.ReadLine().Split(';'); S = new int[temp.Length]; for (int i = 0; i < temp.Length; i++) { S[i] = int.Parse(temp[i], System.Globalization.CultureInfo.CreateSpecificCulture("RU-ru")); } //Индексы fork-node temp = sr.ReadLine().Split(';'); if (temp[0].Length != 0) { F = new int[temp.Length]; for (int i = 0; i < temp.Length; i++) { F[i] = int.Parse(temp[i], System.Globalization.CultureInfo.CreateSpecificCulture("RU-ru")); } } else { F = new int[0]; } //Индексы join-node temp = sr.ReadLine().Split(';'); if (temp[0].Length != 0) { J = new int[temp.Length]; for (int i = 0; i < temp.Length; i++) { J[i] = int.Parse(temp[i], System.Globalization.CultureInfo.CreateSpecificCulture("RU-ru")); } } else { J = new int[0]; } Theta = new RoutingMatrix(S.Length + J.Length + F.Length + 1, F.Length + 1); //Маршрутная матрица for (int k = 0; k < Theta.CountForker; k++) { for (int i = 0; i < Theta.Dimention; i++) { temp = sr.ReadLine().Split(';'); for (int j = 0; j < Theta.Dimention; j++) { Theta[k, i, j] = double.Parse(temp[j], System.Globalization.CultureInfo.CreateSpecificCulture("RU-ru")); } } } //Параметры систем массового обслуживания //Интенсивности обслуживания temp = sr.ReadLine().Split(';'); mu = new double[S.Length]; for (int i = 0; i < mu.Length; i++) { mu[i] = double.Parse(temp[i], System.Globalization.CultureInfo.CreateSpecificCulture("RU-ru")); } //Число обслуживающих приборов в каждой системе обслуживания temp = sr.ReadLine().Split(';'); kappa = new int[S.Length]; for (int i = 0; i < mu.Length; i++) { kappa[i] = int.Parse(temp[i], System.Globalization.CultureInfo.CreateSpecificCulture("RU-ru")); } //Интенсивность входящего потока Lambda0 = double.Parse(sr.ReadLine()); } }