Class SolutionDescriptor<Solution_>

java.lang.Object
ai.timefold.solver.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)
    • assertMutable

      public static void assertMutable(Class<?> clz, String classType)
    • addEntityDescriptor

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

      public void processUnannotatedFieldsAndMethods(DescriptorPolicy descriptorPolicy)
    • processAnnotations

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

      public Class<Solution_> getSolutionClass()
    • getMemberAccessorFactory

      public MemberAccessorFactory getMemberAccessorFactory()
    • getDomainAccessType

      public DomainAccessType getDomainAccessType()
    • getScoreDefinition

      public <Score_ extends Score<Score_>> ScoreDefinition<Score_> getScoreDefinition()
    • getScoreDescriptor

      public <Score_ extends Score<Score_>> ScoreDescriptor<Score_> getScoreDescriptor()
    • getProblemFactMemberAccessorMap

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

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

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

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

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

      public ListVariableDescriptor<Solution_> getListVariableDescriptor()
    • getSolutionCloner

      public SolutionCloner<Solution_> getSolutionCloner()
    • setAssertModelForCloning

      public void setAssertModelForCloning(boolean assertModelForCloning)
    • getConstraintConfigurationMemberAccessor

      @Deprecated(forRemoval=true, since="1.13.0") public MemberAccessor getConstraintConfigurationMemberAccessor()
      Deprecated, for removal: This API element is subject to removal in a future version.
    • getConstraintWeightSupplier

      public <Score_ extends Score<Score_>> ConstraintWeightSupplier<Solution_,Score_> getConstraintWeightSupplier()
    • 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()
    • getAllEntitiesAndProblemFacts

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

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

      public MemberAccessor getPlanningIdAccessor(Class<?> factClass)
      Return accessor for a given member of a given class, if present, and cache it for future use.
      Parameters:
      factClass - never null
      Returns:
      null if no such member exists
    • visitAllEntities

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

      public void visitEntitiesByEntityClass(Solution_ solution, Class<?> entityClass, Predicate<Object> visitor)
      Parameters:
      solution - solution to extract the entities from
      entityClass - class of the entity to be visited, including subclasses
      visitor - never null; applied to every entity, iteration stops if it returns true
    • 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
    • getApproximateValueCount

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

      public long getMaximumValueRangeSize(Solution_ solution)
    • getProblemScale

      public double getProblemScale(Solution_ solution)
      Calculates an indication on how big this problem instance is. This is approximately the base 10 log of the search space size.
      Parameters:
      solution - never null
      Returns:
      >= 0
    • getProblemSizeStatistics

      public ProblemSizeStatistics getProblemSizeStatistics(Solution_ solution)
    • computeInitializationStatistics

      public SolutionDescriptor.SolutionInitializationStatistics computeInitializationStatistics(Solution_ solution)
    • computeInitializationStatistics

      public SolutionDescriptor.SolutionInitializationStatistics computeInitializationStatistics(Solution_ solution, Consumer<Object> finisher)
    • getScore

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

      public <Score_ extends Score<Score_>> 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