Class Jsprit.Builder

java.lang.Object
com.graphhopper.jsprit.core.algorithm.box.Jsprit.Builder
Enclosing class:
Jsprit

public static class Jsprit.Builder extends Object
  • Method Details

    • newInstance

      public static Jsprit.Builder newInstance(VehicleRoutingProblem vrp)
    • addSearchStrategy

      public Jsprit.Builder addSearchStrategy(SearchStrategy searchStrategy, double weight)
    • addSearchStrategy

      public Jsprit.Builder addSearchStrategy(String name, RuinStrategy ruin, InsertionStrategy insertion, double weight)
      Adds a custom search strategy by specifying only the ruin and insertion components. The strategy will be assembled using Jsprit's shared acceptor and objective function.
      Parameters:
      name - the strategy name/id
      ruin - the ruin strategy
      insertion - the insertion strategy
      weight - the probability weight for this strategy
      Returns:
      builder for chaining
    • setVehicleFleetManager

      public Jsprit.Builder setVehicleFleetManager(VehicleFleetManager fleetManager)
    • setExecutorService

      public Jsprit.Builder setExecutorService(ExecutorService es, int noThreads)
    • setCustomAcceptor

      public Jsprit.Builder setCustomAcceptor(SolutionAcceptor acceptor)
    • setRandom

      public Jsprit.Builder setRandom(Random random)
    • setProperty

      public Jsprit.Builder setProperty(String key, String value)
    • setProperty

      public Jsprit.Builder setProperty(Jsprit.Parameter parameter, String value)
    • setProperty

      public Jsprit.Builder setProperty(Jsprit.Strategy strategy, String value)
    • setProperty

      public Jsprit.Builder setProperty(Jsprit.RuinOperator ruinOperator, String value)
    • setProperty

      public Jsprit.Builder setProperty(Jsprit.InsertionOperator insertionOperator, String value)
    • setStateAndConstraintManager

      public Jsprit.Builder setStateAndConstraintManager(StateManager stateManager, ConstraintManager constraintManager)
    • setObjectiveFunction

      public Jsprit.Builder setObjectiveFunction(SolutionCostCalculator objectiveFunction)
    • addCoreStateAndConstraintStuff

      public Jsprit.Builder addCoreStateAndConstraintStuff(boolean addConstraints)
    • setActivityInsertionCalculator

      public Jsprit.Builder setActivityInsertionCalculator(ActivityInsertionCostsCalculator activityInsertionCalculator)
    • setRegretScorer

      public Jsprit.Builder setRegretScorer(ScoringFunction scoringFunction)
    • setRegretScoringFunction

      public Jsprit.Builder setRegretScoringFunction(RegretScoringFunction scoringFunction)
    • setJobFilter

      public Jsprit.Builder setJobFilter(JobFilter jobFilter)
    • setServiceInsertionCalculatorFactory

      public Jsprit.Builder setServiceInsertionCalculatorFactory(JobInsertionCostsCalculatorFactory factory)
      Set a custom service insertion calculator factory
    • setShipmentInsertionCalculatorFactory

      public Jsprit.Builder setShipmentInsertionCalculatorFactory(JobInsertionCostsCalculatorFactory factory)
      Set a custom shipment insertion calculator factory
    • addInsertionOperator

      public Jsprit.Builder addInsertionOperator(double weight, InsertionOperatorFactory factory)
      Adds an insertion operator with the specified weight.

      When insertion operators are registered, they are selected independently of ruin operators during each iteration. This allows fine-grained control over the search strategy composition.

      Example:

       Jsprit.Builder.newInstance(vrp)
           .addInsertionOperator(0.7, Insertion.regretFast())  // Fast, filtered
           .addInsertionOperator(0.3, Insertion.regret())       // Thorough, no filter
           .buildAlgorithm();
       
      Parameters:
      weight - the selection weight (higher = more likely to be selected)
      factory - the insertion operator factory
      Returns:
      this builder for chaining
      See Also:
    • addInsertionOperator

      public Jsprit.Builder addInsertionOperator(double weight, InsertionOperatorFactory factory, String name)
      Adds an insertion operator with a name for identification.
      Parameters:
      weight - the selection weight
      factory - the insertion operator factory
      name - the operator name (for logging/debugging)
      Returns:
      this builder for chaining
    • addRuinOperator

      public Jsprit.Builder addRuinOperator(double weight, RuinOperatorFactory factory)
      Adds a ruin operator with the specified weight.

      When ruin operators are registered, they are selected independently of insertion operators during each iteration.

      Example:

       Jsprit.Builder.newInstance(vrp)
           .addRuinOperator(0.3, Ruin.random(0.3))
           .addRuinOperator(0.3, Ruin.radial(0.3))
           .addRuinOperator(0.2, Ruin.cluster())
           .addRuinOperator(0.2, Ruin.kruskalCluster())
           .buildAlgorithm();
       
      Parameters:
      weight - the selection weight (higher = more likely to be selected)
      factory - the ruin operator factory
      Returns:
      this builder for chaining
      See Also:
    • addRuinOperator

      public Jsprit.Builder addRuinOperator(double weight, RuinOperatorFactory factory, String name)
      Adds a ruin operator with a name for identification.
      Parameters:
      weight - the selection weight
      factory - the ruin operator factory
      name - the operator name (for logging/debugging)
      Returns:
      this builder for chaining
    • isIndependentOperatorMode

      public boolean isIndependentOperatorMode()
      Returns true if independent operator selection mode is enabled. This is the case when either insertion or ruin operators have been registered.
    • buildAlgorithm

      public VehicleRoutingAlgorithm buildAlgorithm()