new style peo

git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1021 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
canape 2008-02-29 14:08:59 +00:00
commit edb6d65a7b
34 changed files with 407 additions and 386 deletions

View file

@ -80,10 +80,10 @@ COMM_ID getKey (const Communicable * __comm)
} }
void Communicable :: lock () void Communicable :: lock ()
{ {
sem_wait (& sem_lock); sem_wait (& sem_lock);
} }
void Communicable :: unlock () void Communicable :: unlock ()
{ {

View file

@ -39,13 +39,16 @@
void CompleteTopology :: setNeighbors (Cooperative * __mig, void CompleteTopology :: setNeighbors (Cooperative * __mig,
std :: vector <Cooperative *> & __from, std :: vector <Cooperative *> & __from,
std :: vector <Cooperative *> & __to) { std :: vector <Cooperative *> & __to)
{
__from.clear () ; __from.clear () ;
__to.clear () ; __to.clear () ;
for (unsigned i = 0; i < mig.size (); i ++) { for (unsigned i = 0; i < mig.size (); i ++)
if (mig [i] != __mig) { {
if (mig [i] != __mig)
{
__from.push_back (mig [i]); __from.push_back (mig [i]);
__to.push_back (mig [i]); __to.push_back (mig [i]);
} }

View file

@ -39,13 +39,14 @@
#include "topology.h" #include "topology.h"
class CompleteTopology : public Topology { class CompleteTopology : public Topology
{
public : public :
void setNeighbors (Cooperative * __mig, void setNeighbors (Cooperative * __mig,
std :: vector <Cooperative *> & __from, std :: vector <Cooperative *> & __from,
std :: vector <Cooperative *> & __to); std :: vector <Cooperative *> & __to);
}; };
#endif #endif

View file

@ -41,13 +41,16 @@
void RandomTopology :: setNeighbors (Cooperative * __mig, void RandomTopology :: setNeighbors (Cooperative * __mig,
std :: vector <Cooperative *> & __from, std :: vector <Cooperative *> & __from,
std :: vector <Cooperative *> & __to) { std :: vector <Cooperative *> & __to)
{
__from.clear () ; __from.clear () ;
__to.clear () ; __to.clear () ;
for (unsigned i = 0; i < mig.size (); i ++) { for (unsigned i = 0; i < mig.size (); i ++)
if (mig [i] != __mig && rng.uniform() < 0.5 ) { {
if (mig [i] != __mig && rng.uniform() < 0.5 )
{
__from.push_back (mig [i]); __from.push_back (mig [i]);
__to.push_back (mig [i]); __to.push_back (mig [i]);
} }

View file

@ -39,13 +39,14 @@
#include "topology.h" #include "topology.h"
class RandomTopology : public Topology { class RandomTopology : public Topology
{
public : public :
void setNeighbors (Cooperative * __mig, void setNeighbors (Cooperative * __mig,
std :: vector <Cooperative *> & __from, std :: vector <Cooperative *> & __from,
std :: vector <Cooperative *> & __to); std :: vector <Cooperative *> & __to);
}; };
#endif #endif

View file

@ -41,29 +41,35 @@ StarTopology :: StarTopology () : center( NULL ) {}
void StarTopology :: setNeighbors (Cooperative * __mig, void StarTopology :: setNeighbors (Cooperative * __mig,
std :: vector <Cooperative *> & __from, std :: vector <Cooperative *> & __from,
std :: vector <Cooperative *> & __to) { std :: vector <Cooperative *> & __to)
{
assert( center != NULL ); assert( center != NULL );
__from.clear () ; __from.clear () ;
__to.clear () ; __to.clear () ;
if ( __mig == center ) { if ( __mig == center )
{
for (unsigned i = 0; i < mig.size (); i ++) { for (unsigned i = 0; i < mig.size (); i ++)
if (mig [i] != center) { {
if (mig [i] != center)
{
__from.push_back (mig [i]); __from.push_back (mig [i]);
__to.push_back (mig [i]); __to.push_back (mig [i]);
} }
} }
} }
else { else
{
__from.push_back (center); __from.push_back (center);
__to.push_back (center); __to.push_back (center);
} }
} }
void StarTopology :: setCenter (Cooperative& __center) { void StarTopology :: setCenter (Cooperative& __center)
{
center = &__center; center = &__center;
} }

View file

@ -39,9 +39,10 @@
#include "topology.h" #include "topology.h"
class StarTopology : public Topology { class StarTopology : public Topology
{
public : public :
StarTopology (); StarTopology ();
@ -51,9 +52,9 @@ public :
void setCenter (Cooperative& __center); void setCenter (Cooperative& __center);
private : private :
Cooperative* center; Cooperative* center;
}; };
#endif #endif

View file

@ -43,10 +43,10 @@ Topology :: ~ Topology ()
} }
void Topology :: add (Cooperative & __mig) void Topology :: add (Cooperative & __mig)
{ {
mig.push_back (& __mig) ; mig.push_back (& __mig) ;
} }
Topology :: operator std :: vector <Cooperative *>& () Topology :: operator std :: vector <Cooperative *>& ()
{ {

View file

@ -65,7 +65,11 @@ struct SyncCompare
std::vector< SyncEntry >::const_iterator itA = syncA.begin(); std::vector< SyncEntry >::const_iterator itA = syncA.begin();
std::vector< SyncEntry >::const_iterator itB = syncB.begin(); std::vector< SyncEntry >::const_iterator itB = syncB.begin();
while ( itA != syncA.end() && (*itA).runner == (*itB).runner ) { itA++; itB++; } while ( itA != syncA.end() && (*itA).runner == (*itB).runner )
{
itA++;
itB++;
}
return ( (itA == syncA.end()) ) ? false : ( (*itA).runner < (*itB).runner ); return ( (itA == syncA.end()) ) ? false : ( (*itA).runner < (*itB).runner );
} }

View file

@ -63,7 +63,8 @@ int main (int __argc, char *__argv[])
eoSegmentCrossover<Indi> crossover; eoSegmentCrossover<Indi> crossover;
eoUniformMutation<Indi> mutation(0.01); eoUniformMutation<Indi> mutation(0.01);
peoTransform<Indi> transform(crossover,0.8,mutation,0.3); peoTransform<Indi> transform(crossover,0.8,mutation,0.3);
/*p*/eoPop < Indi > pop; /*p*/
eoPop < Indi > pop;
pop.append (10, random); pop.append (10, random);
eoPlusReplacement<Indi> replace; eoPlusReplacement<Indi> replace;
eoRandomSelect<Indi> mig_select_one; eoRandomSelect<Indi> mig_select_one;
@ -90,7 +91,8 @@ int main (int __argc, char *__argv[])
eoSegmentCrossover<Indi> crossover2; eoSegmentCrossover<Indi> crossover2;
eoUniformMutation<Indi> mutation2(0.01); eoUniformMutation<Indi> mutation2(0.01);
peoTransform<Indi> transform2(crossover2,0.8,mutation2,0.3); peoTransform<Indi> transform2(crossover2,0.8,mutation2,0.3);
/*p*/eoPop < Indi > pop2; /*p*/
eoPop < Indi > pop2;
pop2.append (10, random2); pop2.append (10, random2);
eoPlusReplacement<Indi> replace2; eoPlusReplacement<Indi> replace2;
eoRandomSelect<Indi> mig_select_one2; eoRandomSelect<Indi> mig_select_one2;

View file

@ -40,12 +40,12 @@
#include <peo> #include <peo>
struct Algorithm struct Algorithm
{ {
void operator()(double & _d) void operator()(double & _d)
{ {
_d = _d * _d; _d = _d * _d;
} }
}; };
int main (int __argc, char * * __argv) int main (int __argc, char * * __argv)
{ {
@ -56,7 +56,7 @@ int main (int __argc, char * * __argv)
std::vector < double > v; std::vector < double > v;
if (getNodeRank()==1) if (getNodeRank()==1)
std::cout<<"\n\nBefore :"; std::cout<<"\n\nBefore :";
for(unsigned i = 0; i< 10; i++) for (unsigned i = 0; i< 10; i++)
{ {
v.push_back(i); v.push_back(i);
if (getNodeRank()==1) if (getNodeRank()==1)
@ -71,7 +71,7 @@ int main (int __argc, char * * __argv)
if (getNodeRank()==1) if (getNodeRank()==1)
{ {
std::cout<<"\n\nAfter :\n"; std::cout<<"\n\nAfter :\n";
for(unsigned i = 0; i< 10; i++) for (unsigned i = 0; i< 10; i++)
std::cout<<v[i]<<"\n"; std::cout<<v[i]<<"\n";
} }
} }

View file

@ -45,7 +45,7 @@ double f (const Indi & _indi)
return (-sum); return (-sum);
} }
struct Algorithm struct Algorithm
{ {
Algorithm( peoPopEval < Indi > & _eval): eval( _eval ){} Algorithm( peoPopEval < Indi > & _eval): eval( _eval ){}
void operator()(eoPop < Indi > & _pop) void operator()(eoPop < Indi > & _pop)
{ {
@ -53,7 +53,7 @@ struct Algorithm
eval(empty_pop, _pop); eval(empty_pop, _pop);
} }
peoPopEval < Indi > & eval; peoPopEval < Indi > & eval;
}; };
int main (int __argc, char *__argv[]) int main (int __argc, char *__argv[])
{ {

View file

@ -45,7 +45,7 @@ double f (const Indi & _indi)
return (-sum); return (-sum);
} }
struct Algorithm struct Algorithm
{ {
Algorithm( eoEvalFunc < Indi > & _eval, eoSelect < Indi > & _select, peoTransform < Indi > & _transform): Algorithm( eoEvalFunc < Indi > & _eval, eoSelect < Indi > & _select, peoTransform < Indi > & _transform):
loopEval(_eval), loopEval(_eval),
eval(loopEval), eval(loopEval),
@ -66,7 +66,7 @@ struct Algorithm
eoPopEvalFunc < Indi > & eval; eoPopEvalFunc < Indi > & eval;
eoSelectTransform < Indi > selectTransform; eoSelectTransform < Indi > selectTransform;
eoBreed < Indi > & breed; eoBreed < Indi > & breed;
}; };
int main (int __argc, char *__argv[]) int main (int __argc, char *__argv[])
{ {

View file

@ -63,7 +63,7 @@ void EdgeXover :: build_map (const Route & __par1, const Route & __par2)
} }
void EdgeXover :: remove_entry (unsigned __vertex, std :: vector <std :: set <unsigned> > & __map) void EdgeXover :: remove_entry (unsigned __vertex, std :: vector <std :: set <unsigned> > & __map)
{ {
std :: set <unsigned> & neigh = __map [__vertex] ; std :: set <unsigned> & neigh = __map [__vertex] ;
@ -72,7 +72,7 @@ void EdgeXover :: remove_entry (unsigned __vertex, std :: vector <std :: set <un
it ++) it ++)
__map [* it].erase (__vertex) ; __map [* it].erase (__vertex) ;
} }
void EdgeXover :: add_vertex (unsigned __vertex, Route & __child) void EdgeXover :: add_vertex (unsigned __vertex, Route & __child)
{ {