/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.components.optimizer.execution.algorithms.registry;
import java.util.Collection;
import java.util.Map;
import de.rcenvironment.components.optimizer.common.MethodDescription;
import de.rcenvironment.components.optimizer.common.execution.OptimizerAlgorithmExecutor;
import de.rcenvironment.core.component.api.ComponentException;
import de.rcenvironment.core.component.execution.api.ComponentContext;
import de.rcenvironment.core.datamodel.api.TypedDatum;
/**
* Registry for receiving methods from different optimization packages.
*
* @author Sascha Zur
*/
public interface OptimizerAlgorithmExecutorFactoryRegistry {
/**
* Adds the given {@link OptimizerAlgorithmExecutorFactory} to the list of all provider registered.
*
* @param factory new factory
*/
void addOptimizerAlgorithmExecutorFactory(OptimizerAlgorithmExecutorFactory factory);
/**
* Removes the given {@link OptimizerAlgorithmExecutorFactory} from the list of all factories registered.
*
* @param algFactory to remove
*/
void removeOptimizerAlgorithmExecutorFactory(OptimizerAlgorithmExecutorFactory algFactory);
/**
* Returns an instance of the given providerPacke, if available.
*
* @param algorithmPackage the package to look for (e.g. dakota ...)
* @param methodConfiguration :
* @param outputValues :
* @param input :
* @param compContext :
* @param boundMaps : maps "lower" and "upper" for the upper and lower bounds start values
* @param stepValues for the algorithm
* @return instance of the algorithm class
* @throws ComponentException on unexpected errors when creating instance of {@link OptimizerAlgorithmExecutor}
*/
OptimizerAlgorithmExecutor createAlgorithmProviderInstance(String algorithmPackage,
Map<String, MethodDescription> methodConfiguration, Map<String, TypedDatum> outputValues,
Collection<String> input, ComponentContext compContext, Map<String, Map<String, Double>> boundMaps, Map<String, Double> stepValues)
throws ComponentException;
}