Subject: | |
From: | |
Reply To: | |
Date: | Wed, 14 Dec 2005 14:32:17 -0500 |
Content-Type: | text/plain |
Parts/Attachments: |
|
|
ADMs are used identically to ADFs: but they evaluate child trees
repeatedly and on-the-fly as called for in the remote tree. This
emulates one essential difference between a macro and a function in
Lisp.
That being said, I don't think an ADM is exactly what you're looking
for. Why not just write a nonterminal node which does a loop on its
kids like below?
Sean
On Dec 14, 2005, at 2:26 PM, George Coles wrote:
> Thanks for the tip. I have never used ADMs, for some reason I find
> them
> confusing - for example, should I call super.eval within the evaluate
> method?
>
> Sean Luke wrote:
>
>> It depends on how you want to do loops. What do you mean by
>> automatically-defined-loops exactly? It seems to me that the
>> straightforward way is to just have a loop macro as one of your
>> nodes, whose eval() method looks something like this:
>>
>> result = empty
>> n = eval first child
>> loop n times or until MAX_ALLOWED_LOOPS:
>> result = eval second child
>> return result
>>
>> Or you could have a while loop along these lines:
>>
>> count = 0;
>> loop up to MAX_ALLOWED_LOOPS:
>> n = eval first child
>> if n == true then eval second child and return
>> return empty
>>
>> Sean
>>
>> On Dec 7, 2005, at 7:55 PM, George Coles wrote:
>>
>>> Hi,
>>> Can anyone point me to an example of automatically defined loops
>>> that works with tree-based GP? Has anyone implemented loops in ECJ?
>>> I am
>>> contemplating beginning to add this feature to my copy of ECJ and it
>>> seems a bit daunting. Could the ADF stack be leveraged somehow to do
>>> this? As an aside, it seems odd that iteration and recursion are not
>>> more popular as a topic of discussion. I expect that I will really
>>> need
>>> iteration, at least, in my project, and I would think that many
>>> people
>>> would find it very valuable.
>>>
>>> Thanks
>>> George Coles
>>>
>>
|
|
|