All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ai.libs.jaicore.planning.hierarchical.algorithms.GraphSearchBasedHTNPlanningAlgorithm Maven / Gradle / Ivy

package ai.libs.jaicore.planning.hierarchical.algorithms;

import org.slf4j.Logger;

import ai.libs.jaicore.basic.algorithm.reduction.ReducingOptimizer;
import ai.libs.jaicore.planning.classical.problems.strips.Operation;
import ai.libs.jaicore.planning.core.EvaluatedSearchGraphBasedPlan;
import ai.libs.jaicore.planning.hierarchical.problems.htn.IHTNPlanningProblem;
import ai.libs.jaicore.planning.hierarchical.problems.htn.IHierarchicalPlanningToGraphSearchReduction;
import ai.libs.jaicore.planning.hierarchical.problems.stn.Method;
import ai.libs.jaicore.search.core.interfaces.IOptimalPathInORGraphSearchFactory;
import ai.libs.jaicore.search.model.other.EvaluatedSearchGraphPath;
import ai.libs.jaicore.search.probleminputs.GraphSearchInput;

/**
 *
 * @author fmohr
 *
 * @param 

* class of the HTN planning problem * @param * class of the graph search problem input to which the HTN problem is reduced * @param * class of the nodes in the search problem * @param * class of the edges in the search problem * @param * evaluation of solutions */ public class GraphSearchBasedHTNPlanningAlgorithm

, N, A, V extends Comparable> extends ReducingOptimizer, S, EvaluatedSearchGraphPath, V> { public GraphSearchBasedHTNPlanningAlgorithm(final P problem, final IHierarchicalPlanningToGraphSearchReduction, S, EvaluatedSearchGraphPath> problemTransformer, final IOptimalPathInORGraphSearchFactory searchFactory) { super(problem, problemTransformer, searchFactory); } @Override public void runPreCreationHook() { Logger logger = this.getLogger(); logger.info("Starting HTN planning process."); if (logger.isDebugEnabled()) { StringBuilder opSB = new StringBuilder(); for (Operation op : this.getInput().getDomain().getOperations()) { opSB.append("\n\t\t"); opSB.append(op); } StringBuilder methodSB = new StringBuilder(); for (Method method : this.getInput().getDomain().getMethods()) { methodSB.append("\n\t\t"); methodSB.append(method); } logger.debug("The HTN problem is defined as follows:\n\tOperations:{}\n\tMethods:{}", opSB, methodSB); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy