[rules-dev] 3 issues with true modify, but PatientAdmissionScheduleApp does work
Edson Tirelli
ed.tirelli at gmail.com
Thu Mar 11 18:50:23 EST 2010
Geoffrey,
Can you check again please (revision #32046)? Let me know if you find
further problems and thanks for testing that.
Edson
2010/3/10 Geoffrey De Smet <ge0ffrey.spam at gmail.com>
> Edson,
>
> NQueens now works (thanks),
> but Examination [1] and SmartTravelingTournament still fail.
>
> To run Examination, just create a java application config with these
> settings:
> Main class:
> org.drools.planner.examples.examination.app.ExaminationBenchmarkApp
> VM parameters: -Xms256m -Xmx512m -server
> Program parameters: short
> Working directory: ...drools/drools-planner/drools-planner-examples
>
>
>
>
> [1] 2010-03-10 19:35:51,685 [main] INFO Initialization time spend (196)
> for score (0hard/-8154soft). Updating best solution and best score.
> Exception in thread "main" java.lang.NullPointerException
> at
> org.drools.reteoo.AccumulateNode.getFirstMatch(AccumulateNode.java:913)
> at
> org.drools.reteoo.AccumulateNode.splitList(AccumulateNode.java:861)
> at
>
> org.drools.reteoo.AccumulateNode.evaluateResultConstraints(AccumulateNode.java:581)
> at
>
> org.drools.reteoo.AccumulateNode.removePreviousMatchesForRightTuple(AccumulateNode.java:845)
> at
> org.drools.reteoo.AccumulateNode.modifyRightTuple(AccumulateNode.java:432)
> at org.drools.reteoo.BetaNode.modifyObject(BetaNode.java:317)
> at
>
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:444)
> at
>
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:412)
> at
> org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:262)
> at
> org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:174)
> at
>
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1392)
> at
>
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
> at
>
> org.drools.planner.examples.examination.solver.move.ExaminationMoveHelper.moveRoom(ExaminationMoveHelper.java:24)
> at
>
> org.drools.planner.examples.examination.solver.move.RoomChangeMove.doMove(RoomChangeMove.java:37)
> at
>
> org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:119)
> at
>
> org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:95)
> at
>
> org.drools.planner.core.localsearch.DefaultLocalSearchSolver.solveImplementation(DefaultLocalSearchSolver.java:105)
> at
> org.drools.planner.core.AbstractSolver.solve(AbstractSolver.java:41)
> at
>
> org.drools.planner.benchmark.SolverBenchmarkSuite.benchmark(SolverBenchmarkSuite.java:196)
> at
>
> org.drools.planner.benchmark.XmlSolverBenchmarker.benchmark(XmlSolverBenchmarker.java:72)
> at
>
> org.drools.planner.examples.common.app.CommonBenchmarkApp.process(CommonBenchmarkApp.java:25)
> at
>
> org.drools.planner.examples.examination.app.ExaminationBenchmarkApp.main(ExaminationBenchmarkApp.java:27)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
>
>
> [2] 2010-03-10 19:43:47,038 [main] INFO Initialization time spend (26)
> for score (0hard/-93463soft). Updating best solution and best score.
> Exception in thread "main" java.lang.NullPointerException
> at
>
> org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyChildLeftTuple(SingleLeftTupleSinkAdapter.java:198)
> at org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:304)
> at org.drools.reteoo.BetaNode.modifyLeftTuple(BetaNode.java:336)
> at
>
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateModifyObject(CompositeLeftTupleSinkAdapter.java:204)
> at
>
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateModifyObject(CompositeLeftTupleSinkAdapter.java:219)
> at
>
> org.drools.reteoo.LeftInputAdapterNode.modifyObject(LeftInputAdapterNode.java:154)
> at
>
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:444)
> at
>
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:412)
> at
> org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:262)
> at
> org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:174)
> at
>
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1392)
> at
>
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
> at
>
> org.drools.planner.examples.travelingtournament.solver.smart.move.MultipleMatchListRotateMove.rotateList(MultipleMatchListRotateMove.java:59)
> at
>
> org.drools.planner.examples.travelingtournament.solver.smart.move.MultipleMatchListRotateMove.doMove(MultipleMatchListRotateMove.java:44)
> at
>
> org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:117)
> at
>
> org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:95)
> at
>
> org.drools.planner.core.localsearch.DefaultLocalSearchSolver.solveImplementation(DefaultLocalSearchSolver.java:105)
> at
> org.drools.planner.core.AbstractSolver.solve(AbstractSolver.java:41)
> at
>
> org.drools.planner.benchmark.SolverBenchmarkSuite.benchmark(SolverBenchmarkSuite.java:196)
> at
>
> org.drools.planner.benchmark.XmlSolverBenchmarker.benchmark(XmlSolverBenchmarker.java:72)
> at
>
> org.drools.planner.examples.common.app.CommonBenchmarkApp.process(CommonBenchmarkApp.java:25)
> at
>
> org.drools.planner.examples.travelingtournament.app.smart.SmartTravelingTournamentBenchmarkApp.main(SmartTravelingTournamentBenchmarkApp.java:28)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
>
>
> With kind regards,
> Geoffrey De Smet
>
>
> Edson Tirelli schreef:
> >
> > Geoffrey,
> >
> > All planner tests are green now (revision #32010).
> >
> > Thanks,
> > Edson
> >
> > 2010/3/8 Edson Tirelli <ed.tirelli at gmail.com <mailto:
> ed.tirelli at gmail.com>>
> >
> >
> > Hey Geoffrey,
> >
> > The fixes for accumulate are already there. It is no longer
> > cloning the tuple memory and whenever possible, it uses indexing
> > instead of full iteration.
> >
> > Working on the NPE now.
> >
> >
> > Edson
> >
> > 2010/3/7 Geoffrey De Smet <ge0ffrey.spam at gmail.com
> > <mailto:ge0ffrey.spam at gmail.com>>
> >
> > Edson,
> >
> > > I believe fixed the infinite loop
> > >> problem. Would you please take a look if it works for you?
> >
> > Yes, it's no longer there, thanks :)
> > Examination now suffers from the same NPE as the NQueens smoke
> test.
> >
> > On one PAS testdata I actually had 5%, but on another PAS
> > testdata only 1%.
> >
> > I believe the cloning in accumulates fix will allow me to do the
> > score
> > calculation as it should be done (one rule instead of two rules)
> > and also further help performance.
> > I 'll run some experiments in that direction as soon as you give
> > me the
> > sign that cloning in accumulates has been fixed.
> >
> > With kind regards,
> > Geoffrey De Smet
> >
> >
> > Edson Tirelli schreef:
> > >
> > > Geoffrey,
> > >
> > > I just committed some code that I believe fixed the
> > infinite loop
> > > problem. Would you please take a look if it works for you? I
> > will take a
> > > look at the other problems now... thanks for reporting that.
> > >
> > > Regarding the performance, the main benefit of true modify
> > is not a
> > > straight gain on performance, but the reduction of the garbage
> > > collection stress. Just to explain, the code now is actually
> more
> > > complex, but the idea is that the algorithm pays off by
> > instantiating a
> > > lot less objects now, specially LeftTuples. I would not be
> > surprised if
> > > the 4% gain you see is due to less object
> instantiation+garbage
> > > collection work. This is obviously dependent on the use case,
> > but one
> > > really interesting statistic to see would be if you can
> > profile how many
> > > instances of LeftTuple were created with the previous
> > algorithm compared
> > > to now.
> > >
> > > Having said that, there are some performance improvements
> for
> > > specific cases, like on accumulate that before would
> > frequently clone
> > > lists of tuples and iterate and now it avoids both the
> > cloning and the
> > > iteration on specific cases. For those cases, we expect gains
> > of 30% on
> > > the node, but that is just the node, not the whole kbase.
> > >
> > > Also, as you mentioned, true modify opens the door for
> > several other
> > > optimizations that we will work on as soon as it is stable
> again.
> > >
> > > Thanks,
> > > Edson
> > >
> > > 2010/3/7 Geoffrey De Smet <ge0ffrey.spam at gmail.com
> > <mailto:ge0ffrey.spam at gmail.com>
> > > <mailto:ge0ffrey.spam at gmail.com
> > <mailto:ge0ffrey.spam at gmail.com>>>
> > >
> > > Found another issue with the true modify changes: 3 of my
> > examples don't
> > > work (NQueens, Travelingtournament, Examination), due to
> > distinct
> > > causes.
> > >
> > > PatientAdmissionScheduling does work and it's about 4%
> > faster on first
> > > sight.
> > > It's a linear improvement, not an exponential improvement.
> > > Nothing world shocking (yet), but every little bit helps
> :)
> > > Edson and Mark believe that true modify allows for new
> > optimization,
> > > which I believe might be an exponential improvement.
> > >
> > > Once examination works I'll test if I can remove the TMS
> > workaround I
> > > needed before.
> > > This will be a huge performance boost, but only for that
> > specific
> > > example.
> > >
> > >
> > > Here's the bug list:
> > >
> > > 1) Infinite loop in
> > >
> > org.drools.core.util.LeftTupleList.get(LeftTupleList.java:102)
> > >
> > > 2) NPE in
> > >
> >
> org.drools.core.util.RightTupleList.matches(RightTupleList.java:190)
> > > because this.first is null in
> > > return this.hashCode == tupleHashCode && this.index.equal(
> > > this.first.getFactHandle().getObject(),
> > >
> > > tuple );
> > >
> > > 3) NPE in
> > >
> >
> org.drools.reteoo.SingleLeftTupleSinkAdapter#propagateModifyChildLeftTuple,
> > > line 198:
> > > the leftTuple or the sink is null
> > > childLeftTuple.getLeftTupleSink().modifyLeftTuple(
> > > childLeftTuple,
> > >
> > context,
> > >
> > > workingMemory );
> > >
> > > Here are the stacktraces:
> > >
> > > 1)
> > >
> > > 1.
> > > To run:
> > > 2.
> > > module: drools-planner-examples
> > > 3.
> > > main class:
> > >
> >
> org.drools.planner.examples.examination.app.ExaminationBenchmarkApp
> > > 4.
> > > VM params: -Xms256m -Xmx512m -server
> > > 5.
> > > program params: short
> > > 6.
> > > working dir:
> > >
> > >
> >
> /home/ge0ffrey/projects/jboss/drools/drools-planner/drools-planner-examples
> > > 7.
> > >
> > > 8.
> > >
> > > 9.
> > > More logging? open log4j-benchmark.xml and turn on
> > debug logging
> > > for org.drools.planner
> > > 10.
> > >
> > > 11.
> > >
> > > 12.
> > > 2010-03-03 19:47:34,625 [main] INFO Solving with
> > random seed (0).
> > > 13.
> > > 2010-03-03 19:47:34,626 [main] DEBUG Solution is
> already
> > > initialized.
> > > 14.
> > > 2010-03-03 19:47:34,752 [main] INFO Initialization
> > time spend
> > > (129) for score (0hard/-8154soft). Updating best
> > solution and best
> > > score.
> > > 15.
> > > 2010-03-03 19:47:34,948 [main] DEBUG Move (489
> > {D180|S47} @ 17
> > > {D210} + 4 {C77} => 25 {D210}) with score
> > (-47hard/-8190soft) and
> > > acceptChance (1.0).
> > > 16.
> > > 2010-03-03 19:47:34,972 [main] DEBUG Move (373
> > {D180|S157} @
> > > 23 {D210} + 0 {C260} => 16 {D210}) with score
> > (-158hard/-8219soft)
> > > and acceptChance (1.0).
> > > 17.
> > > 2010-03-03 19:47:34,985 [main] DEBUG Move (530
> > {D120|S152} @
> > > 16 {D210} + 0 {C260} => 39 {D210}) with score
> > (-153hard/-8481soft)
> > > and acceptChance (1.0).
> > > 18.
> > > 2010-03-03 19:47:35,001 [main] DEBUG Move (132
> > {D120|S61} @ 53
> > > {D210} + 5 {C65} => 24 {D210}) with score
> > (-64hard/-8243soft) and
> > > acceptChance (1.0).
> > > 19.
> > > 2010-03-03 19:47:35,011 [main] DEBUG Move (553
> > {D180|S169} @
> > > 51 {D210} + 0 {C260} => 37 {D210}) with score
> > (-168hard/-8323soft)
> > > and acceptChance (1.0).
> > > 20.
> > > 2010-03-03 19:52:03
> > > 21.
> > > Full thread dump Java HotSpot(TM) Server VM
> > (14.2-b01 mixed mode):
> > > 22.
> > >
> > > 23.
> > > ...
> > > 24.
> > >
> > > 25.
> > > "main" prio=10 tid=0x08b2b800 nid=0x1104 runnable
> > [0xb6aa6000]
> > > 26.
> > > java.lang.Thread.State: RUNNABLE
> > > 27.
> > > at
> > >
> > >
> >
> org.drools.common.DefaultFactHandle.hashCode(DefaultFactHandle.java:136)
> > > 28.
> > > at
> > org.drools.reteoo.LeftTuple.hashCode(LeftTuple.java:445)
> > > 29.
> > > at
> > org.drools.reteoo.LeftTuple.equals(LeftTuple.java:461)
> > > 30.
> > > at
> > >
> > org.drools.core.util.LeftTupleList.get(LeftTupleList.java:102)
> > > 31.
> > > at
> > >
> >
> org.drools.core.util.LeftTupleList.contains(LeftTupleList.java:96)
> > > 32.
> > > at
> > >
> > >
> >
> org.drools.reteoo.EvalConditionNode.modifyLeftTuple(EvalConditionNode.java:235)
> > > 33.
> > > at
> > >
> > >
> >
> org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyChildLeftTuple(SingleLeftTupleSinkAdapter.java:209)
> > > 34.
> > > at
> > >
> > org.drools.reteoo.JoinNode.modifyRightTuple(JoinNode.java:221)
> > > 35.
> > > at
> > > org.drools.reteoo.BetaNode.modifyObject(BetaNode.java:317)
> > > 36.
> > > at
> > >
> > >
> >
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:444)
> > > 37.
> > > at
> > >
> > >
> >
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:412)
> > > 38.
> > > at
> > >
> > >
> >
> org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:262)
> > > 39.
> > > at
> > >
> > >
> >
> org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:174)
> > > 40.
> > > at
> > >
> > >
> >
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1392)
> > > 41.
> > > at
> > >
> > >
> >
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
> > > 42.
> > > at
> > >
> > >
> >
> org.drools.planner.examples.examination.solver.move.ExaminationMoveHelper.movePeriod(ExaminationMoveHelper.java:17)
> > > 43.
> > > at
> > >
> > >
> >
> org.drools.planner.examples.examination.solver.move.PeriodChangeMove.doMove(PeriodChangeMove.java:37)
> > > 44.
> > > at
> > >
> > >
> >
> org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:117)
> > > 45.
> > > at
> > >
> > >
> >
> org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:95)
> > > 46.
> > > at
> > >
> > >
> >
> org.drools.planner.core.localsearch.DefaultLocalSearchSolver.solveImplementation(DefaultLocalSearchSolver.java:105)
> > > 47.
> > > at
> > >
> > >
> >
> org.drools.planner.core.AbstractSolver.solve(AbstractSolver.java:41)
> > > 48.
> > > at
> > >
> > >
> >
> org.drools.planner.benchmark.SolverBenchmarkSuite.benchmark(SolverBenchmarkSuite.java:196)
> > > 49.
> > > at
> > >
> > >
> >
> org.drools.planner.benchmark.XmlSolverBenchmarker.benchmark(XmlSolverBenchmarker.java:72)
> > > 50.
> > > at
> > >
> > >
> >
> org.drools.planner.examples.common.app.CommonBenchmarkApp.process(CommonBenchmarkApp.java:25)
> > > 51.
> > > at
> > >
> > >
> >
> org.drools.planner.examples.examination.app.ExaminationBenchmarkApp.main(ExaminationBenchmarkApp.java:27)
> > > 52.
> > > at
> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > > Method)
> > > 53.
> > > at
> > >
> > >
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > > 54.
> > > at
> > >
> > >
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > > 55.
> > > at
> > java.lang.reflect.Method.invoke(Method.java:597)
> > > 56.
> > > at
> > >
> > >
> >
> com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
> > >
> > >
> > >
> > > 2) Run NQueensSmokeTest
> > >
> > > java.lang.NullPointerException
> > > at
> > >
> >
> org.drools.core.util.RightTupleList.matches(RightTupleList.java:190)
> > > at
> > >
> >
> org.drools.core.util.RightTupleIndexHashTable.get(RightTupleIndexHashTable.java:301)
> > > at
> > >
> >
> org.drools.core.util.RightTupleIndexHashTable.getFirst(RightTupleIndexHashTable.java:87)
> > > at
> > org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:260)
> > > at
> > org.drools.reteoo.BetaNode.modifyLeftTuple(BetaNode.java:336)
> > > at
> > >
> >
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateModifyObject(CompositeLeftTupleSinkAdapter.java:204)
> > > at
> > >
> >
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateModifyObject(CompositeLeftTupleSinkAdapter.java:219)
> > > at
> > >
> >
> org.drools.reteoo.LeftInputAdapterNode.modifyObject(LeftInputAdapterNode.java:154)
> > > at
> > >
> >
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:444)
> > > at
> > >
> >
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:412)
> > > at
> > >
> >
> org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:262)
> > > at
> > >
> >
> org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:174)
> > > at
> > >
> >
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1392)
> > > at
> > >
> >
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
> > > at
> > >
> >
> org.drools.planner.examples.nqueens.solver.move.YChangeMove.doMove(YChangeMove.java:38)
> > > at
> > >
> >
> org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:119)
> > > at
> > >
> >
> org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:95)
> > > at
> > >
> >
> org.drools.planner.core.localsearch.DefaultLocalSearchSolver.solveImplementation(DefaultLocalSearchSolver.java:105)
> > > at
> > >
> >
> org.drools.planner.core.AbstractSolver.solve(AbstractSolver.java:41)
> > > at
> > >
> >
> org.drools.planner.examples.nqueens.NQueensSmokeTest.testSmoke(NQueensSmokeTest.java:30)
> > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > Method)
> > > at
> > >
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > > at
> > >
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > > at
> > >
> >
> com.intellij.junit3.JUnit3IdeaTestRunner.doRun(JUnit3IdeaTestRunner.java:108)
> > > at
> > >
> >
> com.intellij.junit3.JUnit3IdeaTestRunner.startRunnerWithArgs(JUnit3IdeaTestRunner.java:42)
> > > at
> > >
> >
> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:165)
> > > at
> > >
> >
> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:60)
> > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > Method)
> > > at
> > >
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > > at
> > >
> >
> com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
> > >
> > > 3) Run SmartTravelingTournamentBenchmarkApp
> > >
> > > Exception in thread "main" java.lang.NullPointerException
> > > at
> > >
> >
> org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateModifyChildLeftTuple(SingleLeftTupleSinkAdapter.java:198)
> > > at
> > org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:304)
> > > at
> > org.drools.reteoo.BetaNode.modifyLeftTuple(BetaNode.java:336)
> > > at
> > >
> >
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateModifyObject(CompositeLeftTupleSinkAdapter.java:204)
> > > at
> > >
> >
> org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateModifyObject(CompositeLeftTupleSinkAdapter.java:219)
> > > at
> > >
> >
> org.drools.reteoo.LeftInputAdapterNode.modifyObject(LeftInputAdapterNode.java:154)
> > > at
> > >
> >
> org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:444)
> > > at
> > >
> >
> org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:412)
> > > at
> > >
> >
> org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:262)
> > > at
> > >
> >
> org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:174)
> > > at
> > >
> >
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1392)
> > > at
> > >
> >
> org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1288)
> > > at
> > >
> >
> org.drools.planner.examples.travelingtournament.solver.smart.move.MultipleMatchListRotateMove.rotateList(MultipleMatchListRotateMove.java:59)
> > > at
> > >
> >
> org.drools.planner.examples.travelingtournament.solver.smart.move.MultipleMatchListRotateMove.doMove(MultipleMatchListRotateMove.java:44)
> > > at
> > >
> >
> org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:117)
> > > at
> > >
> >
> org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:95)
> > > at
> > >
> >
> org.drools.planner.core.localsearch.DefaultLocalSearchSolver.solveImplementation(DefaultLocalSearchSolver.java:105)
> > > at
> > >
> >
> org.drools.planner.core.AbstractSolver.solve(AbstractSolver.java:41)
> > > at
> > >
> >
> org.drools.planner.benchmark.SolverBenchmarkSuite.benchmark(SolverBenchmarkSuite.java:196)
> > > at
> > >
> >
> org.drools.planner.benchmark.XmlSolverBenchmarker.benchmark(XmlSolverBenchmarker.java:72)
> > > at
> > >
> >
> org.drools.planner.examples.common.app.CommonBenchmarkApp.process(CommonBenchmarkApp.java:25)
> > > at
> > >
> >
> org.drools.planner.examples.travelingtournament.app.smart.SmartTravelingTournamentBenchmarkApp.main(SmartTravelingTournamentBenchmarkApp.java:28)
> > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > Method)
> > > at
> > >
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > > at
> > >
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > > at java.lang.reflect.Method.invoke(Method.java:597)
> > > at
> > >
> >
> com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
> > >
> > > --
> > > With kind regards,
> > > Geoffrey De Smet
> > >
> > > _______________________________________________
> > > rules-dev mailing list
> > > rules-dev at lists.jboss.org
> > <mailto:rules-dev at lists.jboss.org>
> > <mailto:rules-dev at lists.jboss.org
> > <mailto:rules-dev at lists.jboss.org>>
> > > https://lists.jboss.org/mailman/listinfo/rules-dev
> > >
> > >
> > >
> > >
> > > --
> > > Edson Tirelli
> > > JBoss Drools Core Development
> > > JBoss by Red Hat @ www.jboss.com <http://www.jboss.com>
> > <http://www.jboss.com>
> > >
> > >
> > >
> >
> ------------------------------------------------------------------------
> > >
> > > _______________________________________________
> > > rules-dev mailing list
> > > rules-dev at lists.jboss.org <mailto:rules-dev at lists.jboss.org>
> > > https://lists.jboss.org/mailman/listinfo/rules-dev
> >
> > _______________________________________________
> > rules-dev mailing list
> > rules-dev at lists.jboss.org <mailto:rules-dev at lists.jboss.org>
> > https://lists.jboss.org/mailman/listinfo/rules-dev
> >
> >
> >
> >
> > --
> > Edson Tirelli
> > JBoss Drools Core Development
> > JBoss by Red Hat @ www.jboss.com <http://www.jboss.com>
> >
> >
> >
> >
> > --
> > Edson Tirelli
> > JBoss Drools Core Development
> > JBoss by Red Hat @ www.jboss.com <http://www.jboss.com>
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > rules-dev mailing list
> > rules-dev at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-dev
>
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>
--
Edson Tirelli
JBoss Drools Core Development
JBoss by Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20100311/1fac3154/attachment-0001.html
More information about the rules-dev
mailing list