git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1569 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
c84b5db20f
commit
950ec58a6e
3 changed files with 81 additions and 9 deletions
54
contribution/branches/MOLS/src2/eoAmeliorationContinue.h
Normal file
54
contribution/branches/MOLS/src2/eoAmeliorationContinue.h
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
#ifndef _eoAmeliorationContinue_h
|
||||||
|
#define _eoAmeliorationContinue_h
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <sstream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <eoContinue.h>
|
||||||
|
|
||||||
|
template< class EOT>
|
||||||
|
class eoAmeliorationContinue: public eoContinue<EOT>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
eoAmeliorationContinue(unsigned int _maxGen) : maxGen(_maxGen), counter(0){}
|
||||||
|
|
||||||
|
|
||||||
|
// _pop must be an archive
|
||||||
|
virtual bool operator() (const eoPop<EOT> & _pop)
|
||||||
|
{
|
||||||
|
if(_pop.modified())
|
||||||
|
counter=0;
|
||||||
|
else
|
||||||
|
counter++;
|
||||||
|
return (counter < maxGen);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
virtual std::string className(void) const
|
||||||
|
{
|
||||||
|
return "eoAmeliorationContinue";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void readFrom (std :: istream & __is)
|
||||||
|
{
|
||||||
|
|
||||||
|
__is >> start;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void printOn (std :: ostream & __os) const
|
||||||
|
{
|
||||||
|
|
||||||
|
__os << start << ' ' << std :: endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
unsigned int maxGeneration;
|
||||||
|
unsigned int counter;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -63,7 +63,7 @@ public:
|
||||||
* Default ctor.
|
* Default ctor.
|
||||||
* The moeoObjectiveVectorComparator used to compare solutions is based on Pareto dominance
|
* The moeoObjectiveVectorComparator used to compare solutions is based on Pareto dominance
|
||||||
*/
|
*/
|
||||||
moeoNewArchive() : moeoArchive < MOEOT >(), comparator(paretoComparator)
|
moeoNewArchive() : moeoArchive < MOEOT >(), comparator(paretoComparator), isModified(false)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -71,7 +71,7 @@ public:
|
||||||
* Ctor
|
* Ctor
|
||||||
* @param _comparator the moeoObjectiveVectorComparator used to compare solutions
|
* @param _comparator the moeoObjectiveVectorComparator used to compare solutions
|
||||||
*/
|
*/
|
||||||
moeoNewArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator) : eoPop < MOEOT >(), comparator(_comparator)
|
moeoNewArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator) : eoPop < MOEOT >(), comparator(_comparator), isModified(false)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -160,6 +160,12 @@ public:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool modified(){
|
||||||
|
bool tmp = isModified;
|
||||||
|
isModified = false;
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
@ -167,7 +173,8 @@ private:
|
||||||
moeoObjectiveVectorComparator < ObjectiveVector > & comparator;
|
moeoObjectiveVectorComparator < ObjectiveVector > & comparator;
|
||||||
/** A moeoObjectiveVectorComparator based on Pareto dominance (used as default) */
|
/** A moeoObjectiveVectorComparator based on Pareto dominance (used as default) */
|
||||||
moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator;
|
moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator;
|
||||||
|
/** bool*/
|
||||||
|
bool isModified;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the archive with a given individual _moeo *** NEW ***
|
* Updates the archive with a given individual _moeo *** NEW ***
|
||||||
|
|
@ -217,6 +224,7 @@ private:
|
||||||
if (!dom)
|
if (!dom)
|
||||||
{
|
{
|
||||||
push_back(_moeo);
|
push_back(_moeo);
|
||||||
|
isModified=true;
|
||||||
}
|
}
|
||||||
return !dom;
|
return !dom;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ public:
|
||||||
* Default ctor.
|
* Default ctor.
|
||||||
* The moeoObjectiveVectorComparator used to compare solutions is based on Pareto dominance
|
* The moeoObjectiveVectorComparator used to compare solutions is based on Pareto dominance
|
||||||
*/
|
*/
|
||||||
moeoNewBoundedArchive(unsigned int _maxSize=100) : moeoArchive < MOEOT >(), comparator(paretoComparator), maxSize(_maxSize)
|
moeoNewBoundedArchive(unsigned int _maxSize=100) : moeoArchive < MOEOT >(), comparator(paretoComparator), maxSize(_maxSize), isModified(false)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -71,7 +71,7 @@ public:
|
||||||
* Ctor
|
* Ctor
|
||||||
* @param _comparator the moeoObjectiveVectorComparator used to compare solutions
|
* @param _comparator the moeoObjectiveVectorComparator used to compare solutions
|
||||||
*/
|
*/
|
||||||
moeoNewBoundedArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, unsigned int _maxSize=100) : eoPop < MOEOT >(), comparator(_comparator), maxSize(_maxSize)
|
moeoNewBoundedArchive(moeoObjectiveVectorComparator < ObjectiveVector > & _comparator, unsigned int _maxSize=100) : eoPop < MOEOT >(), comparator(_comparator), maxSize(_maxSize), isModified(false)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -160,6 +160,12 @@ public:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool modified(){
|
||||||
|
bool tmp = isModified;
|
||||||
|
isModified = false;
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
@ -169,6 +175,8 @@ private:
|
||||||
moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator;
|
moeoParetoObjectiveVectorComparator < ObjectiveVector > paretoComparator;
|
||||||
/** Max size of archive*/
|
/** Max size of archive*/
|
||||||
unsigned int maxSize;
|
unsigned int maxSize;
|
||||||
|
/** bool */
|
||||||
|
bool isModified;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the archive with a given individual _moeo *** NEW ***
|
* Updates the archive with a given individual _moeo *** NEW ***
|
||||||
|
|
@ -217,10 +225,12 @@ private:
|
||||||
}
|
}
|
||||||
if (!dom)
|
if (!dom)
|
||||||
{
|
{
|
||||||
//if(size()<maxSize)
|
if(size()<maxSize){
|
||||||
push_back(_moeo);
|
push_back(_moeo);
|
||||||
//else
|
isModified=true;
|
||||||
//dom=!dom;
|
}
|
||||||
|
else
|
||||||
|
dom=!dom;
|
||||||
}
|
}
|
||||||
return !dom;
|
return !dom;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue