From cff09f267c517032b92e5385cf94f585a0395997 Mon Sep 17 00:00:00 2001 From: verel Date: Mon, 5 Dec 2011 16:58:09 +0000 Subject: [PATCH] Delete code in developpement again git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@2536 331e1502-861f-0410-8da2-ba01fb791d7f --- .../src/problems/bitString/moPopBitNeighbor.h | 114 ---------- .../problems/bitString/moPopBitsNeighbor.h | 199 ------------------ .../bitString/moPopBitsRndNeighborhood.h | 136 ------------ .../src/problems/bitString/moPopSol.h | 62 ------ .../src/problems/bitString/moPopSolInit.h | 68 ------ .../problems/bitString/moPopSolNonDomInit.h | 79 ------- .../problems/bitString/moPopXoverNeighbor.h | 162 -------------- .../bitString/moPopXoverRndNeighborhood.h | 145 ------------- 8 files changed, 965 deletions(-) delete mode 100644 trunk/paradiseo-mo/src/problems/bitString/moPopBitNeighbor.h delete mode 100644 trunk/paradiseo-mo/src/problems/bitString/moPopBitsNeighbor.h delete mode 100644 trunk/paradiseo-mo/src/problems/bitString/moPopBitsRndNeighborhood.h delete mode 100644 trunk/paradiseo-mo/src/problems/bitString/moPopSol.h delete mode 100644 trunk/paradiseo-mo/src/problems/bitString/moPopSolInit.h delete mode 100644 trunk/paradiseo-mo/src/problems/bitString/moPopSolNonDomInit.h delete mode 100644 trunk/paradiseo-mo/src/problems/bitString/moPopXoverNeighbor.h delete mode 100644 trunk/paradiseo-mo/src/problems/bitString/moPopXoverRndNeighborhood.h diff --git a/trunk/paradiseo-mo/src/problems/bitString/moPopBitNeighbor.h b/trunk/paradiseo-mo/src/problems/bitString/moPopBitNeighbor.h deleted file mode 100644 index 30657ec44..000000000 --- a/trunk/paradiseo-mo/src/problems/bitString/moPopBitNeighbor.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - - Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010 - - Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau - - This software is governed by the CeCILL license under French law and - abiding by the rules of distribution of free software. You can ue, - modify and/ or redistribute the software under the terms of the CeCILL - license as circulated by CEA, CNRS and INRIA at the following URL - "http://www.cecill.info". - - In this respect, the user's attention is drawn to the risks associated - with loading, using, modifying and/or developing or reproducing the - software by the user in light of its specific status of free software, - that may mean that it is complicated to manipulate, and that also - therefore means that it is reserved for developers and experienced - professionals having in-depth computer knowledge. Users are therefore - encouraged to load and test the software's suitability as regards their - requirements in conditions enabling the security of their systems and/or - data to be ensured and, more generally, to use and operate it in the - same conditions as regards security. - The fact that you are presently reading this means that you have had - knowledge of the CeCILL license and that you accept its terms. - - ParadisEO WebSite : http://paradiseo.gforge.inria.fr - Contact: paradiseo-help@lists.gforge.inria.fr -*/ - -#ifndef _moPopBitNeighbor_h -#define _moPopBitNeighbor_h - -#include -#include -#include -#include - -/** - * Neighbor related to a vector of Bit - */ -template< class Fitness > -class moPopBitNeighbor : public moIndexNeighbor< moPopSol > > -{ -public: - typedef moPopSol > EOT ; - typedef eoBit SUBEOT; - - using moIndexNeighbor::fitness; - using moIndexNeighbor::key; - - /** - * move the solution - * @param _solution the solution to move - */ - virtual void move(EOT & _solution) { - if(_solution[0].size()>0){ - unsigned size=_solution[0].size(); - unsigned s = key/size; - unsigned b = key%size; - _solution[s][b] = !_solution[s][b]; - _solution[s].fitness(subfit); - _solution.invalidate(); - } - } - - void setSubFit(Fitness _subfit){ - subfit=_subfit; - } - - /** - * return the class name - * @return the class name as a std::string - */ - virtual std::string className() const { - return "moPopBitNeighbor"; - } - - /** - * Read object.\ - * Calls base class, just in case that one had something to do. - * The read and print methods should be compatible and have the same format. - * In principle, format is "plain": they just print a number - * @param _is a std::istream. - * @throw runtime_std::exception If a valid object can't be read. - */ - virtual void readFrom(std::istream& _is) { - std::string fitness_str; - int pos = _is.tellg(); - _is >> fitness_str; - if (fitness_str == "INVALID") { - throw std::runtime_error("invalid fitness"); - } - else { - Fitness repFit ; - _is.seekg(pos); - _is >> repFit; - _is >> key; - fitness(repFit); - } - } - - /** - * Write object. Called printOn since it prints the object _on_ a stream. - * @param _os A std::ostream. - */ - virtual void printOn(std::ostream& _os) const { - _os << fitness() << ' ' << key << std::endl; - } - -private: - Fitness subfit; -}; - -#endif diff --git a/trunk/paradiseo-mo/src/problems/bitString/moPopBitsNeighbor.h b/trunk/paradiseo-mo/src/problems/bitString/moPopBitsNeighbor.h deleted file mode 100644 index 2576e2f56..000000000 --- a/trunk/paradiseo-mo/src/problems/bitString/moPopBitsNeighbor.h +++ /dev/null @@ -1,199 +0,0 @@ -/* - - Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010 - - Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau - - This software is governed by the CeCILL license under French law and - abiding by the rules of distribution of free software. You can ue, - modify and/ or redistribute the software under the terms of the CeCILL - license as circulated by CEA, CNRS and INRIA at the following URL - "http://www.cecill.info". - - In this respect, the user's attention is drawn to the risks associated - with loading, using, modifying and/or developing or reproducing the - software by the user in light of its specific status of free software, - that may mean that it is complicated to manipulate, and that also - therefore means that it is reserved for developers and experienced - professionals having in-depth computer knowledge. Users are therefore - encouraged to load and test the software's suitability as regards their - requirements in conditions enabling the security of their systems and/or - data to be ensured and, more generally, to use and operate it in the - same conditions as regards security. - The fact that you are presently reading this means that you have had - knowledge of the CeCILL license and that you accept its terms. - - ParadisEO WebSite : http://paradiseo.gforge.inria.fr - Contact: paradiseo-help@lists.gforge.inria.fr -*/ - -#ifndef _moPopBitsNeighbor_h -#define _moPopBitsNeighbor_h - -#include -#include -#include - -/** - * Bits neighbor: apply a bit flip on several solution in the set-solution - */ -template< class EOT > -class moPopBitsNeighbor : public moNeighbor -{ -public: - typedef typename EOT::SUBEOT SUBEOT ; - typedef typename SUBEOT::Fitness SUBFitness; - - using moNeighbor::fitness; - - /** - * Empty Constructor - */ - moPopBitsNeighbor() : moNeighbor() { - } - - /** - * Copy Constructor - * @param _neighbor to copy - */ - moPopBitsNeighbor(const moPopBitsNeighbor& _neighbor) { - fitness(_neighbor.fitness()); - - mutate.resize( _neighbor.mutate.size() ); - - for(unsigned int i = 0; i < mutate.size(); i++) - mutate[i] = _neighbor.mutate[i]; - - bits.resize( _neighbor.bits.size() ); - - for(unsigned int i = 0; i < bits.size(); i++) - bits[i] = _neighbor.bits[i]; - - fitSol.resize( _neighbor.fitSol.size() ); - - for(unsigned int i = 0; i < fitSol.size(); i++) - fitSol[i] = _neighbor.fitSol[i]; - } - - /** - * Assignment operator - * @param _neighbor the neighbor to assign - * @return a neighbor equal to the other - */ - virtual moPopBitsNeighbor& operator=(const moPopBitsNeighbor& _neighbor) { - fitness(_neighbor.fitness()); - - mutate.resize( _neighbor.mutate.size() ); - - for(unsigned int i = 0; i < mutate.size(); i++) - mutate[i] = _neighbor.mutate[i]; - - bits.resize( _neighbor.bits.size() ); - - for(unsigned int i = 0; i < bits.size(); i++) - bits[i] = _neighbor.bits[i]; - - fitSol.resize( _neighbor.fitSol.size() ); - - for(unsigned int i = 0; i < fitSol.size(); i++) - fitSol[i] = _neighbor.fitSol[i]; - - return (*this); - } - - /** - * Move the solution according to the information of this neighbor - * @param _solution the solution to move - */ - virtual void move(EOT & _solution) { - if (_solution.size() > 0) { - - for(unsigned i = 0; i < mutate.size(); i++) - if (mutate[i]) { - _solution[i][ bits[i] ] = !_solution[i][ bits[i] ] ; - _solution[i].fitness( fitSol[i] ); - } - - _solution.invalidate(); - } - } - - /** - * return the class name - * @return the class name as a std::string - */ - virtual std::string className() const { - return "moPopBitsNeighbor"; - } - - /** - * Read object.\ - * Calls base class, just in case that one had something to do. - * The read and print methods should be compatible and have the same format. - * In principle, format is "plain": they just print a number - * @param _is a std::istream. - * @throw runtime_std::exception If a valid object can't be read. - */ - virtual void readFrom(std::istream& _is) { - std::string fitness_str; - int pos = _is.tellg(); - _is >> fitness_str; - if (fitness_str == "INVALID") { - throw std::runtime_error("invalid fitness"); - } - else { - typename EOT::Fitness repFit ; - _is.seekg(pos); - _is >> repFit; - - fitness(repFit); - - unsigned int s ; - _is >> s; - - mutate.resize(s); - bits.resize(s); - fitSol.resize(s); - - bool m; - unsigned int b; - SUBFitness f; - - for(unsigned i = 0; i < s; i++) { - _is >> m; - _is >> b; - _is >> f; - - mutate[i] = m; - bits[i] = b; - fitSol[i] = f; - } - } - } - - /** - * Write object. Called printOn since it prints the object _on_ a stream. - * @param _os A std::ostream. - */ - virtual void printOn(std::ostream& _os) const { - _os << fitness() ; - - _os << ' ' << mutate.size(); - - for(unsigned int i = 0; i < mutate.size(); i++) - _os << ' ' << mutate[i] << ' ' << bits[i] << ' ' << fitSol[i]; - - _os << std::endl; - } - - // Information on the bitflip on each solution: true=bit flip - vector mutate; - - // Information on the bit which is flipped - vector bits; - - // fitness of the mutated solutions - vector fitSol; -}; - -#endif diff --git a/trunk/paradiseo-mo/src/problems/bitString/moPopBitsRndNeighborhood.h b/trunk/paradiseo-mo/src/problems/bitString/moPopBitsRndNeighborhood.h deleted file mode 100644 index 6b95d48f0..000000000 --- a/trunk/paradiseo-mo/src/problems/bitString/moPopBitsRndNeighborhood.h +++ /dev/null @@ -1,136 +0,0 @@ -/* - - Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010 - - Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau - - This software is governed by the CeCILL license under French law and - abiding by the rules of distribution of free software. You can use, - modify and/ or redistribute the software under the terms of the CeCILL - license as circulated by CEA, CNRS and INRIA at the following URL - "http://www.cecill.info". - - As a counterpart to the access to the source code and rights to copy, - modify and redistribute granted by the license, users are provided only - with a limited warranty and the software's author, the holder of the - economic rights, and the successive licensors have only limited liability. - - In this respect, the user's attention is drawn to the risks associated - with loading, using, modifying and/or developing or reproducing the - software by the user in light of its specific status of free software, - that may mean that it is complicated to manipulate, and that also - therefore means that it is reserved for developers and experienced - professionals having in-depth computer knowledge. Users are therefore - encouraged to load and test the software's suitability as regards their - requirements in conditions enabling the security of their systems and/or - data to be ensured and, more generally, to use and operate it in the - same conditions as regards security. - The fact that you are presently reading this means that you have had - knowledge of the CeCILL license and that you accept its terms. - - ParadisEO WebSite : http://paradiseo.gforge.inria.fr - Contact: paradiseo-help@lists.gforge.inria.fr -*/ - -#ifndef _moPopBitsRndNeighborhood_h -#define _moPopBitsRndNeighborhood_h - -#include -#include - -/** - * A Bits neighborhood with one random bit flip on random solutions - */ -template< class Neighbor > -class moPopBitsRndNeighborhood : public moRndNeighborhood -{ -public: - - /** - * Define type of a solution corresponding to Neighbor - */ - typedef typename Neighbor::EOT EOT; - - /** - * Define type of a sub-solution which compose the population - */ - typedef typename EOT::SUBEOT SUBEOT; - - /** - * Constructor - * @param _rate mutation rate - */ - moPopBitsRndNeighborhood(double _rate): moRndNeighborhood(), mutationRate(_rate) {} - - /** - * Test if it exist a neighbor - * @param _solution the solution to explore - * @return true if the neighborhood was not empty: the population size is at least 1 - */ - virtual bool hasNeighbor(EOT& _solution) { - return _solution.size() > 0; - } - - /** - * Initialization of the neighborhood: - * apply one bit flip on several solutions according to the mutation rate - * @param _solution the solution to explore (population of solutions) - * @param _neighbor the first neighbor - */ - virtual void init(EOT & _solution, Neighbor & _neighbor) { - unsigned int popSize = _solution.size(); - unsigned int length = _solution[0].size(); - - _neighbor.mutate.resize(popSize); - _neighbor.bits.resize(popSize); - _neighbor.fitSol.resize(popSize); - - for(unsigned int i = 0; i < popSize; i++) { - _neighbor.mutate[i] = rng.uniform() < mutationRate; - - if (_neighbor.mutate[i]) - _neighbor.bits[i] = rng.random(length); - } - } - - /** - * Give the next neighbor - * apply one bit flip on several solutions according to the mutation rate - * @param _solution the solution to explore (population of solutions) - * @param _neighbor the next neighbor which is "random" - */ - virtual void next(EOT & _solution, Neighbor & _neighbor) { - unsigned int popSize = _solution.size(); - unsigned int length = _solution[0].size(); - - for(unsigned int i = 0; i < popSize; i++) { - _neighbor.mutate[i] = rng.uniform() < mutationRate; - - if (_neighbor.mutate[i]) - _neighbor.bits[i] = rng.random(length); - } - } - - /** - * Test if all neighbors are explored or not,if false, there is no neighbor left to explore - * @param _solution the solution to explore - * @return true if there is again a neighbor to explore: population size larger or equals than 1 - */ - virtual bool cont(EOT & _solution) { - return _solution.size() > 0; - } - - /** - * Return the class Name - * @return the class name as a std::string - */ - virtual std::string className() const { - return "moPopBitsRndNeighborhood"; - } - -private: - //mutation rate - double mutationRate; -}; - -#endif diff --git a/trunk/paradiseo-mo/src/problems/bitString/moPopSol.h b/trunk/paradiseo-mo/src/problems/bitString/moPopSol.h deleted file mode 100644 index 4ffc7bceb..000000000 --- a/trunk/paradiseo-mo/src/problems/bitString/moPopSol.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - -Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010 - -Sébastien Verel, Arnaud Liefooghe, Jérémie Humeau - -This software is governed by the CeCILL license under French law and -abiding by the rules of distribution of free software. You can ue, -modify and/ or redistribute the software under the terms of the CeCILL -license as circulated by CEA, CNRS and INRIA at the following URL -"http://www.cecill.info". - -In this respect, the user's attention is drawn to the risks associated -with loading, using, modifying and/or developing or reproducing the -software by the user in light of its specific status of free software, -that may mean that it is complicated to manipulate, and that also -therefore means that it is reserved for developers and experienced -professionals having in-depth computer knowledge. Users are therefore -encouraged to load and test the software's suitability as regards their -requirements in conditions enabling the security of their systems and/or -data to be ensured and, more generally, to use and operate it in the -same conditions as regards security. -The fact that you are presently reading this means that you have had -knowledge of the CeCILL license and that you accept its terms. - -ParadisEO WebSite : http://paradiseo.gforge.inria.fr -Contact: paradiseo-help@lists.gforge.inria.fr -*/ - -#ifndef _moPopSol_h -#define _moPopSol_h - -#include -#include - -template -class moPopSol : public EO, public std::vector{ -public: - typedef EOT SUBEOT; // public type of the solution - - typedef typename EO::Fitness Fitness; - using EO::invalidate; - - moPopSol(): EO() { - } - - virtual void printOn(std::ostream& _os) const - { - if (this->invalid()) { - _os << (*this).size() << " " << "INVALID" << '\n'; - for(unsigned int i=0; i<(*this).size(); i++) - _os << (*this).operator[](i) << std::endl; - } else { - _os << (*this).size() << " " << (*this).fitness() << '\n'; - for(unsigned int i=0; i<(*this).size(); i++) - _os << (*this).operator[](i) << std::endl; - } - } - -}; - -#endif diff --git a/trunk/paradiseo-mo/src/problems/bitString/moPopSolInit.h b/trunk/paradiseo-mo/src/problems/bitString/moPopSolInit.h deleted file mode 100644 index 6e246cba1..000000000 --- a/trunk/paradiseo-mo/src/problems/bitString/moPopSolInit.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - -Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010 - -Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau - -This software is governed by the CeCILL license under French law and -abiding by the rules of distribution of free software. You can ue, -modify and/ or redistribute the software under the terms of the CeCILL -license as circulated by CEA, CNRS and INRIA at the following URL -"http://www.cecill.info". - -In this respect, the user's attention is drawn to the risks associated -with loading, using, modifying and/or developing or reproducing the -software by the user in light of its specific status of free software, -that may mean that it is complicated to manipulate, and that also -therefore means that it is reserved for developers and experienced -professionals having in-depth computer knowledge. Users are therefore -encouraged to load and test the software's suitability as regards their -requirements in conditions enabling the security of their systems and/or -data to be ensured and, more generally, to use and operate it in the -same conditions as regards security. -The fact that you are presently reading this means that you have had -knowledge of the CeCILL license and that you accept its terms. - -ParadisEO WebSite : http://paradiseo.gforge.inria.fr -Contact: paradiseo-help@lists.gforge.inria.fr -*/ - -#ifndef _moPopSolInit_h -#define _moPopSolInit_h - -#include -#include - -template -class moPopSolInit: public eoInit { -public: - typedef typename EOT::SUBEOT SUBEOT; - - /** - * Default constructor - * - * @param _rnd initializer of a solution - * @param _popSize population size of the solution-set - */ - moPopSolInit(eoInit & _rnd, unsigned int _popSize) : rnd(_rnd), popSize(_popSize){} - - void operator()(EOT & _sol) { - SUBEOT tmp; - - _sol.clear(); - - for(unsigned int i = 0; i < popSize; i++){ - rnd(tmp); - _sol.push_back(tmp); - } - - _sol.invalidate(); - } - -private: - eoInit& rnd; - unsigned int popSize; - -}; - -#endif diff --git a/trunk/paradiseo-mo/src/problems/bitString/moPopSolNonDomInit.h b/trunk/paradiseo-mo/src/problems/bitString/moPopSolNonDomInit.h deleted file mode 100644 index 189d8c981..000000000 --- a/trunk/paradiseo-mo/src/problems/bitString/moPopSolNonDomInit.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - -Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010 - -Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau - -This software is governed by the CeCILL license under French law and -abiding by the rules of distribution of free software. You can ue, -modify and/ or redistribute the software under the terms of the CeCILL -license as circulated by CEA, CNRS and INRIA at the following URL -"http://www.cecill.info". - -In this respect, the user's attention is drawn to the risks associated -with loading, using, modifying and/or developing or reproducing the -software by the user in light of its specific status of free software, -that may mean that it is complicated to manipulate, and that also -therefore means that it is reserved for developers and experienced -professionals having in-depth computer knowledge. Users are therefore -encouraged to load and test the software's suitability as regards their -requirements in conditions enabling the security of their systems and/or -data to be ensured and, more generally, to use and operate it in the -same conditions as regards security. -The fact that you are presently reading this means that you have had -knowledge of the CeCILL license and that you accept its terms. - -ParadisEO WebSite : http://paradiseo.gforge.inria.fr -Contact: paradiseo-help@lists.gforge.inria.fr -*/ - -#ifndef _moPopSolNonDomInit_h -#define _moPopSolNonDomInit_h - -#include -#include -#include - -template -class moPopSolNonDomInit: public eoInit { -public: - typedef typename EOT::SUBEOT SUBEOT; - - /** - * Default constructor - * - * @param _rnd initializer of a solution - * @param _popSize population size of the solution-set - */ - moPopSolNonDomInit(eoInit & _rnd, eoEvalFunc & _eval, unsigned int _popSize) : rnd(_rnd), eval(_eval), popSize(_popSize){} - - void operator()(EOT & _sol) { - SUBEOT tmp; - - _sol.clear(); - - archive.clear(); - - while (archive.size() < popSize) { - rnd(tmp); - eval(tmp); - archive(tmp); - } - - for(unsigned int i = 0; i < popSize; i++){ - _sol.push_back(archive[i]); - } - - _sol.invalidate(); - } - -private: - eoInit& rnd; - eoEvalFunc & eval; - unsigned int popSize; - - moeoUnboundedArchive archive; - -}; - -#endif diff --git a/trunk/paradiseo-mo/src/problems/bitString/moPopXoverNeighbor.h b/trunk/paradiseo-mo/src/problems/bitString/moPopXoverNeighbor.h deleted file mode 100644 index 5971e410e..000000000 --- a/trunk/paradiseo-mo/src/problems/bitString/moPopXoverNeighbor.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - - Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010 - - Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau - - This software is governed by the CeCILL license under French law and - abiding by the rules of distribution of free software. You can ue, - modify and/ or redistribute the software under the terms of the CeCILL - license as circulated by CEA, CNRS and INRIA at the following URL - "http://www.cecill.info". - - In this respect, the user's attention is drawn to the risks associated - with loading, using, modifying and/or developing or reproducing the - software by the user in light of its specific status of free software, - that may mean that it is complicated to manipulate, and that also - therefore means that it is reserved for developers and experienced - professionals having in-depth computer knowledge. Users are therefore - encouraged to load and test the software's suitability as regards their - requirements in conditions enabling the security of their systems and/or - data to be ensured and, more generally, to use and operate it in the - same conditions as regards security. - The fact that you are presently reading this means that you have had - knowledge of the CeCILL license and that you accept its terms. - - ParadisEO WebSite : http://paradiseo.gforge.inria.fr - Contact: paradiseo-help@lists.gforge.inria.fr -*/ - -#ifndef _moPopXoverNeighbor_h -#define _moPopXoverNeighbor_h - -#include -#include -#include - -/** - * Crossover neighbor: apply one crossover operator between 2 random solutions of the population - */ -template< class EOT > -class moPopXoverNeighbor : public moNeighbor -{ -public: - typedef typename EOT::SUBEOT SUBEOT ; - - using moNeighbor::fitness; - - /** - * Move the solution according to the information of this neighbor - * @param _solution the solution to move - */ - virtual void move(EOT & _solution) { - if (_solution.size() > 0) { - _solution[i1] = sol1; - _solution[i2] = sol2; - - _solution.invalidate(); - } - } - - /** - * Set the index of the solutions on which the crossover is applied - * - * @param _i1 index of the first solution - * @param _i2 index of the second solution - */ - void setIndexes(unsigned int _i1, unsigned int _i2){ - i1 = _i1; - i2 = _i2; - } - - /** - * Give the variable on the first solution - * - * @return first solution - */ - SUBEOT& solution1() { - return sol1; - } - - /** - * Give the variable on the second solution - * - * @return second solution - */ - SUBEOT& solution2() { - return sol2; - } - - /** - * Give the index in the population of the first solution - * - * @return index of the first solution - */ - unsigned int index1() { - return i1; - } - - /** - * Give the index in the population of the second solution - * - * @return index of the second solution - */ - unsigned int index2() { - return i2; - } - - /** - * return the class name - * @return the class name as a std::string - */ - virtual std::string className() const { - return "moPopXoverNeighbor"; - } - - /** - * Read object.\ - * Calls base class, just in case that one had something to do. - * The read and print methods should be compatible and have the same format. - * In principle, format is "plain": they just print a number - * @param _is a std::istream. - * @throw runtime_std::exception If a valid object can't be read. - */ - virtual void readFrom(std::istream& _is) { - std::string fitness_str; - int pos = _is.tellg(); - _is >> fitness_str; - if (fitness_str == "INVALID") { - throw std::runtime_error("invalid fitness"); - } - else { - typename EOT::Fitness repFit ; - _is.seekg(pos); - _is >> repFit; - - _is >> i1; - _is >> i2; - - _is >> sol1; - _is >> sol2; - - fitness(repFit); - } - } - - /** - * Write object. Called printOn since it prints the object _on_ a stream. - * @param _os A std::ostream. - */ - virtual void printOn(std::ostream& _os) const { - _os << fitness() << ' ' << i1 << ' ' << i2 << ' ' << sol1 << ' ' << sol2 << std::endl; - } - -private: - // the two solutions which are the results of the crossover operator - SUBEOT sol1, sol2; - - // index of the two solutions - unsigned int i1, i2; -}; - -#endif diff --git a/trunk/paradiseo-mo/src/problems/bitString/moPopXoverRndNeighborhood.h b/trunk/paradiseo-mo/src/problems/bitString/moPopXoverRndNeighborhood.h deleted file mode 100644 index 5f216ff6d..000000000 --- a/trunk/paradiseo-mo/src/problems/bitString/moPopXoverRndNeighborhood.h +++ /dev/null @@ -1,145 +0,0 @@ -/* - - Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010 - - Sebastien Verel, Arnaud Liefooghe, Jeremie Humeau - - This software is governed by the CeCILL license under French law and - abiding by the rules of distribution of free software. You can use, - modify and/ or redistribute the software under the terms of the CeCILL - license as circulated by CEA, CNRS and INRIA at the following URL - "http://www.cecill.info". - - As a counterpart to the access to the source code and rights to copy, - modify and redistribute granted by the license, users are provided only - with a limited warranty and the software's author, the holder of the - economic rights, and the successive licensors have only limited liability. - - In this respect, the user's attention is drawn to the risks associated - with loading, using, modifying and/or developing or reproducing the - software by the user in light of its specific status of free software, - that may mean that it is complicated to manipulate, and that also - therefore means that it is reserved for developers and experienced - professionals having in-depth computer knowledge. Users are therefore - encouraged to load and test the software's suitability as regards their - requirements in conditions enabling the security of their systems and/or - data to be ensured and, more generally, to use and operate it in the - same conditions as regards security. - The fact that you are presently reading this means that you have had - knowledge of the CeCILL license and that you accept its terms. - - ParadisEO WebSite : http://paradiseo.gforge.inria.fr - Contact: paradiseo-help@lists.gforge.inria.fr -*/ - -#ifndef _moPopXoverRndNeighborhood_h -#define _moPopXoverRndNeighborhood_h - -#include -#include -#include - -/** - * A Xover neighborhood with random crossover between random solutions - */ -template< class Neighbor > -class moPopXoverRndNeighborhood : public moRndNeighborhood -{ -public: - - /** - * Define type of a solution corresponding to Neighbor - */ - typedef typename Neighbor::EOT EOT; - - /** - * Define type of a sub-solution which compose the population - */ - typedef typename EOT::SUBEOT SUBEOT; - - /** - * Constructor - * @param _crossover the crossover operator - * @param _maxNeighbor maximum neighbors to explore in the neighborhood - */ - moPopXoverRndNeighborhood(eoQuadOp & _crossover, unsigned int _maxNeighbor = 0): moRndNeighborhood(), crossover(_crossover), maxNeighbor(_maxNeighbor) {} - - /** - * Test if it exist a neighbor - * @param _solution the solution to explore - * @return true if the neighborhood was not empty: the opulation soze is at least 2 - */ - virtual bool hasNeighbor(EOT& _solution) { - return _solution.size() > 1; - } - - /** - * Initialization of the neighborhood: - * apply a ones the crossover operato between random solutions - * @param _solution the solution to explore (population of solutions) - * @param _neighbor the first neighbor - */ - virtual void init(EOT & _solution, Neighbor & _neighbor) { - next(_solution, _neighbor); - - nbNeighbor = 0; - } - - /** - * Give the next neighbor - * apply a ones the crossover operato between random solutions - * @param _solution the solution to explore (population of solutions) - * @param _neighbor the next neighbor which is "random" - */ - virtual void next(EOT & _solution, Neighbor & _neighbor) { - unsigned int popSize = _solution.size(); - - // random solutions in the population - unsigned int i1, i2; - - i1 = rng.random(popSize); - i2 = rng.random(popSize); - - while (i2 == i1) - i2 = rng.random(popSize); - - _neighbor.setIndexes(i1, i2); - - // copy the solutions - _neighbor.solution1() = _solution[i1]; - _neighbor.solution2() = _solution[i2]; - - // apply the crossover - crossover(_neighbor.solution1(), _neighbor.solution2()); - - // increase the number of neighbor explored - nbNeighbor++; - } - - /** - * Test if all neighbors are explored or not,if false, there is no neighbor left to explore - * @param _solution the solution to explore - * @return true if there is again a neighbor to explore: population size larger or equals than 2 - */ - virtual bool cont(EOT & _solution) { - if (maxNeighbor != 0) - return (_solution.size() > 1) && (nbNeighbor < maxNeighbor); - else - return _solution.size() > 1; - } - - /** - * Return the class Name - * @return the class name as a std::string - */ - virtual std::string className() const { - return "moPopXoverRndNeighborhood"; - } - -private: - eoQuadOp & crossover; - unsigned int maxNeighbor; - unsigned int nbNeighbor; -}; - -#endif