Class HASCOReduction<V extends java.lang.Comparable<V>>

  • All Implemented Interfaces:
    ai.libs.jaicore.basic.algorithm.reduction.AlgorithmicProblemReduction<RefinementConfiguredSoftwareConfigurationProblem<V>,​ComponentInstance,​ai.libs.jaicore.planning.hierarchical.problems.htn.CostSensitiveHTNPlanningProblem<ai.libs.jaicore.planning.hierarchical.problems.ceocipstn.CEOCIPSTNPlanningProblem,​V>,​ai.libs.jaicore.planning.core.interfaces.IEvaluatedPlan<V>>

    public class HASCOReduction<V extends java.lang.Comparable<V>>
    extends java.lang.Object
    implements ai.libs.jaicore.basic.algorithm.reduction.AlgorithmicProblemReduction<RefinementConfiguredSoftwareConfigurationProblem<V>,​ComponentInstance,​ai.libs.jaicore.planning.hierarchical.problems.htn.CostSensitiveHTNPlanningProblem<ai.libs.jaicore.planning.hierarchical.problems.ceocipstn.CEOCIPSTNPlanningProblem,​V>,​ai.libs.jaicore.planning.core.interfaces.IEvaluatedPlan<V>>
    This is the class that conducts the actual problem reduction of software configuration to HTN Planning
    • Constructor Detail

      • HASCOReduction

        public HASCOReduction​(java.util.function.Supplier<HASCOSolutionCandidate<V>> bestSolutionSupplier)
    • Method Detail

      • getInitState

        public ai.libs.jaicore.logic.fol.structure.Monom getInitState()
      • getExistingInterfaces

        public java.util.Collection<java.lang.String> getExistingInterfaces()
      • getPlanningDomain

        public ai.libs.jaicore.planning.hierarchical.problems.ceocipstn.CEOCIPSTNPlanningDomain getPlanningDomain()
      • getPlanningProblem

        public ai.libs.jaicore.planning.hierarchical.problems.ceocipstn.CEOCIPSTNPlanningProblem getPlanningProblem​(ai.libs.jaicore.planning.hierarchical.problems.ceocipstn.CEOCIPSTNPlanningDomain domain,
                                                                                                                    ai.libs.jaicore.logic.fol.structure.CNFFormula knowledge,
                                                                                                                    ai.libs.jaicore.logic.fol.structure.Monom init)
      • getPlanningProblem

        public ai.libs.jaicore.planning.hierarchical.problems.ceocipstn.CEOCIPSTNPlanningProblem getPlanningProblem()
      • getGraphGeneratorUsedByHASCOForSpecificPlanner

        public <T,​A> org.api4.java.datastructure.graph.implicit.IGraphGenerator<T,​A> getGraphGeneratorUsedByHASCOForSpecificPlanner​(IHASCOPlanningReduction<T,​A> transformer)
        This method is a utility for everybody who wants to work on the graph obtained from HASCO's reduction but without using the search logic of HASCO
        Parameters:
        plannerFactory -
        Returns:
      • encodeProblem

        public ai.libs.jaicore.planning.hierarchical.problems.htn.CostSensitiveHTNPlanningProblem<ai.libs.jaicore.planning.hierarchical.problems.ceocipstn.CEOCIPSTNPlanningProblem,​V> encodeProblem​(RefinementConfiguredSoftwareConfigurationProblem<V> problem)
        Specified by:
        encodeProblem in interface ai.libs.jaicore.basic.algorithm.reduction.AlgorithmicProblemReduction<RefinementConfiguredSoftwareConfigurationProblem<V extends java.lang.Comparable<V>>,​ComponentInstance,​ai.libs.jaicore.planning.hierarchical.problems.htn.CostSensitiveHTNPlanningProblem<ai.libs.jaicore.planning.hierarchical.problems.ceocipstn.CEOCIPSTNPlanningProblem,​V extends java.lang.Comparable<V>>,​ai.libs.jaicore.planning.core.interfaces.IEvaluatedPlan<V extends java.lang.Comparable<V>>>
      • decodeSolution

        public ComponentInstance decodeSolution​(ai.libs.jaicore.planning.core.interfaces.IEvaluatedPlan<V> solution)
        Specified by:
        decodeSolution in interface ai.libs.jaicore.basic.algorithm.reduction.AlgorithmicProblemReduction<RefinementConfiguredSoftwareConfigurationProblem<V extends java.lang.Comparable<V>>,​ComponentInstance,​ai.libs.jaicore.planning.hierarchical.problems.htn.CostSensitiveHTNPlanningProblem<ai.libs.jaicore.planning.hierarchical.problems.ceocipstn.CEOCIPSTNPlanningProblem,​V extends java.lang.Comparable<V>>,​ai.libs.jaicore.planning.core.interfaces.IEvaluatedPlan<V extends java.lang.Comparable<V>>>
      • decodeSolution

        public ComponentInstance decodeSolution​(ai.libs.jaicore.planning.core.interfaces.IPlan plan)
      • getBestSolutionSupplier

        public java.util.function.Supplier<HASCOSolutionCandidate<V>> getBestSolutionSupplier()