[Paradiseo-help] Trying to use ParadisEO-PEO

Clément Perrod clement.perrod at gmail.com
Mar 14 Avr 18:25:16 CEST 2009


On Tue, Apr 14, 2009 at 3:30 PM, paradiseo help
<paradiseo-help at lists.gforge.inria.fr> wrote:
> Hi,
>
> In a parallel evaluation, when a process has finished evaluating an
> individual, it starts evaluating a new one. Hence, assuming
> we have to evaluate a population of 200 individuals on two processes, and if
> for some reason, one process is slower than the other,
> it may that one process evaluates more individuals than the other one.
>
> However, in this particular case, if you take a look in Lesson3 code you
> will notice that there is a hybridisation between an evolutionary algorithm
> and
> a local search. This explains why the lesson runs slower than the first two
> lessons. Therefore, if you have used the same code as in Lesson 3 you need
> to remove the local search (moTS part) and try again.

Yes I saw for the local search but as I explained I am applying the
Lesson 3 to the CVRPTW problem. So there is no local search and the
evaluation function is very very basic.
I still not understand why the evaluation parallel version is slower
than a normal one (even not considering the Lesson1 or 2), if it does
work as explained.

>
> Eventually, GetNodeRank is a function that merely returns the rank of the
> current process. It does not retrieve the results.
> This answers implicitly the last question since, having all the results in
> hand, all you need to do is just to compare between
> these results and display only the best.
>
> An example of code performing this could be the following:
>
>   eoPop<Problem> pop1(param.popSize, chromInit);
>   eoPop<Problem> pop2(param.popSize, chromInit);
>                     .
>                     .
>                     .
>   peo :: run( );
>   peo :: finalize( );
>
>   if (getNodeRank()==1)
>   {
>       pop1.sort();
>       pop2.sort();
>       if (pop1[0].fitness() > pop2[0].fitness())
>           cout << "Best solution found\t" << pop1[0].fitness() << endl;
>      else
>           cout << "Best solution found\t" << pop2[0].fitness() << endl;
>   }
>

If I understand what you just said, the first node is always the
master one and I can access all information there. For example if I
have pop1 to pop10 I can always process comparison on the first node.
That means the first node is the last to have an hand on the program?

Thanks for your rapidity to answer me,

Sincerely,

-- 
Clément Perrod
EPITA 2009




Plus d'informations sur la liste de diffusion Paradiseo-help