Merge branch 'master' of git://scm.gforge.inria.fr/paradiseo/paradiseo
This commit is contained in:
commit
b7426894b0
27 changed files with 617 additions and 67 deletions
|
|
@ -60,7 +60,7 @@ public:
|
|||
*/
|
||||
moRandomWalk(Neighborhood& _neighborhood, eoEvalFunc<EOT>& _fullEval, moEval<Neighbor>& _eval, unsigned _nbStepMax):
|
||||
moLocalSearch<Neighbor>(explorer, iterCont, _fullEval),
|
||||
iterCont(_nbStepMax),
|
||||
iterCont(_nbStepMax, false),
|
||||
explorer(_neighborhood, _eval)
|
||||
{}
|
||||
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public:
|
|||
* Constructor
|
||||
* @param _param the parameter of type double to save in the vector
|
||||
*/
|
||||
moVectorMonitor(eoValueParam<double> & _param) : doubleParam(&_param), intParam(NULL), eotParam(NULL)
|
||||
moVectorMonitor(eoValueParam<double> & _param) : doubleParam(&_param), intParam(NULL), intLongParam(NULL), eotParam(NULL)
|
||||
{
|
||||
// precision of the output by default
|
||||
precisionOutput = std::cout.precision();
|
||||
|
|
@ -63,7 +63,17 @@ public:
|
|||
* Default Constructor
|
||||
* @param _param the parameter of type unsigned int to save in the vector
|
||||
*/
|
||||
moVectorMonitor(eoValueParam<unsigned int> & _param) : doubleParam(NULL), intParam(&_param), eotParam(NULL)
|
||||
moVectorMonitor(eoValueParam<unsigned int> & _param) : doubleParam(NULL), intParam(&_param), intLongParam(NULL), eotParam(NULL)
|
||||
{
|
||||
// precision of the output by default
|
||||
precisionOutput = std::cout.precision();
|
||||
}
|
||||
|
||||
/**
|
||||
* Default Constructor
|
||||
* @param _param the parameter of type unsigned int to save in the vector
|
||||
*/
|
||||
moVectorMonitor(eoValueParam<unsigned long> & _param) : doubleParam(NULL), intParam(NULL), intLongParam(&_param), eotParam(NULL)
|
||||
{
|
||||
// precision of the output by default
|
||||
precisionOutput = std::cout.precision();
|
||||
|
|
@ -73,7 +83,7 @@ public:
|
|||
* Default Constructor
|
||||
* @param _param the parameter of type EOT to save in the vector
|
||||
*/
|
||||
moVectorMonitor(eoValueParam<EOT> & _param) : doubleParam(NULL), intParam(NULL), eotParam(&_param)
|
||||
moVectorMonitor(eoValueParam<EOT> & _param) : doubleParam(NULL), intParam(NULL), intLongParam(NULL), eotParam(&_param)
|
||||
{
|
||||
// precision of the output by default
|
||||
precisionOutput = std::cout.precision();
|
||||
|
|
@ -84,7 +94,7 @@ public:
|
|||
* @param _param the parameter of type eoScalarFitness to save in the vector
|
||||
*/
|
||||
template <class ScalarType, class Compare>
|
||||
moVectorMonitor(eoValueParam<eoScalarFitness<ScalarType, Compare> > & _param) : doubleParam( & (eoValueParam<double>&)_param), intParam(NULL), eotParam(NULL)
|
||||
moVectorMonitor(eoValueParam<eoScalarFitness<ScalarType, Compare> > & _param) : doubleParam( & (eoValueParam<double>&)_param), intParam(NULL), intLongParam(NULL), eotParam(NULL)
|
||||
{
|
||||
// precision of the output by default
|
||||
precisionOutput = std::cout.precision();
|
||||
|
|
@ -95,7 +105,7 @@ public:
|
|||
* @param _param unvalid Parameter
|
||||
*/
|
||||
template <class T>
|
||||
moVectorMonitor(eoValueParam<T> & _param) : doubleParam(NULL), intParam(NULL), eotParam(NULL)
|
||||
moVectorMonitor(eoValueParam<T> & _param) : doubleParam(NULL), intParam(NULL), intLongParam(NULL), eotParam(NULL)
|
||||
{
|
||||
std::cerr << "Sorry the type can not be in a vector of moVectorMonitor" << std::endl;
|
||||
}
|
||||
|
|
@ -120,8 +130,11 @@ public:
|
|||
else
|
||||
if (intParam != NULL)
|
||||
valueVec.push_back((double) intParam->value());
|
||||
else
|
||||
eotVec.push_back(eotParam->value());
|
||||
else
|
||||
if (intLongParam != NULL)
|
||||
valueVec.push_back((double) intLongParam->value());
|
||||
else
|
||||
eotVec.push_back(eotParam->value());
|
||||
return *this ;
|
||||
}
|
||||
|
||||
|
|
@ -227,6 +240,7 @@ public:
|
|||
protected:
|
||||
eoValueParam<double> * doubleParam ;
|
||||
eoValueParam<unsigned int> * intParam ;
|
||||
eoValueParam<unsigned long> * intLongParam ;
|
||||
eoValueParam<EOT> * eotParam ;
|
||||
|
||||
std::vector<double> valueVec;
|
||||
|
|
|
|||
|
|
@ -30,13 +30,19 @@ Contact: paradiseo-help@lists.gforge.inria.fr
|
|||
#ifndef _moIndexedVectorTabuList_h
|
||||
#define _moIndexedVectorTabuList_h
|
||||
|
||||
#include <utils/eoRndGenerators.h>
|
||||
#include <memory/moTabuList.h>
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
|
||||
/**
|
||||
*
|
||||
* Tabu List of indexed neighbors save in a vector
|
||||
* each neighbor can not used during howlong iterations
|
||||
*
|
||||
* The tabu tenure could be random between two bounds
|
||||
* such as in robust tabu search
|
||||
*
|
||||
*/
|
||||
template<class Neighbor >
|
||||
class moIndexedVectorTabuList : public moTabuList<Neighbor>
|
||||
|
|
@ -49,7 +55,17 @@ public:
|
|||
* @param _maxSize maximum size of the tabu list
|
||||
* @param _howlong how many iteration a move is tabu
|
||||
*/
|
||||
moIndexedVectorTabuList(unsigned int _maxSize, unsigned int _howlong) : maxSize(_maxSize), howlong(_howlong) {
|
||||
moIndexedVectorTabuList(unsigned int _maxSize, unsigned int _howlong) : maxSize(_maxSize), howlong(_howlong), robust(false) {
|
||||
tabuList.resize(_maxSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param _maxSize maximum size of the tabu list
|
||||
* @param _howlongMin minimal number of iterations during a move is tabu
|
||||
* @param _howlongMax maximal number of iterations during a move is tabu
|
||||
*/
|
||||
moIndexedVectorTabuList(unsigned int _maxSize, unsigned int _howlongMin, unsigned int _howlongMax) : maxSize(_maxSize), howlongMin(_howlongMin), howlongMax(_howlongMax), robust(true) {
|
||||
tabuList.resize(_maxSize);
|
||||
}
|
||||
|
||||
|
|
@ -68,8 +84,13 @@ public:
|
|||
* @param _neighbor the current neighbor
|
||||
*/
|
||||
virtual void add(EOT & _sol, Neighbor & _neighbor) {
|
||||
if (_neighbor.index() < maxSize)
|
||||
if (_neighbor.index() < maxSize) {
|
||||
if (robust)
|
||||
// random value between min and max
|
||||
howlong = howlongMin + rng.random(howlongMax - howlongMin);
|
||||
|
||||
tabuList[_neighbor.index()] = howlong;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -115,7 +136,12 @@ protected:
|
|||
unsigned int maxSize;
|
||||
//how many iteration a move is tabu
|
||||
unsigned int howlong;
|
||||
|
||||
// Minimum number of iterations during a move is tabu
|
||||
unsigned int howlongMin;
|
||||
// Maximum number of iterations during a move is tabu
|
||||
unsigned int howlongMax;
|
||||
// true: robust tabu search way
|
||||
bool robust;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -190,6 +190,7 @@
|
|||
//#include <problems/eval/moUBQPSimpleIncrEval.h>
|
||||
//#include <problems/eval/moUBQPdoubleIncrEvaluation.h>
|
||||
//#include <problems/eval/moUBQPBitsIncrEval.h>
|
||||
#include <problems/eval/moNKlandscapesIncrEval.h>
|
||||
|
||||
|
||||
#include <sampling/moAdaptiveWalkSampling.h>
|
||||
|
|
|
|||
|
|
@ -109,9 +109,9 @@ public:
|
|||
* @param _solution solution from which the neighborhood is visited
|
||||
* @param _key index of the IndexNeighbor
|
||||
*/
|
||||
virtual void index(EOT & _solution, unsigned int _key) {
|
||||
key = _key;
|
||||
}
|
||||
virtual void index(EOT & _solution, unsigned int _key) {
|
||||
key = _key;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param _neighbor a neighbor
|
||||
|
|
@ -121,6 +121,22 @@ public:
|
|||
return (key == _neighbor.index());
|
||||
}
|
||||
|
||||
/**
|
||||
* Write object with its index
|
||||
* @param _os A std::ostream.
|
||||
*/
|
||||
virtual void printOn(std::ostream& _os) const {
|
||||
if (this->invalid()) {
|
||||
_os << "INVALID ";
|
||||
}
|
||||
else
|
||||
{
|
||||
_os << this->fitness() << ' ';
|
||||
}
|
||||
|
||||
_os << key ;
|
||||
}
|
||||
|
||||
protected:
|
||||
// key allowing to describe the neighbor
|
||||
unsigned int key;
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ public:
|
|||
return "moRndWithoutReplNeighborhood";
|
||||
}
|
||||
|
||||
private:
|
||||
protected:
|
||||
unsigned int maxIndex;
|
||||
std::vector<unsigned int> indexVector;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -50,7 +50,16 @@ public:
|
|||
* @param _fullEval a full evaluation function
|
||||
* @param _nbPerturbation number of operator executions for perturbation
|
||||
*/
|
||||
moMonOpPerturb(eoMonOp<EOT>& _monOp, eoEvalFunc<EOT>& _fullEval, unsigned int _nbPerturbation = 1):monOp(_monOp), fullEval(_fullEval), nbPerturbation(_nbPerturbation) {}
|
||||
moMonOpPerturb(eoMonOp<EOT>& _monOp, eoEvalFunc<EOT>& _fullEval, unsigned int _nbPerturbation = 1):monOp(_monOp), fullEval(_fullEval), nbPerturbation(_nbPerturbation), rndPerturb(false) {}
|
||||
|
||||
/**
|
||||
* Constructor with random value at each iteration of the number of perturbation moves
|
||||
* @param _monOp an eoMonOp (pertubation operator)
|
||||
* @param _fullEval a full evaluation function
|
||||
* @param _nbPerturbationMin minimum number of operator executions for perturbation
|
||||
* @param _nbPerturbationMax maximum number of operator executions for perturbation
|
||||
*/
|
||||
moMonOpPerturb(eoMonOp<EOT>& _monOp, eoEvalFunc<EOT>& _fullEval, unsigned int _nbPerturbationMin, unsigned int _nbPerturbationMax):monOp(_monOp), fullEval(_fullEval), nbPerturbationMin(_nbPerturbationMin), nbPerturbationMax(_nbPerturbationMax), rndPerturb(true) { }
|
||||
|
||||
/**
|
||||
* Apply monOp on the solution
|
||||
|
|
@ -60,6 +69,9 @@ public:
|
|||
bool operator()(EOT& _solution) {
|
||||
bool res = false;
|
||||
|
||||
if (rndPerturb)
|
||||
nbPerturbation = nbPerturbationMin + rng.random(nbPerturbationMax - nbPerturbationMin);
|
||||
|
||||
for(unsigned int i = 0; i < nbPerturbation; i++)
|
||||
res = monOp(_solution) || res;
|
||||
|
||||
|
|
@ -74,6 +86,9 @@ private:
|
|||
eoMonOp<EOT>& monOp;
|
||||
eoEvalFunc<EOT>& fullEval;
|
||||
unsigned int nbPerturbation;
|
||||
unsigned int nbPerturbationMin;
|
||||
unsigned int nbPerturbationMax;
|
||||
bool rndPerturb;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
131
mo/src/problems/eval/moNKlandscapesIncrEval.h
Normal file
131
mo/src/problems/eval/moNKlandscapesIncrEval.h
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
/*
|
||||
<moNKlandscapesIncrEval.h>
|
||||
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 _moNKlandscapesIncrEval_H
|
||||
#define _moNKlandscapesIncrEval_H
|
||||
|
||||
#include <eval/moEval.h>
|
||||
#include <eval/nkLandscapesEval.h>
|
||||
#include <vector>
|
||||
|
||||
/**
|
||||
*
|
||||
* Incremental evaluation function (1 bit flip, Hamming distance 1)
|
||||
* for the NK-landscapes problem
|
||||
*
|
||||
*
|
||||
*/
|
||||
template< class Neighbor >
|
||||
class moNKlandscapesIncrEval : public moEval<Neighbor>
|
||||
{
|
||||
public:
|
||||
typedef typename Neighbor::EOT EOT;
|
||||
|
||||
/*
|
||||
* Constructor
|
||||
*
|
||||
* @param _nk fitness function of the NK landscapes
|
||||
*/
|
||||
moNKlandscapesIncrEval(nkLandscapesEval<EOT> & _nk) : nk(_nk) {
|
||||
inverseLinks = new std::vector<unsigned>[ nk.N ];
|
||||
|
||||
// compute the contributions which are modified by flipping one bit
|
||||
for(unsigned int i = 0; i < nk.N; i++)
|
||||
for(unsigned int j = 0; j < nk.K + 1; j++) {
|
||||
inverseLinks[ nk.links[i][j] ].push_back(i);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Destructor
|
||||
*
|
||||
*/
|
||||
~moNKlandscapesIncrEval() {
|
||||
delete [] inverseLinks;
|
||||
}
|
||||
|
||||
/*
|
||||
* incremental evaluation of the neighbor for the oneMax problem
|
||||
* @param _solution the solution to move (bit string)
|
||||
* @param _neighbor the neighbor to consider (of type moBitNeigbor)
|
||||
*/
|
||||
virtual void operator()(EOT & _solution, Neighbor & _neighbor) {
|
||||
unsigned bit = _neighbor.index() ;
|
||||
unsigned sig, nonSig;
|
||||
unsigned i;
|
||||
|
||||
double delta = 0 ;
|
||||
|
||||
for(unsigned int j = 0; j < inverseLinks[bit].size(); j++) {
|
||||
i = inverseLinks[bit][j];
|
||||
sigma(_solution, i, bit, sig, nonSig);
|
||||
delta += nk.tables[i][nonSig] - nk.tables[i][sig];
|
||||
}
|
||||
|
||||
_neighbor.fitness(_solution.fitness() + delta / (double) nk.N);
|
||||
}
|
||||
|
||||
private:
|
||||
// Original nk fitness function
|
||||
nkLandscapesEval<EOT> & nk;
|
||||
|
||||
// give the list of contributions which are modified when the corresponding bit is flipped
|
||||
std::vector<unsigned> * inverseLinks;
|
||||
|
||||
/**
|
||||
* Compute the mask of the linked bits, and the mask when the bit is flipped
|
||||
*
|
||||
* @param _solution the solution to evaluate
|
||||
* @param i the bit of the contribution
|
||||
* @param _bit the bit to flip
|
||||
* @param sig value of the mask of contribution i
|
||||
* @param nonSig value of the mask of contribution i when the bit _bit is flipped
|
||||
*/
|
||||
void sigma(EOT & _solution, int i, unsigned _bit, unsigned & sig, unsigned & nonSig) {
|
||||
sig = 0;
|
||||
nonSig = 0;
|
||||
|
||||
unsigned int n = 1;
|
||||
for(int j = 0; j < nk.K + 1; j++) {
|
||||
if (_solution[ nk.links[i][j] ] == 1)
|
||||
sig = sig | n;
|
||||
|
||||
if (nk.links[i][j] == _bit)
|
||||
nonSig = n;
|
||||
|
||||
n = n << 1;
|
||||
}
|
||||
|
||||
nonSig = sig ^ nonSig;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
|
@ -46,6 +46,33 @@ public:
|
|||
using moIndexNeighbor<EOT>::index;
|
||||
|
||||
/**
|
||||
* Default Constructor
|
||||
*/
|
||||
moIndexedSwapNeighbor() : moIndexNeighbor<EOT, Fitness>() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy Constructor
|
||||
* @param _n the neighbor to copy
|
||||
*/
|
||||
moIndexedSwapNeighbor(const moIndexedSwapNeighbor<EOT, Fitness> & _n) : moIndexNeighbor<EOT, Fitness>(_n)
|
||||
{
|
||||
indices.first = _n.first();
|
||||
indices.second = _n.second();
|
||||
}
|
||||
|
||||
/**
|
||||
* Assignment operator
|
||||
* @param _source the source neighbor
|
||||
*/
|
||||
moIndexedSwapNeighbor<EOT, Fitness> & operator=(const moIndexedSwapNeighbor<EOT, Fitness> & _source) {
|
||||
moIndexNeighbor<EOT, Fitness>::operator=(_source);
|
||||
indices.first = _source.first();
|
||||
indices.second = _source.second();
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the swap
|
||||
* @param _solution the solution to move
|
||||
*/
|
||||
|
|
@ -111,7 +138,7 @@ public:
|
|||
* Getter of the firt location
|
||||
* @return first indice
|
||||
*/
|
||||
unsigned int first() {
|
||||
unsigned int first() const {
|
||||
return indices.first;
|
||||
}
|
||||
|
||||
|
|
@ -119,11 +146,11 @@ public:
|
|||
* Getter of the second location
|
||||
* @return second indice
|
||||
*/
|
||||
unsigned int second() {
|
||||
unsigned int second() const {
|
||||
return indices.second;
|
||||
}
|
||||
|
||||
private:
|
||||
protected:
|
||||
std::pair<unsigned int, unsigned int> indices;
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ set (TEST_LIST
|
|||
t-moOrderNeighborhood
|
||||
t-moFullEvalByCopy
|
||||
t-moFullEvalByModif
|
||||
t-moNKlandscapesIncrEval
|
||||
t-moNeighborComparator
|
||||
t-moSolNeighborComparator
|
||||
t-moTrueContinuator
|
||||
|
|
|
|||
89
mo/test/t-moNKlandscapesIncrEval.cpp
Normal file
89
mo/test/t-moNKlandscapesIncrEval.cpp
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
/*
|
||||
<t-moNKlandscapesIncrEval.cpp>
|
||||
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 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
|
||||
*/
|
||||
|
||||
#include <ga/eoBit.h>
|
||||
#include <eoInit.h>
|
||||
#include <problems/bitString/moBitNeighbor.h>
|
||||
#include <eval/nkLandscapesEval.h>
|
||||
#include <problems/eval/moNKlandscapesIncrEval.h>
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cassert>
|
||||
|
||||
typedef eoBit<double> Solution;
|
||||
typedef moBitNeighbor<double> Neighbor ;
|
||||
|
||||
int main() {
|
||||
|
||||
std::cout << "[t-moNKlandscapesIncrEval] => START" << std::endl;
|
||||
|
||||
// nk fitness function
|
||||
int N = 18;
|
||||
int K = 4;
|
||||
rng.reseed(0); // random seed = 0
|
||||
|
||||
nkLandscapesEval<Solution> eval(N, K);
|
||||
|
||||
// init
|
||||
eoUniformGenerator<bool> uGen;
|
||||
eoInitFixedLength<Solution> init(N, uGen);
|
||||
|
||||
// verif constructor
|
||||
moNKlandscapesIncrEval<Neighbor> neighborEval(eval);
|
||||
|
||||
Solution solution;
|
||||
|
||||
// random initialization
|
||||
rng.reseed(1); // random seed = 1
|
||||
|
||||
init(solution);
|
||||
|
||||
// evaluation
|
||||
eval(solution);
|
||||
|
||||
Neighbor n ;
|
||||
n.index(0);
|
||||
|
||||
neighborEval(solution, n);
|
||||
|
||||
n.move(solution);
|
||||
eval(solution);
|
||||
|
||||
// verif incremental eval
|
||||
assert(solution.fitness() == n.fitness());
|
||||
|
||||
std::cout << "[t-moNKlandscapesIncrEval] => OK" << std::endl;
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
|
@ -85,6 +85,7 @@ void main_function(int argc, char **argv)
|
|||
string str_out = "out.dat"; // default value
|
||||
eoValueParam<string> outParam(str_out.c_str(), "out", "Output file of the sampling", 'o');
|
||||
parser.processParam(outParam, "Persistence" );
|
||||
str_out = outParam.value();
|
||||
|
||||
// the name of the "status" file where all actual parameter values will be saved
|
||||
string str_status = parser.ProgramName() + ".status"; // default value
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@ void main_function(int argc, char **argv)
|
|||
string str_out = "out.dat"; // default value
|
||||
eoValueParam<string> outParam(str_out.c_str(), "out", "Output file of the sampling", 'o');
|
||||
parser.processParam(outParam, "Persistence" );
|
||||
str_out = outParam.value();
|
||||
|
||||
// the name of the "status" file where all actual parameter values will be saved
|
||||
string str_status = parser.ProgramName() + ".status"; // default value
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@ void main_function(int argc, char **argv)
|
|||
string str_out = "out.dat"; // default value
|
||||
eoValueParam<string> outParam(str_out.c_str(), "out", "Output file of the sampling", 'o');
|
||||
parser.processParam(outParam, "Persistence" );
|
||||
str_out = outParam.value();
|
||||
|
||||
// the name of the "status" file where all actual parameter values will be saved
|
||||
string str_status = parser.ProgramName() + ".status"; // default value
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue