Details
-
Bug
-
Resolution: Done
-
Major
-
6.3.0.GA
-
JBoss BRMS 6.3.0.GA, Mac OS X 10.11.4, Oracle Hotspot 1.8.0_45
-
CR1
Description
We're trying to implement nearby-selection in our planner solution. Our problem is quite similar to the "nurse-rostering" example, we assign Employees (PlanningVariable) to ShiftAssignments (PlanningEntity). The distance between the Employee and the Site of the ShiftAssignment is a soft-constraint.
Because of the size of our data-set, we want to perform nearby-selection on Employees and ShiftAssignments to favour Employees near to the Site in our Value Selector. However, when we try to configure Nearby Selection on our ChangeMoveSelector's ValueSelector, we get the following stacktrace:
14:38:29.279 [main] WARN o.o.b.i.P.singleBenchmarkRunnerException - The warm up singleBenchmarkRunner (test_50_300_LATE_ACCEPTANCE_0) failed. java.lang.IllegalArgumentException: The valueSelector (NearEntityNearbyValueSelector(Replaying(Recording(Filtering(FromSolutionEntitySelector(ShiftAssignment)))), FromSolutionPropertyValueSelector(employee))) has a variable property type (class org.jboss.ddoyle.mss.solver.domain.Employee) which is not a superclass of the originEntitySelector's entityClass (class org.jboss.ddoyle.mss.solver.domain.ShiftAssignment). at org.optaplanner.core.impl.heuristic.selector.value.nearby.NearEntityNearbyValueSelector.<init>(NearEntityNearbyValueSelector.java:60) at org.optaplanner.core.config.heuristic.selector.common.nearby.NearbySelectionConfig.applyNearbyValueSelector(NearbySelectionConfig.java:206) at org.optaplanner.core.config.heuristic.selector.value.ValueSelectorConfig.buildValueSelector(ValueSelectorConfig.java:282) at org.optaplanner.core.config.heuristic.selector.move.generic.ChangeMoveSelectorConfig.buildBaseMoveSelector(ChangeMoveSelectorConfig.java:84) at org.optaplanner.core.config.heuristic.selector.move.MoveSelectorConfig.buildMoveSelector(MoveSelectorConfig.java:194) at org.optaplanner.core.config.heuristic.selector.move.MoveSelectorConfig.buildMoveSelector(MoveSelectorConfig.java:183) at org.optaplanner.core.config.heuristic.selector.move.composite.UnionMoveSelectorConfig.buildBaseMoveSelector(UnionMoveSelectorConfig.java:76) at org.optaplanner.core.config.heuristic.selector.move.MoveSelectorConfig.buildMoveSelector(MoveSelectorConfig.java:194) at org.optaplanner.core.config.localsearch.LocalSearchPhaseConfig.buildMoveSelector(LocalSearchPhaseConfig.java:230) at org.optaplanner.core.config.localsearch.LocalSearchPhaseConfig.buildDecider(LocalSearchPhaseConfig.java:129) at org.optaplanner.core.config.localsearch.LocalSearchPhaseConfig.buildPhase(LocalSearchPhaseConfig.java:114) at org.optaplanner.core.config.localsearch.LocalSearchPhaseConfig.buildPhase(LocalSearchPhaseConfig.java:57) at org.optaplanner.core.config.solver.SolverConfig.buildPhaseList(SolverConfig.java:313) at org.optaplanner.core.config.solver.SolverConfig.buildSolver(SolverConfig.java:245) at org.optaplanner.benchmark.impl.SubSingleBenchmarkRunner.call(SubSingleBenchmarkRunner.java:98) at org.optaplanner.benchmark.impl.SubSingleBenchmarkRunner.call(SubSingleBenchmarkRunner.java:35) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)