Re: [rules-users] Drools solver info => provide DSL instead of DRL to Drools Solver
dmzpippo-dro...@yahoo.it schreef: > Hi Geoffrey, > I have modified the LocalSearchSolverConfig class to accept the > tag. Thanks for the patch! If you want credit, state your full name, and I 'll add an @author tag in the javadoc. > To use this tag need gonfigure the XML solverConfig file adding the path > of Drl file and Dsl file associated in two line consecutive in the > configuration file. This code is not the best but is a start It seems a bit wierd to me add both the drl and the dsl in the , so like this: /org/.../file1.drl /org/.../file2.dsl I am going experiment with this instead, and use it in one the examples, before I commit the changes. /org/.../file1.drl /org/.../file2.dsl Just "watch" this issue to get notified when it's committed on trunk: https://jira.jboss.org/jira/browse/JBRULES-2333 > > I send you the code if it can be useful. > I would also ask when it launches the new version of the solver, and if > this will also include other local search algorithms than Tabu Search Simulated annealing and great deluge are available, but they aren't production-ready. Take a look at SimulatedAnnealingAccepter and GreatDelugeAccepter. I've also written a testcase for both. Patches welcome :) I am focusing on conflict based statistics and multi-threading/clustering first. PS: If a patch is more then one file, do use "create patch" in your Eclipse/IntelliJ or "svn diff > jiraNumber.patch". Also, attach it to the jira issue pls. > > with kind regards, > Marco With kind regards, Geoffrey De Smet > > LocalSearchSolverConfig class Code > > > /** > * @author Geoffrey De Smet > */ > @XStreamAlias("localSearchSolver") > public class LocalSearchSolverConfig { > > private Long randomSeed = null; > > @XStreamImplicit(itemFieldName = "scoreDrl") > private List scoreDrlList = null; > @XStreamImplicit(itemFieldName = "scoreDsl")//FIXME adding DslList > private List scoreDslList = null; > @XStreamAlias("scoreDefinition") > private ScoreDefinitionConfig scoreDefinitionConfig = new > ScoreDefinitionConfig(); > > private StartingSolutionInitializer startingSolutionInitializer = null; > private Class > startingSolutionInitializerClass = null; > > @XStreamAlias("termination") > private TerminationConfig terminationConfig = new > TerminationConfig(); // TODO this new is pointless due to xstream > > @XStreamAlias("deciderScoreComparatorFactory") > private DeciderScoreComparatorFactoryConfig > deciderScoreComparatorFactoryConfig > = new DeciderScoreComparatorFactoryConfig(); > @XStreamAlias("selector") > private SelectorConfig selectorConfig = new SelectorConfig(); > @XStreamAlias("accepter") > private AccepterConfig accepterConfig = new AccepterConfig(); > @XStreamAlias("forager") > private ForagerConfig foragerConfig = new ForagerConfig(); > > public Long getRandomSeed() { > return randomSeed; > } > > public void setRandomSeed(Long randomSeed) { > this.randomSeed = randomSeed; > } > > public List getScoreDrlList() { > return scoreDrlList; > } > > public void setScoreDrlList(List scoreDrlList) { > this.scoreDrlList = scoreDrlList; > } > > public List getScoreDslList() { > return scoreDslList; > } > > public void setScoreDslList(List scoreDslList) { > this.scoreDslList = scoreDslList; > } > > public ScoreDefinitionConfig getScoreDefinitionConfig() { > return scoreDefinitionConfig; > } > > public void setScoreDefinitionConfig(ScoreDefinitionConfig > scoreDefinitionConfig) { > this.scoreDefinitionConfig = scoreDefinitionConfig; > } > > public StartingSolutionInitializer getStartingSolutionInitializer() { > return startingSolutionInitializer; > } > > public void > setStartingSolutionInitializer(StartingSolutionInitializer > startingSolutionInitializer) { > this.startingSolutionInitializer = startingSolutionInitializer; > } > > public Class > getStartingSolutionInitializerClass() { > return startingSolutionInitializerClass; > } > > public void > setStartingSolutionInitializerClass(Class > startingSolutionInitializerClass) { > this.startingSolutionInitializerClass = > startingSolutionInitializerClass; > } > > public TerminationConfig getTerminationConfig() { > return terminationConfig; > } > > public void setTerminationConfig(TerminationConfig terminationConfig) { > this.terminationConfig = terminationConfig; > } > > public DeciderScoreComparatorFactoryConfig > getDeciderScoreComparatorFactoryConfig() { > return deciderScoreComparatorFactoryConfig; > } > > public void setDeciderScoreComparatorFactoryConfig( > DeciderScoreComparatorFactoryConfig > deciderScoreComparatorFactoryConfig) { > this.deciderScoreComparator
Re: [rules-users] Drools solver info => provide DSL instead of DRL to Drools Solver
Hi Geoffrey, I have modified the LocalSearchSolverConfig class to accept the tag. To use this tag need gonfigure the XML solverConfig file adding the path of Drl file and Dsl file associated in two line consecutive in the configuration file. This code is not the best but is a start I send you the code if it can be useful. I would also ask when it launches the new version of the solver, and if this will also include other local search algorithms than Tabu Search with kind regards, Marco LocalSearchSolverConfig class Code /** * @author Geoffrey De Smet */ @XStreamAlias("localSearchSolver") public class LocalSearchSolverConfig { private Long randomSeed = null; @XStreamImplicit(itemFieldName = "scoreDrl") private List scoreDrlList = null; @XStreamImplicit(itemFieldName = "scoreDsl")//FIXME adding DslList private List scoreDslList = null; @XStreamAlias("scoreDefinition") private ScoreDefinitionConfig scoreDefinitionConfig = new ScoreDefinitionConfig(); private StartingSolutionInitializer startingSolutionInitializer = null; private Class startingSolutionInitializerClass = null; @XStreamAlias("termination") private TerminationConfig terminationConfig = new TerminationConfig(); // TODO this new is pointless due to xstream @XStreamAlias("deciderScoreComparatorFactory") private DeciderScoreComparatorFactoryConfig deciderScoreComparatorFactoryConfig = new DeciderScoreComparatorFactoryConfig(); @XStreamAlias("selector") private SelectorConfig selectorConfig = new SelectorConfig(); @XStreamAlias("accepter") private AccepterConfig accepterConfig = new AccepterConfig(); @XStreamAlias("forager") private ForagerConfig foragerConfig = new ForagerConfig(); public Long getRandomSeed() { return randomSeed; } public void setRandomSeed(Long randomSeed) { this.randomSeed = randomSeed; } public List getScoreDrlList() { return scoreDrlList; } public void setScoreDrlList(List scoreDrlList) { this.scoreDrlList = scoreDrlList; } public List getScoreDslList() { return scoreDslList; } public void setScoreDslList(List scoreDslList) { this.scoreDslList = scoreDslList; } public ScoreDefinitionConfig getScoreDefinitionConfig() { return scoreDefinitionConfig; } public void setScoreDefinitionConfig(ScoreDefinitionConfig scoreDefinitionConfig) { this.scoreDefinitionConfig = scoreDefinitionConfig; } public StartingSolutionInitializer getStartingSolutionInitializer() { return startingSolutionInitializer; } public void setStartingSolutionInitializer(StartingSolutionInitializer startingSolutionInitializer) { this.startingSolutionInitializer = startingSolutionInitializer; } public Class getStartingSolutionInitializerClass() { return startingSolutionInitializerClass; } public void setStartingSolutionInitializerClass(Class startingSolutionInitializerClass) { this.startingSolutionInitializerClass = startingSolutionInitializerClass; } public TerminationConfig getTerminationConfig() { return terminationConfig; } public void setTerminationConfig(TerminationConfig terminationConfig) { this.terminationConfig = terminationConfig; } public DeciderScoreComparatorFactoryConfig getDeciderScoreComparatorFactoryConfig() { return deciderScoreComparatorFactoryConfig; } public void setDeciderScoreComparatorFactoryConfig( DeciderScoreComparatorFactoryConfig deciderScoreComparatorFactoryConfig) { this.deciderScoreComparatorFactoryConfig = deciderScoreComparatorFactoryConfig; } public SelectorConfig getSelectorConfig() { return selectorConfig; } public void setSelectorConfig(SelectorConfig selectorConfig) { this.selectorConfig = selectorConfig; } public AccepterConfig getAccepterConfig() { return accepterConfig; } public void setAccepterConfig(AccepterConfig accepterConfig) { this.accepterConfig = accepterConfig; } public ForagerConfig getForagerConfig() { return foragerConfig; } public void setForagerConfig(ForagerConfig foragerConfig) { this.foragerConfig = foragerConfig; } // // Builder methods // public LocalSearchSolver buildSolver() { DefaultLocalSearchSolver localSearchSolver = new DefaultLocalSearchSolver(); if (randomSeed != null) { localSearchSolver.setRandomSeed(randomSeed); } else { localSearchSolver.setRandomSeed(0L); } localSearchSolver.setRuleBase(buildRuleBase()); ScoreDefinition scoreDefinition = scoreDefinitionCon
Re: [rules-users] Drools solver info => provide DSL instead of DRL to Drools Solver
Hi Geoffrey, I have modified the LocalSearchSolverConfig class to accept the tag. To use this tag need gonfigure the XML solverConfig file adding the path of Drl file and Dsl file associated in two line consecutive in the configuration file. This code is not the best but is a start I send you the code if it can be useful. I would also ask when it launches the new version of the solver, and if this will also include other local search algorithms than Tabu Search with kind regards, Marco LocalSearchSolverConfig class Code /** * @author Geoffrey De Smet */ @XStreamAlias("localSearchSolver") public class LocalSearchSolverConfig { private Long randomSeed = null; @XStreamImplicit(itemFieldName = "scoreDrl") private List scoreDrlList = null; @XStreamImplicit(itemFieldName = "scoreDsl")//FIXME adding DslList private List scoreDslList = null; @XStreamAlias("scoreDefinition") private ScoreDefinitionConfig scoreDefinitionConfig = new ScoreDefinitionConfig(); private StartingSolutionInitializer startingSolutionInitializer = null; private Class startingSolutionInitializerClass = null; @XStreamAlias("termination") private TerminationConfig terminationConfig = new TerminationConfig(); // TODO this new is pointless due to xstream @XStreamAlias("deciderScoreComparatorFactory") private DeciderScoreComparatorFactoryConfig deciderScoreComparatorFactoryConfig = new DeciderScoreComparatorFactoryConfig(); @XStreamAlias("selector") private SelectorConfig selectorConfig = new SelectorConfig(); @XStreamAlias("accepter") private AccepterConfig accepterConfig = new AccepterConfig(); @XStreamAlias("forager") private ForagerConfig foragerConfig = new ForagerConfig(); public Long getRandomSeed() { return randomSeed; } public void setRandomSeed(Long randomSeed) { this.randomSeed = randomSeed; } public List getScoreDrlList() { return scoreDrlList; } public void setScoreDrlList(List scoreDrlList) { this.scoreDrlList = scoreDrlList; } public List getScoreDslList() { return scoreDslList; } public void setScoreDslList(List scoreDslList) { this.scoreDslList = scoreDslList; } public ScoreDefinitionConfig getScoreDefinitionConfig() { return scoreDefinitionConfig; } public void setScoreDefinitionConfig(ScoreDefinitionConfig scoreDefinitionConfig) { this.scoreDefinitionConfig = scoreDefinitionConfig; } public StartingSolutionInitializer getStartingSolutionInitializer() { return startingSolutionInitializer; } public void setStartingSolutionInitializer(StartingSolutionInitializer startingSolutionInitializer) { this.startingSolutionInitializer = startingSolutionInitializer; } public Class getStartingSolutionInitializerClass() { return startingSolutionInitializerClass; } public void setStartingSolutionInitializerClass(Class startingSolutionInitializerClass) { this.startingSolutionInitializerClass = startingSolutionInitializerClass; } public TerminationConfig getTerminationConfig() { return terminationConfig; } public void setTerminationConfig(TerminationConfig terminationConfig) { this.terminationConfig = terminationConfig; } public DeciderScoreComparatorFactoryConfig getDeciderScoreComparatorFactoryConfig() { return deciderScoreComparatorFactoryConfig; } public void setDeciderScoreComparatorFactoryConfig( DeciderScoreComparatorFactoryConfig deciderScoreComparatorFactoryConfig) { this.deciderScoreComparatorFactoryConfig = deciderScoreComparatorFactoryConfig; } public SelectorConfig getSelectorConfig() { return selectorConfig; } public void setSelectorConfig(SelectorConfig selectorConfig) { this.selectorConfig = selectorConfig; } public AccepterConfig getAccepterConfig() { return accepterConfig; } public void setAccepterConfig(AccepterConfig accepterConfig) { this.accepterConfig = accepterConfig; } public ForagerConfig getForagerConfig() { return foragerConfig; } public void setForagerConfig(ForagerConfig foragerConfig) { this.foragerConfig = foragerConfig; } // // Builder methods // public LocalSearchSolver buildSolver() { DefaultLocalSearchSolver localSearchSolver = new DefaultLocalSearchSolver(); if (randomSeed != null) { localSearchSolver.setRandomSeed(randomSeed); } else { localSearchSolver.setRandomSeed(0L); } localSearchSolver.setRuleBase(buildRuleBase()); ScoreDefinition scoreDefinition = scoreDefinitionCo
Re: [rules-users] Drools solver info => provide DSL instead of DRL to Drools Solver
Hi Marco, [I've send this answer to the drools user list, please post any follow ups on the user list instead of mailing it directly to me. You can use nntp://news.gmane.org #gmane.comp.java.drools.user if you want to keep your mailbox clean.] Drools Solver's xml configuration doesn't support entry's yet That shouldn't be to much work. I just created a JIRA for it: https://jira.jboss.org/jira/browse/JBRULES-2333 Patch welcome (attached to that jira) and I would apply it within a week on trunk. Short of doing the patch on trunk, you can do this workaround: - build the Solver directly yourself (basically just fisheye.jboss.org for XmlSolverConfigurer's code). Not recommended. - supply a an empty drl to , build the Solver, cast it to DefaultLocalSearchSolver and replace the rulebase. Both are not ideal in the long run though. With kind regards, Geoffrey De Smet Marco caminiti schreef: > Hi Geoffrey, > I'm Marco Caminiti an Italian student of computer engineering. I'm > using drools solver for my thesis and I have a problem. > > For the thesis I made a model of bin packing writing the rules on a > drl file, and thus far, so good. > > Now I want to rewrite the rules that must use the solver in a specific > language, but if I put in the configuration file of the solver the URL > of the file DSL (or file DSLR) the solver crashes because it can not > be configured. > > I ask whether you can use the solver with DSL tool and if so how could > I do. > > Sorry to bother you but on this argument I have not found > documentation on the Internet, more than anything else I'm sorry for > my English. > > Thanks from now for the answer. > Marco Caminiti > > ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users