package splar.core.heuristics; import java.util.LinkedHashMap; import java.util.Map; import splar.core.constraints.BooleanVariableInterface; import splar.core.constraints.CNFFormula; import splar.core.fm.FeatureModel; public class VariableOrderingHeuristicsManager { private Map<String, VariableOrderingHeuristic> heuristics; public static VariableOrderingHeuristicsManager manager = null; public static VariableOrderingHeuristicsManager createHeuristicsManager() { if ( manager == null ) { manager = new VariableOrderingHeuristicsManager(); } return manager; } private VariableOrderingHeuristicsManager() { heuristics = new LinkedHashMap<String, VariableOrderingHeuristic>(); } public String[] run(String name, CNFFormula cnf) { VariableOrderingHeuristic heuristic = heuristics.get(name); if ( heuristic != null ) { return heuristic.run(cnf); } return null; } public void registerHeuristic(String name, VariableOrderingHeuristic heuristic) { heuristics.put(name, heuristic); } public VariableOrderingHeuristic getHeuristic(String name) { return heuristics.get(name); } public String[] getHeuristicNames() { String names[] = new String[heuristics.size()]; int i = 0; for( VariableOrderingHeuristic heuristic : heuristics.values() ) { names[i++] = heuristic.getName(); } return names; } }