question: public RotatedProblem ( Problem problem , RealMatrix rotation ) { super ( ) ; this . problem = problem ; this . rotation = rotation ; Solution solution = problem . newSolution ( ) ; center = new double [ getNumberOfVariables ( ) ] ; lowerBounds = new double [ getNumberOfVariables ( ) ] ; upperBounds = new double [ getNumberOfVariables ( ) ] ; for ( int i = 0 ; i < getNumberOfVariables ( ) ; i ++ ) { RealVariable variable = ( RealVariable ) solution . getVariable ( i ) ; center [ i ] = ( variable . getLowerBound ( ) + variable . getUpperBound ( ) ) / 2.0 ; lowerBounds [ i ] = Math . sqrt ( 2.0 ) * ( variable . getLowerBound ( ) - center [ i ] ) ; upperBounds [ i ] = Math . sqrt ( 2.0 ) * ( variable . getUpperBound ( ) - center [ i ] ) ; } }
target:  Decorates the specified problem, creating a rotated instance using the specified rotation matrix.