ECJ-INTEREST-L Archives

December 2018

ECJ-INTEREST-L@LISTSERV.GMU.EDU

Options: Use Monospaced Font
Show HTML Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Andrew Lensen <[log in to unmask]>
Reply To:
ECJ Evolutionary Computation Toolkit <[log in to unmask]>
Date:
Wed, 5 Dec 2018 14:21:07 +1300
Content-Type:
multipart/alternative
Parts/Attachments:
text/plain (1945 bytes) , text/html (2938 bytes)
Thanks all for the advice -- I ended up extending the NSGA2Breeder to keep
a record of the bred individuals so far and continue to produce individuals
until they were all unique. Indeed this doesn't work with more than one
breed thread, but this is a reasonable limitation as breeding is not a
significant component of the computational time for my workload anyway.

Ngā mihi,
Andrew Lensen


On Fri, 30 Nov 2018 at 15:58, Sean Luke <[log in to unmask]> wrote:

> > On Nov 29, 2018, at 6:58 PM, Andrew Lensen <[log in to unmask]>
> wrote:
> >
> > What is the most ECJ-esque way of going about ensuring that any
> individuals duplicated in a population by the breeder are removed? (using
> NSGA-II, if important). I see ECJ has a UniquePipeline, but this seems to
> stop the new population containing any of the individuals from the old
> population, not within the *same* population.
>
> Not exactly.  When asked to produce N individuls, UniquePipeline
> repeatedly generates individuals from its source until it has created N
> unique individuals (using a HashSet).
>
> So if you had a pipeline like this:
>
>         Mutate <- Crossover <- TournamentSelect
>
> You could modify it to look like this:
>
>         UniquePipeline <- Mutate <- Crossover <- TournamentSelect
>
> ... and it'd do what you want if you have only one breeding thread.  The
> reason is that SimpleBreeder will ask the top-level breeding pipeline to
> create the whole subpopulation's worth at one time.  Let's say that's N
> individuals.  So UniquePipeline will produce N unique individuals by
> repeatedly requesting and testing individuals from the Mutate pipeline.
>
> If you have multiple threads however, all you'll be able to guarantee is
> that *each thread*'s set of individuals will contain unique individuals,
> not that they're unique across all sets.
>
> I think UniquePipeline will likely do what you want, since NSGA-II's
> breeder uses the same core breeding mechanism as SimpleBreeder.
>
> Sean
>


ATOM RSS1 RSS2