public void averageParametersSyn(int T) 
	{
		backup = params;
		double[] avgParams = new double[size];
		for (int i = 0; i < size; ++i) {
			avgParams[i] = (params[i] * (T+1) - total[i])/T;			
		}		
		params = avgParams;
		
		backupL = paramsL;
		double[] avgParamsL = new double[sizeL];
		for (int i = 0; i < sizeL; ++i) {
			avgParamsL[i] = (paramsL[i] * (T+1) - totalL[i])/T;			
		}		
		paramsL = avgParamsL;


		backupU = U;
		double[][] avgU = new double[rank][N];
		for (int i = 0; i < rank; ++i)
			for (int j = 0; j < N; ++j) {
				avgU[i][j] = (U[i][j] * (T+1) - totalU[i][j])/T;
			}
		U = avgU;
		
		backupV = V;
		double[][] avgV = new double[rank][M];
		for (int i = 0; i < rank; ++i)
			for (int j = 0; j < M; ++j) {
				avgV[i][j] = (V[i][j] * (T+1) - totalV[i][j])/T;
			}
		V = avgV;
		
		backupW = W;
		double[][] avgW = new double[rank][D];
		for (int i = 0; i < rank; ++i)
			for (int j = 0; j < D; ++j) {
				avgW[i][j] = (W[i][j] * (T+1) - totalW[i][j])/T;
			}
		W = avgW;
	}