How to add custom SolutionSelector?

Currently SelectBest class is used as SolutionSelector. I would want to use different SolutionSelector.

Update: We needed to change the Jsprit.java file. I added new method in Jsprit.Builder which takes the SolutionSelector as input. In create method of Jsprit:

        SearchStrategy radial_regret = new SearchStrategy(Strategy.RADIAL_REGRET.toString(), 
         getSolutoinSelector(selectorType), acceptor, objectiveFunction);
	radial_regret.addModule(new RuinAndRecreateModule(Strategy.RADIAL_REGRET.toString(), regret, radial));

	SearchStrategy radial_best = new SearchStrategy(Strategy.RADIAL_BEST.toString(), getSolutoinSelector(selectorType), acceptor, objectiveFunction);
	radial_best.addModule(new RuinAndRecreateModule(Strategy.RADIAL_BEST.toString(), best, radial));

	SearchStrategy random_best = new SearchStrategy(Strategy.RANDOM_BEST.toString(), getSolutoinSelector(selectorType), acceptor, objectiveFunction);
	random_best.addModule(new RuinAndRecreateModule(Strategy.RANDOM_BEST.toString(), best, random_for_best));

	SearchStrategy random_regret = new SearchStrategy(Strategy.RANDOM_REGRET.toString(), getSolutoinSelector(selectorType), acceptor, objectiveFunction);
	random_regret.addModule(new RuinAndRecreateModule(Strategy.RANDOM_REGRET.toString(), regret, random_for_regret));

	SearchStrategy worst_regret = new SearchStrategy(Strategy.WORST_REGRET.toString(), getSolutoinSelector(selectorType), acceptor, objectiveFunction);
	worst_regret.addModule(new RuinAndRecreateModule(Strategy.WORST_REGRET.toString(), regret, worst));

	SearchStrategy worst_best = new SearchStrategy(Strategy.WORST_BEST.toString(), getSolutoinSelector(selectorType), acceptor, objectiveFunction);
	worst_best.addModule(new RuinAndRecreateModule(Strategy.WORST_BEST.toString(), best, worst));

	final SearchStrategy clusters_regret = new SearchStrategy(Strategy.CLUSTER_REGRET.toString(), getSolutoinSelector(selectorType), acceptor, objectiveFunction);
	clusters_regret.addModule(new RuinAndRecreateModule(Strategy.CLUSTER_REGRET.toString(), regret, clusters));

	final SearchStrategy clusters_best = new SearchStrategy(Strategy.CLUSTER_BEST.toString(), getSolutoinSelector(selectorType), acceptor, objectiveFunction);
	clusters_best.addModule(new RuinAndRecreateModule(Strategy.CLUSTER_BEST.toString(), best, clusters));

Hi!,
Have you understood all the strategy?
Actullay how it works?
Can you please explain objective values twiking?

Jsprit uses bestSolution when it comes to ruining of VehicleRoutingProblemSolution.
Instead of using SelectBest, I was using different SolutionAcceptor implementation.
Currently there if no way to provide custom SolutionAcceptor to Jsprit. So I had to modify Jsprit class.

Can someone explain how it’s work?

        defaults.put(Strategy.RADIAL_BEST.toString(), "0.");
        defaults.put(Strategy.RADIAL_REGRET.toString(), ".5");
        defaults.put(Strategy.RANDOM_BEST.toString(), ".5");
        defaults.put(Strategy.RANDOM_REGRET.toString(), ".5");

        defaults.put(Strategy.STRING_BEST.toString(), "0.0");
        defaults.put(Strategy.STRING_REGRET.toString(), "0.0");

        defaults.put(Parameter.STRING_K_MIN.toString(), "1");
        defaults.put(Parameter.STRING_K_MAX.toString(), "6");
        defaults.put(Parameter.STRING_L_MIN.toString(), "10");
        defaults.put(Parameter.STRING_L_MAX.toString(), "30");

        defaults.put(Strategy.WORST_BEST.toString(), "0.");
        defaults.put(Strategy.WORST_REGRET.toString(), "1.");
        defaults.put(Strategy.CLUSTER_BEST.toString(), "0.");
        defaults.put(Strategy.CLUSTER_REGRET.toString(), "1.");