public static ArrayList<String> closedSystem(ArrayList<Object> parameters)
	{
		ArrayList<String> output = new ArrayList<String>();
	
		String[] processTimes = ((String)parameters.get(csMU)).split(",");
		for(int i = 0; i < processTimes.length; i++)
			processTimes[i] = processTimes[i].trim();
		
		double z = (Double)parameters.get(Z);

		ArrayList<Double> lambdas = new ArrayList<Double>();
		ArrayList<Double> mus = new ArrayList<Double>();
		ArrayList<Double> coefficients = new ArrayList<Double>();
		ArrayList<Double> pks = new ArrayList<Double>();
		
		for(int i = 0; i < processTimes.length; i++)
		{
			lambdas.add((processTimes.length - i)/z);
			mus.add(1/Double.parseDouble(processTimes[i]));
		}
		
		coefficients.add(lambdas.get(0) / mus.get(0));
		double sum = 1 + coefficients.get(0);
		for(int i = 1; i < processTimes.length; i++)
		{
			coefficients.add(coefficients.get(i-1)* (lambdas.get(i) / mus.get(i)));
			sum += coefficients.get(i);
		}
		
		double p0 = 1/sum;
		
		pks.add((lambdas.get(0) / mus.get(0)) * p0);
		for(int i = 1; i < processTimes.length; i++)
			pks.add((lambdas.get(i) / mus.get(i)) * pks.get(i-1));
		
		double u = 1 - p0;
		double n = 0.0;
		double x = 0.0;
		for(int i = 0; i < pks.size(); i++)
		{
			n += ((i+1) * pks.get(i));
			x += (mus.get(i) * pks.get(i));
		}
		double r = n/x;
		
		output.add(closedSystemOutputStrings[0] + ": " + round(z));
		for(int i = 0; i < processTimes.length; i++)
			output.add(closedSystemOutputStrings[1] + ": " + (i+1) + ": " + round(Double.parseDouble(processTimes[i])));
		for(int i = 0; i < lambdas.size(); i++)
			output.add(closedSystemOutputStrings[2] + (i) + ": " + round(lambdas.get(i)));
		for(int i = 0; i < mus.size(); i++)
			output.add(closedSystemOutputStrings[3] + (i+1) + ": " + round(mus.get(i)));
		output.add(closedSystemOutputStrings[4] + "0: " + round(p0));
		for(int i = 0; i < pks.size(); i++)
			output.add(closedSystemOutputStrings[4] + (i+1) + ": " + round(pks.get(i)));
		output.add(closedSystemOutputStrings[5] + ": " + round(u) + " (" + round(u*100) + "%)");
		output.add(closedSystemOutputStrings[6] + ": " + round(n));
		output.add(closedSystemOutputStrings[7] + ": " + round(x));
		output.add(closedSystemOutputStrings[8] + ": " + round(r));
		
		return output;
	}