Print

Print


The fundamental problem is not the need to modify ec.Evolve to do a
loop -- that's quite trivial actually.  The big issue is that ECJ as it
presently stands has several global variables (in Clique subclasses
mostly) which must be removed or they must be erased each loop through.

You'll be happy to hear that in an upcoming version we will have some
significant modifications to ECJ which, among other things, remove
those variables and other effects, thus rendering ECJ entirely modular:
you can make an  EvolutionState, run it, destroy it, make another, run
two at the same time, etc., all in the same process.  In addition to
making loops in ECJ easy, it also enables the creation of a GUI which
loads (and destroys) EvolutionStates as subobjects.

So the simplest solution is: hang on for about a month.  If you need
something sooner, contact me directly and maybe we can work something
out.

Sean

On Apr 12, 2005, at 8:57 AM, Hirsch Laurence wrote:

> Returning to the discussion below after a long break from ECJ.  Both
> the
> suggestions work fine, however ideally I would like to implement
> multiple
> runs in Java (i.e. operating system independent).  Also I would like to
> execute the runs sequentially so that I could terminate if a good
> enough
> individual is found.  My problem is I don't see an obvious place to
> put an
> outer loop in ECJ without changing quite a few things. Does anyone
> know a
> simple solution?
>
> Thanks,
>
>
> Laurie
>
>
> -----Original Message-----
> From: Sean Luke [mailto:[log in to unmask]]
> Sent: 09 July 2004 17:15
> To: [log in to unmask]
> Subject: Re: Multiple Runs
>
> They'd be equal more or less, but of course they'd all write out to one
> big stat file by default.  I've not done it with 50 subpopulations
> before -- I always tended to reserve subpopulations for other purposes.
>   But I think it'd probably work just fine.
>
> Sean
>
> On Jul 9, 2004, at 11:59 AM, T. S. wrote:
>
>> Out of curiosity how is this better than running say 50
>> sub-populations
>> where there is no inter sub-population breeding? Or would they be
>> equal,
>> except for the need of 50 seeds?
>>
>> -Travis
>>
>>
>>> From: Sean Luke <[log in to unmask]>
>>> Reply-To: ECJ Evolutionary Computation Toolkit
>>> <[log in to unmask]>
>>> To: [log in to unmask]
>>> Subject: Re: Multiple Runs
>>> Date: Fri, 9 Jul 2004 11:42:14 -0400
>>>
>>> This little shell script will run ECJ in single-threaded mode 50
>>> times
>>> using the seeds START+1 through START+50, and the file MYFILE.PARAMS.
>>> Each stat file will be outputted as 1.out.stat through 50.out.stat in
>>> your current directory.  You can pass in additional parameters using
>>> the typical -p foo=bar format.  Save it as "ecj" or something and put
>>> it in an appropriate place.
>>>
>>> USAGE
>>>        ecj MYFILE.PARAMS START [-p param]*
>>>
>>> EXAMPLE.  Will run ant 50 times with just 4-generation runs,
>>>             starting at seed = 101.
>>>        cd ec/app/ant
>>>        ecj ant.params 100 -p generation=4
>>>
>>> THE SCRIPT
>>> -------------------------------
>>> #! /bin/tcsh
>>> @ z=$2
>>> foreach r (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
>>> 23
>>> 24 25 26 27 28 29 30 31 32 33 34 45 36 37 38 39 40 41 42 43 44 45 46
>>> 46
>>> 47 48 49 50)
>>>        @ seed=$z + $r
>>>        java ec.Evolve -file $1 \
>>>                       -p seed.0=$seed \
>>>                       -p stat.file=\$${r}.out.stat \
>>>                                 $argv[*]
>>>        end
>>> echo All Done!
>>> -------------------------------
>>>
>>>
>>> Sean
>>>
>>>
>>>
>>>
>>> On Jul 9, 2004, at 9:03 AM, Hirsch Laurence wrote:
>>>
>>>> Is there a recommended way to implement multiple runs in ECJ?
>>>>
>>>> Thanks,
>>>>
>>>> Laurie
>>
>> _________________________________________________________________
>> MSN 9 Dial-up Internet Access helps fight spam and pop-ups - now 2
>> months
>> FREE! http://join.msn.click-url.com/go/onm00200361ave/direct/01/