Re: [rules-users] Drools solver info => provide DSL instead of DRL to Drools Solver

2009-11-22 Thread Geoffrey De Smet
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

2009-11-17 Thread dmzpippo-drools
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

2009-11-17 Thread dmzpippo-drools
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

2009-11-12 Thread Geoffrey De Smet
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