diff --git a/trunk/paradiseo-mo/src/neighborhood/moNeighborhoodSizeUtils.h b/trunk/paradiseo-mo/src/neighborhood/moNeighborhoodSizeUtils.h deleted file mode 100755 index 5a17d475b..000000000 --- a/trunk/paradiseo-mo/src/neighborhood/moNeighborhoodSizeUtils.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - - Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010 - - Karima Boufaras, Thé Van LUONG - - 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 _moNeighborhoodSizeUtils_h -#define _moNeighborhoodSizeUtils_h - -/** - * @return the factorial of an integer - * @param _i an integer - */ - -static int factorial(int _i) { - if (_i == 0) - return 1; - else - return _i * factorial(_i - 1); -} - -/** - * @return the neighborhood Size from the solution size and the exchange distance - * @param _n the solution size - * @param _xChange the number of positions to change - */ - -static int sizeMapping(int _n, unsigned int _xChange) { - int _sizeMapping; - _sizeMapping = _n; - for (int i = _xChange-1; i > 0; i--) { - _sizeMapping *= (_n - i); - } - _sizeMapping /= factorial(_xChange); - return _sizeMapping; -} - - -#endif diff --git a/trunk/paradiseo-mo/src/neighborhood/moXBitFlippingNeighbor.h b/trunk/paradiseo-mo/src/neighborhood/moXBitFlippingNeighbor.h deleted file mode 100755 index cf811795e..000000000 --- a/trunk/paradiseo-mo/src/neighborhood/moXBitFlippingNeighbor.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - - Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010 - - Boufaras Karima, Thé Van Luong - - 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 _moXBitFlippingNeighbor_h -#define _moXBitFlippingNeighbor_h - -#include -#include - -/** - * X-BitFlipping Neighbor - * Neighbor represent different hamming distances,it's fixed by xFlip attribute - */ - -template -class moXBitFlippingNeighbor:public moBackableNeighbor , - public moXChangeNeighbor { -public: - - using moXChangeNeighbor::indices; - using moXChangeNeighbor::xChange; - using moXChangeNeighbor::key; - - /** - *Default Constructor - */ - - moXBitFlippingNeighbor() : - moXChangeNeighbor () { - } - - /** - * Constructor - * @param _xFlip the number of bit to flip - */ - - moXBitFlippingNeighbor(unsigned int _xFlip) : - moXChangeNeighbor (_xFlip) { - } - - /** - * Apply the K-Flip in solution - * @param _solution the solution to move - */ - - virtual void move(EOT& _solution) { - for (unsigned int i = 0; i < xChange; i++) - _solution[indices[i]] = !_solution[indices[i]]; - _solution.invalidate(); - - } - - /** - * apply the K-Flip to restore the solution (use by moFullEvalByModif) - * @param _solution the solution to move back - */ - - virtual void moveBack(EOT& _solution) { - move(_solution); - } - - /** - * Return the class name. - * @return the class name as a std::string - */ - - virtual std::string className() const { - return "moXBitFlippingNeighbor"; - } - -}; - -#endif - diff --git a/trunk/paradiseo-mo/src/neighborhood/moXChangeNeighbor.h b/trunk/paradiseo-mo/src/neighborhood/moXChangeNeighbor.h deleted file mode 100755 index 64ed465bd..000000000 --- a/trunk/paradiseo-mo/src/neighborhood/moXChangeNeighbor.h +++ /dev/null @@ -1,215 +0,0 @@ -/* - - Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010 - - Boufaras Karima, Thé Van Luong - - 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". - - 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 _moXChangeNeighbor_h -#define _moXChangeNeighbor_h - -#include - -/** - * A X-Change Neighbor - * useful in parallel computing, it allows to associate to a neighbor represented by a single index,a set of indices - * to build the neighbor from the solution and the number of positions to change - */ - -template -class moXChangeNeighbor: virtual public moIndexNeighbor { - -public: - - using moIndexNeighbor::key; - - /** - * Default Constructor - */ - - moXChangeNeighbor() : - moIndexNeighbor (),xChange(0) { - indices = NULL; - } - - /** - * Default destructor - */ - - ~moXChangeNeighbor() { - delete[] (indices); - } - - /** - * Constructor - * @param _xChange the number of x-change to do - */ - - moXChangeNeighbor(unsigned int _xChange) { - xChange = _xChange; - indices = new unsigned int[xChange]; - } - - /** - * Copy Constructor - * @param _n the neighbor to copy - */ - - moXChangeNeighbor(const moXChangeNeighbor& _n) : - moIndexNeighbor (_n) { - this->xChange = _n.xChange; - this->indices = new unsigned int[xChange]; - for (unsigned int i = 0; i < xChange; i++) - this->indices[i] = _n.indices[i]; - } - - /** - * Assignment operator - * @param _source the neighbor to assign to this curent neighbor - */ - - virtual moXChangeNeighbor & operator=( - const moXChangeNeighbor & _source) { - moIndexNeighbor::operator=(_source); - this->xChange = _source.xChange; - this->reSizeIndices(xChange); - for (unsigned int i = 0; i < xChange; i++) - this->indices[i] = _source.indices[i]; - return *this; - } - - /** - * Setter to update the i'th index of x-change - * @param _i the index to update - * @param _val the new value to set to the i'th index of x-change - */ - - void setIndice(unsigned int _i, unsigned int _val) { - indices[_i] = _val; - } - - /** - * Get the i'th index of x-change - */ - - unsigned int getIndice(unsigned int _i) { - return indices[_i]; - } - - /** - * Setter to update the set of x-change indexes - * @param _indices the set of new value indexes of the x-change - */ - - void setIndices(unsigned int * _indices) { - for (unsigned int i = 0; i < xChange; i++) { - setIndice(i, _indices[i]); - } - } - - /** - * Setter to fix the xChange - * @param _xChange the number of swap - */ - - void setXChange(unsigned int _xChange) { - xChange = _xChange; - reSizeIndices(_xChange); - } - - /** - * Get the number of swap - */ - - unsigned int getXChange() { - return xChange; - } - - /** - * Resize the indices array of x-change indexes - *@param _xChange the number of x-change - */ - - void reSizeIndices(unsigned int _xChange) { - delete[] (indices); - indices = new unsigned int[_xChange]; - } - - /** - * Return the class name. - * @return the class name as a std::string - */ - - virtual std::string className() const { - return "moXChangeNeighbor"; - } - - /** - * 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 >> xChange; - _is >> key; - for (unsigned int i = 0; i < xChange; i++) - _is >> indices[i]; - fitness(repFit); - } - } - - /** - * Print the Neighbor - */ - - void print() { - std::cout << "["; - for (unsigned int i = 0; i < xChange; i++) - std::cout<< indices[i]<< " "; - std::cout << "] -> " << (*this).fitness() << std::endl; - } - -protected: - - unsigned int * indices; - unsigned int xChange; - -}; - -#endif - diff --git a/trunk/paradiseo-mo/src/neighborhood/moXChangeNeighborhood.h b/trunk/paradiseo-mo/src/neighborhood/moXChangeNeighborhood.h deleted file mode 100755 index 69e9e8673..000000000 --- a/trunk/paradiseo-mo/src/neighborhood/moXChangeNeighborhood.h +++ /dev/null @@ -1,177 +0,0 @@ -/* - - Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010 - - Karima Boufaras, Thé Van Luong - - 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 _moXChangeNeighborhood_h -#define _moXChangeNeighborhood_h - -#include - -/** - * Generalization of exchange and hamming distance based Neighborhood - */ - -template -class moXChangeNeighborhood: public moMappingNeighborhood { - -public: - - /** - * Define type of a solution corresponding to Neighbor - */ - typedef N Neighbor; - typedef typename Neighbor::EOT EOT; - - using moMappingNeighborhood::neighborhoodSize; - using moMappingNeighborhood::currentIndex; - using moMappingNeighborhood::indices; - using moMappingNeighborhood::mapping; - using moMappingNeighborhood::xChange; - using moMappingNeighborhood::mutex; - - /** - * Constructor - * @param _neighborhoodSize the neighborhood size - * @param _xChange the number of x-change positions - */ - - moXChangeNeighborhood(unsigned int _neighborhoodSize, unsigned int _xChange) : - moMappingNeighborhood (_neighborhoodSize, _xChange) { - } - - - /** - * Set the mapping of K-indexes - * @param _size the solution size - */ - - void setMapping(unsigned _size) { - - for (unsigned int i = 0; i < xChange; i++) - indices[i] = i; - - unsigned int id = 0; - bool change = false; - - while (id < neighborhoodSize) { - - while (indices[xChange - 1] < _size) { - - updateMapping(indices, id); - indices[(xChange - 1)]++; - id++; - } - - indices[xChange - 1]--; - - if (id < neighborhoodSize) { - for (int i = xChange - 2; i >= 0; i--) - if (!change) - change = nextIndices(i, _size); - } - - change = false; - } - - } - - /** - * Compute the next combination of mapping indices - * @param _indice compute next combination of indexes from this index - * @param _size the solution size - */ - - bool nextIndices(int _indice, unsigned _size) { - - if (indices[_indice + 1] == _size - xChange + 1 + _indice) { - - if (indices[_indice] + 1 < _size - xChange + 1 + _indice) { - - indices[_indice]++; - unsigned int i = 1; - - while (_indice + i < xChange) { - - indices[_indice + i] = indices[_indice + i - 1] + 1; - i++; - - } - - return true; - - } else { - - return false; - } - - } else { - - indices[_indice + 1]++; - unsigned int i = 2; - - while (_indice + i < xChange) { - - indices[_indice + i] = indices[_indice + i - 1] + 1; - i++; - - } - - return true; - } - - } - - /** - * Setter to fix the number of x-change positions - * @param _xChange the number of x-change - */ - - void setXChange(unsigned int _xChange) { - xChange = _xChange; - } - - /** - * Get the number of x-change - */ - - unsigned int getXChange() { - return xChange; - } - - - /** - * Return the class Name - * @return the class name as a std::string - */ - virtual std::string className() const { - return "moXChangeNeighborhood"; - } - -}; - -#endif diff --git a/trunk/paradiseo-mo/src/neighborhood/moXSwapNeighbor.h b/trunk/paradiseo-mo/src/neighborhood/moXSwapNeighbor.h deleted file mode 100755 index 027f1651f..000000000 --- a/trunk/paradiseo-mo/src/neighborhood/moXSwapNeighbor.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - - Copyright (C) DOLPHIN Project-Team, INRIA Lille - Nord Europe, 2006-2010 - - Boufaras Karima, Thé Van Luong - - 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 _moXSwapNeighbor_h -#define _moXSwapNeighbor_h - -#include -#include - -/** - * A X-Swap Neighbor - */ - -template -class moXSwapNeighbor: public moBackableNeighbor , - public moXChangeNeighbor { - -public: - - using moXChangeNeighbor::indices; - using moXChangeNeighbor::xChange; - using moXChangeNeighbor::key; - - /** - *Default Constructor - */ - - moXSwapNeighbor() : - moXChangeNeighbor () { - } - - /** - * Constructor - * @param _xSwap the number of swap to do - */ - - moXSwapNeighbor(unsigned int _xSwap) : - moXChangeNeighbor (_xSwap) { - } - - /** - * Apply the K-swap - * @param _solution the solution to move - */ - virtual void move(EOT& _solution) { - EOT tmp(1); - for (unsigned int i = 0; i < xChange-1; i++) { - tmp[0] = _solution[indices[i]]; - _solution[indices[i]] = _solution[indices[i + 1]]; - _solution[indices[i + 1]] = tmp[0]; - } - _solution.invalidate(); - - } - - /** - * apply the K-swap to restore the solution (use by moFullEvalByModif) - * @param _solution the solution to move back - */ - virtual void moveBack(EOT& _solution) { - EOT tmp(1); - for (int i = xChange-1; i > 0; i--) { - tmp[0] = _solution[indices[i]]; - _solution[indices[i]] = _solution[indices[i - 1]]; - _solution[indices[i - 1]] = tmp[0]; - } - _solution.invalidate(); - } - - /** - * Return the class name. - * @return the class name as a std::string - */ - virtual std::string className() const { - return "moXSwapNeighbor"; - } - -}; - -#endif -