Class SolutionDescriptor<Solution_>

java.lang.Object
org.optaplanner.core.impl.domain.solution.descriptor.SolutionDescriptor<Solution_>
Type Parameters:
Solution_ - the solution type, the class with the PlanningSolution annotation

public class SolutionDescriptor<Solution_> extends Object
  • Method Details

    • buildSolutionDescriptor

      public static <Solution_> SolutionDescriptor<Solution_> buildSolutionDescriptor(Class<Solution_> solutionClass, Class<?>... entityClasses)
    • buildSolutionDescriptor

      public static <Solution_> SolutionDescriptor<Solution_> buildSolutionDescriptor(Class<Solution_> solutionClass, List<Class<?>> entityClassList)
    • buildSolutionDescriptor

      public static <Solution_> SolutionDescriptor<Solution_> buildSolutionDescriptor(DomainAccessType domainAccessType, Class<Solution_> solutionClass, Map<String,MemberAccessor> memberAccessorMap, Map<String,SolutionCloner> solutionClonerMap, List<Class<?>> entityClassList)
    • addEntityDescriptor

      public void addEntityDescriptor(EntityDescriptor<Solution_> entityDescriptor)
    • processAnnotations

      public void processAnnotations(DescriptorPolicy descriptorPolicy, List<Class<?>> entityClassList)
    • assertProblemFactsExist

      public void assertProblemFactsExist()
      Only called if Drools score calculation is used.
    • getSolutionClass

      public Class<Solution_> getSolutionClass()
    • getMemberAccessorFactory

      public MemberAccessorFactory getMemberAccessorFactory()
    • getDomainAccessType

      public DomainAccessType getDomainAccessType()
    • getScoreDefinition

      public ScoreDefinition getScoreDefinition()
    • getProblemFactMemberAccessorMap

      public Map<String,MemberAccessor> getProblemFactMemberAccessorMap()
    • getProblemFactCollectionMemberAccessorMap

      public Map<String,MemberAccessor> getProblemFactCollectionMemberAccessorMap()
    • getProblemFactMemberAndProblemFactCollectionMemberNames

      public List<String> getProblemFactMemberAndProblemFactCollectionMemberNames()
    • getEntityMemberAccessorMap

      public Map<String,MemberAccessor> getEntityMemberAccessorMap()
    • getEntityCollectionMemberAccessorMap

      public Map<String,MemberAccessor> getEntityCollectionMemberAccessorMap()
    • getEntityMemberAndEntityCollectionMemberNames

      public List<String> getEntityMemberAndEntityCollectionMemberNames()
    • getProblemFactOrEntityClassSet

      public Set<Class<?>> getProblemFactOrEntityClassSet()
    • getListVariableDescriptors

      public List<ListVariableDescriptor<Solution_>> getListVariableDescriptors()
    • getSolutionCloner

      public SolutionCloner<Solution_> getSolutionCloner()
    • getClassAndPlanningIdComparator

      public Comparator<Object> getClassAndPlanningIdComparator()
    • setAssertModelForCloning

      public void setAssertModelForCloning(boolean assertModelForCloning)
    • getConstraintConfigurationMemberAccessor

      public MemberAccessor getConstraintConfigurationMemberAccessor()
    • getConstraintConfigurationDescriptor

      public ConstraintConfigurationDescriptor<Solution_> getConstraintConfigurationDescriptor()
      Returns:
      sometimes null
    • getEntityClassSet

      public Set<Class<?>> getEntityClassSet()
    • getEntityDescriptors

      public Collection<EntityDescriptor<Solution_>> getEntityDescriptors()
    • getGenuineEntityDescriptors

      public Collection<EntityDescriptor<Solution_>> getGenuineEntityDescriptors()
    • getEntityDescriptorStrict

      public EntityDescriptor<Solution_> getEntityDescriptorStrict(Class<?> entityClass)
    • hasEntityDescriptor

      public boolean hasEntityDescriptor(Class<?> entitySubclass)
    • findEntityDescriptorOrFail

      public EntityDescriptor<Solution_> findEntityDescriptorOrFail(Class<?> entitySubclass)
    • findEntityDescriptor

      public EntityDescriptor<Solution_> findEntityDescriptor(Class<?> entitySubclass)
    • findVariableDescriptorOrFail

      public VariableDescriptor<Solution_> findVariableDescriptorOrFail(Object entity, String variableName)
    • getLookUpStrategyResolver

      public LookUpStrategyResolver getLookUpStrategyResolver()
    • validateConstraintWeight

      public void validateConstraintWeight(String constraintPackage, String constraintName, Score<?> constraintWeight)
    • getAllEntitiesAndProblemFacts

      public Collection<Object> getAllEntitiesAndProblemFacts(Solution_ solution)
    • getEntityCount

      public int getEntityCount(Solution_ solution)
      Parameters:
      solution - never null
      Returns:
      >= 0
    • visitAllEntities

      public void visitAllEntities(Solution_ solution, Consumer<Object> visitor)
    • visitEntitiesByEntityClass

      public void visitEntitiesByEntityClass(Solution_ solution, Class<?> entityClass, Consumer<Object> visitor)
    • visitAllProblemFacts

      public void visitAllProblemFacts(Solution_ solution, Consumer<Object> visitor)
    • visitAll

      public void visitAll(Solution_ solution, Consumer<Object> visitor)
    • hasMovableEntities

      public boolean hasMovableEntities(ScoreDirector<Solution_> scoreDirector)
      Parameters:
      scoreDirector - never null
      Returns:
      >= 0
    • getGenuineVariableCount

      public long getGenuineVariableCount(Solution_ solution)
      Parameters:
      solution - never null
      Returns:
      >= 0
    • getMaximumValueCount

      public long getMaximumValueCount(Solution_ solution)
    • getValueCount

      public int getValueCount(Solution_ solution)
      Parameters:
      solution - never null
      Returns:
      >= 0
    • getProblemScale

      public long getProblemScale(Solution_ solution)
      Calculates an indication on how big this problem instance is. This is intentionally very loosely defined for now.
      Parameters:
      solution - never null
      Returns:
      >= 0
    • countUninitialized

      public int countUninitialized(Solution_ solution)
      Calculates the number of elements that need to be processed in the Construction Heuristics phase. The negative value of this is the initScore. It represents how many Construction Heuristics steps need to be taken before the solution is fully initialized.
      Parameters:
      solution - never null
      Returns:
      >= 0
    • getScore

      public Score getScore(Solution_ solution)
      Parameters:
      solution - never null
      Returns:
      sometimes null, if the Score hasn't been calculated yet
    • setScore

      public void setScore(Solution_ solution, Score score)
      Called when the Score has been calculated or predicted.
      Parameters:
      solution - never null
      score - sometimes null, in rare occasions to indicate that the old Score is stale, but no new ones has been calculated
    • toString

      public String toString()
      Overrides:
      toString in class Object