diff --git a/branches/ParadisEO-GPU/paradiseo-gpu/src/neighborhood/moMappingNeighborhood.h b/branches/ParadisEO-GPU/paradiseo-gpu/src/neighborhood/moMappingNeighborhood.h deleted file mode 100755 index 07cff5e5e..000000000 --- a/branches/ParadisEO-GPU/paradiseo-gpu/src/neighborhood/moMappingNeighborhood.h +++ /dev/null @@ -1,163 +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 _moMappingNeighborhood_h -#define _moMappingNeighborhood_h - -#include - -/** - * Define a Mapping Neighborhood: - * - * This neighborhood should manipulate a moXChangeNeighbor - * It helps to associate to identified neighbor by one index a set of correspondent indexes - */ - -template -class moMappingNeighborhood: public moOrderNeighborhood { - -public: - - /** - * Define type of a solution corresponding to Neighbor - */ - - typedef N Neighbor; - typedef typename Neighbor::EOT EOT; - - using moOrderNeighborhood::neighborhoodSize; - using moOrderNeighborhood::currentIndex; - - /** - * Constructor - * @param _neighborhoodSize the neighborhood size - * @param _xChange the number of positions to exchange - */ - - moMappingNeighborhood(unsigned int _neighborhoodSize, unsigned int _xChange) : - moOrderNeighborhood (_neighborhoodSize), xChange(_xChange) { - - mutex = false; - indices = new unsigned int[xChange]; - mapping = new unsigned int[neighborhoodSize * xChange]; - - } - - /** - * Destructor - */ - - ~moMappingNeighborhood() { - - delete[] (indices); - delete[] (mapping); - } - - /** - * Initialization of the neighborhood - * @param _solution the solution to explore - * @param _current the first neighbor - */ - - virtual void init(EOT& _solution, Neighbor& _current) { - - moOrderNeighborhood::init(_solution, _current); - //Compute the mapping only for the first init - if (!mutex) { - setMapping(_solution.size()); - mutex = true; - } - //get the mapping correspondent to the currentIndex - getMapping(currentIndex); - if (!(_current.getXChange() == xChange)) - _current.setXChange(xChange); - //associate to this neighbor a set of correspondent indexes - _current.setIndices(indices); - } - - /** - * Give the next neighbor - * @param _solution the solution to explore - * @param _current the next neighbor - */ - - virtual void next(EOT& _solution, Neighbor& _current) { - - moOrderNeighborhood::next(_solution, _current); - getMapping(currentIndex); - _current.setIndices(indices); - - } - - /** - * Set the mapping of K-indexes - * @param _size the size of the solution - */ - - virtual void setMapping(unsigned _size) =0; - - /** - * Associate mapping of current index to a set of indexes - * _currentIndex the index to map with a set of indexes - */ - - virtual void getMapping(unsigned int _currentIndex) { - for (unsigned int i = 0; i < xChange; i++) { - indices[i] = mapping[_currentIndex + i * neighborhoodSize]; - } - } - - /** - * update mapping with combination of indexes corresponding to the currentIndex - * @param _indices the set of current combination of indexes - * @param _currentIndex the current index corresponding to the current neighbor - */ - - virtual void updateMapping(unsigned int* _indices, int _currentIndex) { - for (unsigned k = 0; k < xChange; k++) - mapping[_currentIndex + k * neighborhoodSize] = _indices[k]; - } - - /** - * Return the class Name - * @return the class name as a std::string - */ - virtual std::string className() const { - return "moMappingNeighborhood"; - } - -protected: - - unsigned int * indices; - unsigned int * mapping; - unsigned int xChange; - bool mutex; -}; - -#endif diff --git a/branches/ParadisEO-GPU/paradiseo-gpu/src/neighborhood/moXBitFlippingNeighbor.h b/branches/ParadisEO-GPU/paradiseo-gpu/src/neighborhood/moXBitFlippingNeighbor.h deleted file mode 100755 index cf811795e..000000000 --- a/branches/ParadisEO-GPU/paradiseo-gpu/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/branches/ParadisEO-GPU/paradiseo-gpu/src/neighborhood/moXChangeNeighborhood.h b/branches/ParadisEO-GPU/paradiseo-gpu/src/neighborhood/moXChangeNeighborhood.h deleted file mode 100755 index 69e9e8673..000000000 --- a/branches/ParadisEO-GPU/paradiseo-gpu/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/branches/ParadisEO-GPU/paradiseo-gpu/src/neighborhood/moXSwapNeighbor.h b/branches/ParadisEO-GPU/paradiseo-gpu/src/neighborhood/moXSwapNeighbor.h deleted file mode 100755 index a2aacaf86..000000000 --- a/branches/ParadisEO-GPU/paradiseo-gpu/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 moGPUXChangeNeighbor { - -public: - - using moGPUXChangeNeighbor::indices; - using moGPUXChangeNeighbor::xChange; - using moGPUXChangeNeighbor::key; - - /** - *Default Constructor - */ - - moXSwapNeighbor() : - moGPUXChangeNeighbor () { - } - - /** - * Constructor - * @param _xSwap the number of swap to do - */ - - moXSwapNeighbor(unsigned int _xSwap) : - moGPUXChangeNeighbor (_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 -