package edu.stanford.rsl.jpop;

/**
 * Implements a single threaded FunctionController. Class is mainly implemented for testing and debugging.
 * @author akmaier
 *
 */
public class SimpleFunctionController extends FunctionController {

	@Override
	public double evaluate(OptimizableFunction function, double[] x) {
		int threads = function.getNumberOfProcessingBlocks();
		double [] results = new double [threads];
		for (int i = 0; i < threads; i++){
			results[i] = function.evaluate(x, i);
		}
		return assembler.assembleEvaluationBlocks(results);
	}

	@Override
	public double[] gradient(GradientOptimizableFunction function, double[] x) {
		int threads = function.getNumberOfProcessingBlocks();
		double [][] results = new double [threads][];
		for (int i = 0; i < threads; i++){
			results[i] = function.gradient(x, i);
		}
		return assembler.assembleGradientBlocks(results);
	}

	@Override
	public double[][] hessian(HessianOptimizableFunction function, double[] x) {
		int threads = function.getNumberOfProcessingBlocks();
		double [][][] results = new double [threads][][];
		for (int i = 0; i < threads; i++){
			results[i] = function.hessian(x, i);
		}
		return assembler.assembleHessianBlocks(results);
	}


}

 

Ads help maintain this website.