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?
>
|