public F24RotatedHybridComposition4(int dimension, double bias, String file_data, String file_m) throws JMetalException { super(dimension, bias, FUNCTION_NAME); // Note: dimension starts from 0 m_o = new double[NUM_FUNC][mDimension]; m_M = new double[NUM_FUNC][mDimension][mDimension]; m_testPoint = new double[mDimension]; m_testPointM = new double[mDimension]; m_fmax = new double[NUM_FUNC]; m_w = new double[NUM_FUNC]; m_z = new double[NUM_FUNC][mDimension]; m_zM = new double[NUM_FUNC][mDimension]; // Load the shifted global optimum Benchmark.loadMatrixFromFile(file_data, NUM_FUNC, mDimension, m_o); // Load the matrix Benchmark.loadNMatrixFromFile(file_m, NUM_FUNC, mDimension, mDimension, m_M); // Initialize the hybrid composition job object theJob.numberOfBasicFunctions = NUM_FUNC; theJob.numberOfDimensions = mDimension; theJob.C = 2000.0; theJob.sigma = m_sigma; theJob.biases = m_func_biases; theJob.lambda = m_lambda; theJob.shiftGlobalOptimum = m_o; theJob.linearTransformationMatrix = m_M; theJob.w = m_w; theJob.z = m_z; theJob.zM = m_zM; // Calculate/estimate the fmax for all the functions involved for (int i = 0; i < NUM_FUNC; i++) { for (int j = 0; j < mDimension; j++) { m_testPoint[j] = (5.0 / m_lambda[i]); } Benchmark.rotate(m_testPointM, m_testPoint, m_M[i]); m_fmax[i] = Math.abs(theJob.basicFunc(i, m_testPointM)); } theJob.fmax = m_fmax; }