Print

Print


It's good to see you got it working.  Sorry I couldn't respond in time  
-- I'm presently in Rome this semester and my turnaround is much  
slower than normal.

I used to have a variant of Artificial Ant which did typed GP for a  
demo example, but sadly I can't find it anywhere.  FWIW, if you search  
the ECJ mailing list archives you'll also find a lot of examples and  
discussion about strongly typed GP.

Sean

On Dec 17, 2009, at 12:11 PM, alibaba wrote:

> Hi all again.
>
> I added the restrinctions that i needed (see bellow). I this thread  
> will be useful to somebody.
>
> Regards.
>
>
> gp.nc.size = 16
>
> gp.nc.7 = ec.gp.GPNodeConstraints
> gp.nc.7.name = ncAND_or_rule
> gp.nc.7.returns = and
> gp.nc.7.size = 2
> gp.nc.7.child.0 = or
> gp.nc.7.child.1 = rule
>
> gp.nc.8 = ec.gp.GPNodeConstraints
> gp.nc.8.name = ncAND_and_rule
> gp.nc.8.returns = and
> gp.nc.8.size = 2
> gp.nc.8.child.0 = and
> gp.nc.8.child.1 = rule
>
> gp.nc.9 = ec.gp.GPNodeConstraints
> gp.nc.9.name = ncAND_rule_rule
> gp.nc.9.returns = and
> gp.nc.9.size = 2
> gp.nc.9.child.0 = rule
> gp.nc.9.child.1 = rule
>
> gp.nc.10 = ec.gp.GPNodeConstraints
> gp.nc.10.name = ncOR_or_rule
> gp.nc.10.returns = or
> gp.nc.10.size = 2
> gp.nc.10.child.0 = or
> gp.nc.10.child.1 = rule
>
> gp.nc.11 = ec.gp.GPNodeConstraints
> gp.nc.11.name = ncOR_and_rule
> gp.nc.11.returns = or
> gp.nc.11.size = 2
> gp.nc.11.child.0 = and
> gp.nc.11.child.1 = rule
>
> ##Not used
> #gp.nc.12 = ec.gp.GPNodeConstraints
> #gp.nc.12.name = ncOR_rule_rule
> #gp.nc.12.returns = or
> #gp.nc.12.size = 2
> #gp.nc.12.child.0 = rule
> #gp.nc.12.child.1 = rule
>
> gp.nc.13 = ec.gp.GPNodeConstraints
> gp.nc.13.name = ncAND_and_and
> gp.nc.13.returns = and
> gp.nc.13.size = 2
> gp.nc.13.child.0 = and
> gp.nc.13.child.1 = and
>
> ##Not used
> #gp.nc.14 = ec.gp.GPNodeConstraints
> #gp.nc.14.name = ncOR_and_and
> #gp.nc.14.returns = or
> #gp.nc.14.size = 2
> #gp.nc.14.child.0 = and
> #gp.nc.14.child.1 = and
>
> gp.nc.15 = ec.gp.GPNodeConstraints
> gp.nc.15.name = ncRule
> gp.nc.15.returns = rule
> gp.nc.15.size = 0
>
>
> gp.fs.0.size = 7
>
> gp.fs.0.func.0 = ec.app.gp.ossimRuleGeneration.func.And
> gp.fs.0.func.0.nc = ncAND_or_rule
>
> gp.fs.0.func.1 = ec.app.gp.ossimRuleGeneration.func.And
> gp.fs.0.func.1.nc = ncAND_and_rule
>
> gp.fs.0.func.2 = ec.app.gp.ossimRuleGeneration.func.And
> gp.fs.0.func.2.nc = ncAND_rule_rule
>
> gp.fs.0.func.3 = ec.app.gp.ossimRuleGeneration.func.Or
> gp.fs.0.func.3.nc = ncOR_or_rule
>
> gp.fs.0.func.4 = ec.app.gp.ossimRuleGeneration.func.Or
> gp.fs.0.func.4.nc = ncOR_and_rule
>
> gp.fs.0.func.5 = ec.app.gp.ossimRuleGeneration.func.Or
> gp.fs.0.func.5.nc = ncOR_rule_rule
>
> gp.fs.0.func.6 = ec.app.gp.ossimRuleGeneration.func.rule
> gp.fs.0.func.6.nc = ncRule
>
>
>
>
>
>
> On Tue, Dec 15, 2009 at 5:32 PM, alibaba <[log in to unmask]> wrote:
> Hi All,
>
> Thanks for keep on reading.
>
> I have found what I was looking for on this thread: The "nil" GPType  
> in GPNodeConstraints. I am indeed trying to add the constraints that  
> my model needs and I'm coming across some troubles.
>
> Let me contextualize the problem. I'm generating a tree of AND and  
> OR non-terminal nodes and a RULE-function as terminal nodes. I want  
> to add some constrains so the generated tree follows this two rules:
>  1) The root of the tree must be an AND function.
>  2) At least one of the childs of the non-terminal nodes must be or  
> a terminal-node (RULE) or an AND node.
>
> I'm trying to add the described constrains like this:
>
> First, I define the GPTypes as follows:
>
> gp.type.a.size = 4 gp.type.a.0.name = nil   # This one might not be  
> necessary gp.type.a.1.name = rule gp.type.a.2.name = and gp.type.a. 
> 3.name = or gp.type.s.size = 0
>
> To fulfill 1) I added the follow tree constrain:
>
> gp.tc.0.returns = and
>
> To fulfill 2) I added the follow node constrains:
>
> gp.nc.size = 10
> #--------------------# gp.nc.7 = ec.gp.GPNodeConstraints gp.nc. 
> 7.name = ncAND gp.nc.7.returns = and gp.nc.7.size = 2 gp.nc.7.child. 
> 0 = rule gp.nc.7.child.1 = or
> #--------------------# gp.nc.8 = ec.gp.GPNodeConstraints gp.nc. 
> 8.name = ncRULE gp.nc.8.returns = rule gp.nc.8.size = 0
> #--------------------#
> gp.nc.9 = ec.gp.GPNodeConstraints gp.nc.9.name = ncOR gp.nc. 
> 9.returns = or gp.nc.9.size = 2 gp.nc.9.child.0 = rule gp.nc.9.child. 
> 1 = and
>
>
> Then I add each constrains to the functions of the function set:
>
> gp.fs.0.func.0 = ec.app.gp.ossimRuleGeneration.func.Or gp.fs.0.func. 
> 0.nc = ncOR
> gp.fs.0.func.1 = ec.app.gp.ossimRuleGeneration.func.rule gp.fs. 
> 0.func.1.nc = ncRULE
> gp.fs.0.func.2 = ec.app.gp.ossimRuleGeneration.func.And gp.fs.0.func. 
> 2.nc = ncAND
>
>
> Note that with this constrains I am being more restrictive that what  
> I have defined in 2), and actually it doesn't work because, as it is  
> obvious, it never finish due there is always a non-terminal node as  
> child in gp.nc.8.child.1 and gp.nc.9.child.1. The problem here is  
> that I need gp.nc.8.child.1 and gp.nc.9.child.1 to be some times AND  
> and some others RULE, so the GP program will eventually finish.
>
> And I will like to set gp.nc.8.child.0 and gp.nc.9.child.0 some  
> times to RULE and some others to AND to fully satisfy 2)
>
> Is there any way? How can I do such things.
>
> Thanks in advance.
>
>
>
> On Tue, Dec 15, 2009 at 10:08 AM, alibaba <[log in to unmask]> wrote:
>
> Hello!
>
> First of all, thanks for reading.
>
> I need to add some Constraints to my GP program so each function  
> that I have can only accept a specific subset of children. For this,  
> should specify this on the params files or I have to add some checks  
> on the checkConstraints method for each GPNode.
>
> Does anybody know an example on the web about this that I can follow?
>
> Thanks in advance.
>
>
>