Print

Print


Thanks for your fast reply. I did not know the behaviour of the Lisp 
function Prog.
Youre right, ECJ is a heavy program for experimenting the first time but 
still I am
convinced that it is ther right way.
Though, I have to concrete my former question:

Say if you have:

Terminals = {Sensor1 (..), {0..255} }
Functions = {+, -, (...), sleep, setMotor}

There is the conflict that each function can have another function as 
child node. But
something like ( + (Sensor1 Sleep(100) ) does not make any sense because 
there is
no meaningfull return value of something like 'sleep' or 'setMotor' and 
can not be
evaluated.
So I want to figure out if this is a general problem with the structure 
of my function set
or if there is any (good) way to control this via ECJ.


Finally I will use a simulator as well as a real robot. The simulator is 
called Breve
(www.spiderland.org). Because it is written in C  I first wanted to 
write a plugin
with help of the OpenBeagle Framework (your "rival"). But there are many 
problems
regarding the plugin development so I finally decided to take a more 
familiar java
framework and do the communication between simulator and GP-Kernel via 
system-
independent sockets.


Sean Luke wrote:
> PROG was Koza's attempt to provide block-like functionality similar to 
> Lisp's "progn" or "prog1" functions.  But in Lisp, ALL functions 
> return values.  (progn . . . . ) returns the value of the last item 
> evaluated within it.  prog1 returns the value of the first item.
>
> There's absolutely no reason why ECJ can't be set up to do that also.  
> All nodes can return values if you wish.
>
> If you're new to GP as well as ECJ, then ECJ may be somewhat 
> daunting.  And if you're doing control of an *actual* robot, this is 
> probably going to be too slow as evolutionary computation methods 
> generally take a very large number of evaluations.  I presume you're 
> doing this in simulation?  If so, what simulator?  Robotics projects 
> are always interesting to our group -- see 
> http://cs.gmu.edu/~eclab/robots/flockbots/
>
> Sean
>
> On Jun 12, 2006, at 2:44 PM, Serethos wrote:
>
>> Im very new to ECJ and GP so I need a little Basic help. I want to
>>
>> realize a control program for a robot with servo motors and some 
>> IR-Sensors. To control him I take something like that:
>>
>> Terminal Set = {IR0, IR1, ..IRn, Constant:0.255}
>> Function Set = {+, -, /, *, sleep(x), SetServo0, 
>> SetServo1,..SetServon, Proc4, <, >, ...}
>>
>> As I understand the Proc-Function (like in Koza's Ant control) is 
>> only a way to express a serial chain of commands. It has no return 
>> value and therfore can't be a node to most other functions like +, -, 
>> sleep etc. (while normal arithmetic functions with a return value are 
>> "node-compŘatible" to each other)
>>
>> How can I manage this constraints?
>