Reproducer based on optaplanner unit tests: @Test public void getPlanningValues() { TestdataValue v1 = new TestdataValue("1"); TestdataValue v2 = new TestdataValue("2"); TestdataValue v3 = new TestdataValue("3"); TestdataMultiVarEntity a = new TestdataMultiVarEntity("a", v1, v2, null); TestdataMultiVarEntity b = new TestdataMultiVarEntity("b", v1, v3, null); EntityDescriptor entityDescriptor = TestdataMultiVarEntity.buildEntityDescriptor(); SwapMove move = new SwapMove(entityDescriptor.getGenuineVariableDescriptors(), a, b); List<Object> values = (List<Object>) move.getPlanningValues(); } Actual results: "values" array contains {null, null, 1, 1, 2, 3}, where "1" is redundant. Expected results: shoudl contains only {null, 1, 2, 3} Additional info: This issue corresponds with bigger problem: https://issues.jboss.org/browse/PLANNER-278
We're going to fix this different, to avoid an unneeded performance loss, as part of the big Tabu Search Rennaissance, which won't be in 6.2: https://issues.jboss.org/browse/PLANNER-279 Meanwhile: this issue should has no impact on the user's code and only a minor impact (if any) on the solver behavior, because AbstractTabuAcceptor puts both duplicates in the same map, so the first is discarded automatically anyway.
Since whole tabu search needs to be rewritten(see https://issues.jboss.org/browse/PLANNER-279) and since this issue is not serious perf killer I am closing the BZ